<?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>116502</bug_id>
          
          <creation_ts>2013-05-20 19:30:45 -0700</creation_ts>
          <short_desc>Optimized querySelector(All) when selector contains #id</short_desc>
          <delta_ts>2014-03-01 14:05:11 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>891521</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-20 19:30:45 -0700</bug_when>
    <thetext>Consider implementing the same optimization as https://chromium.googlesource.com/chromium/blink/+/1cd83d3588973a02ab15d94b1b05a28620853624.

There existed an optimization that did an element lookup for an id if the
leftmost part of the selector was an id selector. Without this change, these
queries would do an id lookup:

querySelector(&quot;#id&quot;), querySelector(&quot;#id.class&quot;)

while these wouldn&apos;t:

querySelector(&quot;.class#id&quot;), querySelector(&quot;[name=x]#id&quot;)

This change modifies the element lookup to include the latter two.

More importantly, it also extends the optimization for id selectors to limit
traversal of the dom-tree to the sub-tree rooted at the element with an id
matching the rightmost id selector in the whole selector. For id selectors
appearing left of adjacent combinators, the traversal needs to be rooted at
the parent of the element with the given id.

Examples:

querySelector(&quot;#id span&quot;) - traversal from the id element.
querySelector(&quot;#id + div span&quot;) - traversal from the parent of the id element.

This fix should make this:

querySelector(&quot;#id span&quot;)

as fast as:

getElementById(&quot;id&quot;).querySelector(&quot;span&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983800</commentid>
    <comment_count>1</comment_count>
      <attachid>225028</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-23 23:22:09 -0800</bug_when>
    <thetext>Created attachment 225028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984075</commentid>
    <comment_count>2</comment_count>
      <attachid>225028</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-24 14:40:05 -0800</bug_when>
    <thetext>Comment on attachment 225028
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:13
&gt; +        cache, and start matching the childre from there.

Typo, children.

&gt; Source/WebCore/dom/SelectorQuery.cpp:246
&gt; +            if (LIKELY(!rootNode.treeScope().containsMultipleElementsWithId(idToMatch))) {
&gt; +                if (ContainerNode* searchRoot = rootNode.treeScope().getElementById(idToMatch)) {

It would be more efficient to do these two checks in opposite order.

&gt; Source/WebCore/dom/SelectorQuery.cpp:417
&gt; +        CompiledSingleWithRootFilterCase:

Indentation is off here.

&gt; Source/WebCore/dom/SelectorQuery.h:49
&gt; -    void initialize(const CSSSelectorList&amp;);
&gt; +    SelectorDataList(const CSSSelectorList&amp;);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985951</commentid>
    <comment_count>3</comment_count>
      <attachid>225557</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-01 11:39:21 -0800</bug_when>
    <thetext>Created attachment 225557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985953</commentid>
    <comment_count>4</comment_count>
      <attachid>225558</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-01 12:04:11 -0800</bug_when>
    <thetext>Created attachment 225558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985975</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-01 14:05:11 -0800</bug_when>
    <thetext>Committed r164924: &lt;http://trac.webkit.org/changeset/164924&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225028</attachid>
            <date>2014-02-23 23:22:09 -0800</date>
            <delta_ts>2014-03-01 11:39:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116502-20140223232208.patch</filename>
            <type>text/plain</type>
            <size>32425</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU3YTA3YWZlYTQ1YjI5
NGIzZGE5NGUwZWI0ZWQ5NjFjYzBiNWExNC4uNDhhYzgxZmYwZDM2ODliOWY5YjdlY2NlMjY1YTll
NDg2ZjcyZWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE0LTAyLTIzICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZWQg
cXVlcnlTZWxlY3RvcihBbGwpIHdoZW4gc2VsZWN0b3IgY29udGFpbnMgI2lkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3NlbGVjdG9y
cy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy5odG1sCisKKyAgICAgICAgVGhlIGlkZWEgb2Yg
dGhpcyBwYXRjaCBpcyB0byBwZXJmb3JtIHF1ZXJ5U2VsZWN0b3Igb24gYSBzdWJ0cmVlCisgICAg
ICAgIHJvb3RlZCBhdCB0aGUgbGFzdCBlbGVtZW50IHdpdGggI2lkIG1hdGNoaW5nLiBGb3IgZXhh
bXBsZSwgaWYgd2UgaGF2ZSB0aGUgc2VsZWN0b3IKKyAgICAgICAgIiNmb29iYXIgZGl2IGEiLCB3
ZSBzdGFydCBieSBsb29raW5nIGZvciB0aGUgZWxlbWVudCB3aXRoIElEIGZvb2JhciBpbiB0aGUg
VHJlZVNjb3BlCisgICAgICAgIGNhY2hlLCBhbmQgc3RhcnQgbWF0Y2hpbmcgdGhlIGNoaWxkcmUg
ZnJvbSB0aGVyZS4KKworICAgICAgICBUaGUgaWRlYSBjb21lcyBmcm9tIFJ1bmUgZm9yCisgICAg
ICAgIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9ibGluay8rLzFj
ZDgzZDM1ODg5NzNhMDJhYjE1ZDk0YjFiMDVhMjg2MjA4NTM2MjQKKyAgICAgICAgYnV0IHRoZSBj
b2RlIGFzIGRpdmVyZ2VkIHRvbyBtdWNoIHNvIGl0IGhhZCB0byBiZSByZWltcGxlbWVudGVkIHNw
ZWNpZmljYWxseSBmb3IgV2ViS2l0LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6OkNTU1NlbGVjdG9yTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JM
aXN0Ojp+Q1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjp3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QpOgor
ICAgICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2lu
Z2xlVGFnTmFtZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2luZ2xlQ2xhc3NOYW1l
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZElkTWF0Y2hpbmdUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsdGVyUm9vdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JE
YXRhTGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
clF1ZXJ5Q2FjaGU6OmFkZCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YTo6U2VsZWN0b3JEYXRh
KToKKwogMjAxNC0wMi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1YnBpeGVsIHJlbmRlcmluZzogRml4IGJsZWVkIGF2b2lkYW5jZSBzdWJwaXhlbCBjYWxj
dWxhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggYTY3NWQx
YTk5MjdiZTI0ODNlZWVhYTFjMGRiZTgwNjBhNGM1Nzc0Zi4uY2IzN2Q0Yjc5MTljYjI2YzVlOTQ2
MDUzNDFiOWI3YjUzNjFlNmVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTMyLDExICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NT
U2VsZWN0b3JMaXN0Ojp+Q1NTU2VsZWN0b3JMaXN0KCkKLXsKLSAgICBkZWxldGVTZWxlY3RvcnMo
KTsKLX0KLQogQ1NTU2VsZWN0b3JMaXN0OjpDU1NTZWxlY3Rvckxpc3QoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0JiBvdGhlcikKIHsKICAgICB1bnNpZ25lZCBvdGhlckNvbXBvbmVudENvdW50ID0gb3Ro
ZXIuY29tcG9uZW50Q291bnQoKTsKQEAgLTQ1LDExICs0MCwxMCBAQCBDU1NTZWxlY3Rvckxpc3Q6
OkNTU1NlbGVjdG9yTGlzdChjb25zdCBDU1NTZWxlY3Rvckxpc3QmIG90aGVyKQogICAgICAgICBu
ZXcgKE5vdE51bGwsICZtX3NlbGVjdG9yQXJyYXlbaV0pIENTU1NlbGVjdG9yKG90aGVyLm1fc2Vs
ZWN0b3JBcnJheVtpXSk7CiB9CiAKLXZvaWQgQ1NTU2VsZWN0b3JMaXN0OjphZG9wdChDU1NTZWxl
Y3Rvckxpc3QmIGxpc3QpCitDU1NTZWxlY3Rvckxpc3Q6OkNTU1NlbGVjdG9yTGlzdChDU1NTZWxl
Y3Rvckxpc3QmJiBvdGhlcikKKyAgICA6IG1fc2VsZWN0b3JBcnJheShvdGhlci5tX3NlbGVjdG9y
QXJyYXkpCiB7Ci0gICAgZGVsZXRlU2VsZWN0b3JzKCk7Ci0gICAgbV9zZWxlY3RvckFycmF5ID0g
bGlzdC5tX3NlbGVjdG9yQXJyYXk7Ci0gICAgbGlzdC5tX3NlbGVjdG9yQXJyYXkgPSAwOworICAg
IG90aGVyLm1fc2VsZWN0b3JBcnJheSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3JM
aXN0OjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+PiYgc2VsZWN0b3JWZWN0b3IpCkBAIC05Nyw2ICs5MSwxNCBAQCB1bnNpZ25lZCBD
U1NTZWxlY3Rvckxpc3Q6OmNvbXBvbmVudENvdW50KCkgY29uc3QKICAgICByZXR1cm4gKGN1cnJl
bnQgLSBtX3NlbGVjdG9yQXJyYXkpICsgMTsKIH0KIAorQ1NTU2VsZWN0b3JMaXN0JiBDU1NTZWxl
Y3Rvckxpc3Q6Om9wZXJhdG9yPShDU1NTZWxlY3Rvckxpc3QmJiBvdGhlcikKK3sKKyAgICBkZWxl
dGVTZWxlY3RvcnMoKTsKKyAgICBtX3NlbGVjdG9yQXJyYXkgPSBvdGhlci5tX3NlbGVjdG9yQXJy
YXk7CisgICAgb3RoZXIubV9zZWxlY3RvckFycmF5ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKIHZvaWQgQ1NTU2VsZWN0b3JMaXN0OjpkZWxldGVTZWxlY3RvcnMoKQogewogICAg
IGlmICghbV9zZWxlY3RvckFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmlu
ZGV4IDM3YmI0YjNjN2MzNTY2YjFkMTg1ZDk2Mjk2NmU0ZjYwYmE4ODU0MjguLjU0NDFjODAyNzg5
OTE1M2M0ODZiNjA1Yjg0ZGM5YjFiMjlkZTNlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3JMaXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM4LDEwICszOCwxMCBAQCBjbGFzcyBDU1NTZWxlY3Rvckxpc3QgewogcHVibGlj
OgogICAgIENTU1NlbGVjdG9yTGlzdCgpIDogbV9zZWxlY3RvckFycmF5KDApIHsgfQogICAgIENT
U1NlbGVjdG9yTGlzdChjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICBDU1NTZWxlY3Rvckxp
c3QoQ1NTU2VsZWN0b3JMaXN0JiYpOwogCi0gICAgfkNTU1NlbGVjdG9yTGlzdCgpOworICAgIH5D
U1NTZWxlY3Rvckxpc3QoKSB7IGRlbGV0ZVNlbGVjdG9ycygpOyB9CiAKLSAgICB2b2lkIGFkb3B0
KENTU1NlbGVjdG9yTGlzdCYgbGlzdCk7CiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiYgc2VsZWN0b3JWZWN0b3Ip
OwogICAgIHZvaWQgYWRvcHRTZWxlY3RvckFycmF5KENTU1NlbGVjdG9yKiBzZWxlY3RvcnMpIHsg
QVNTRVJUKCFtX3NlbGVjdG9yQXJyYXkpOyBtX3NlbGVjdG9yQXJyYXkgPSBzZWxlY3RvcnM7IH0K
IApAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBjb21wb25lbnRDb3Vu
dCgpIGNvbnN0OwogCisgICAgQ1NTU2VsZWN0b3JMaXN0JiBvcGVyYXRvcj0oQ1NTU2VsZWN0b3JM
aXN0JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlU2VsZWN0b3JzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGUuaAppbmRleCA3MDQwZjA2ZDUwZDUzNzk4MjM1MDk3ZTJiMmUwNDExYzc3YTIy
MDdhLi5hYTZiODE1OGJhZWUxMDhjYTgxY2I0MWI1ZmY2NTNkOThmNDk5YmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUnVsZS5oCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAgICAgCiAgICAgdm9pZCBwYXJzZXJB
ZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0
b3I+PiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2Vs
ZWN0b3JzKTsgfQotICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0KHNlbGVjdG9ycyk7IH0KKyAg
ICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9y
cykgeyBtX3NlbGVjdG9yTGlzdCA9IHN0ZDo6bW92ZShzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBw
YXJzZXJBZG9wdFNlbGVjdG9yQXJyYXkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9ycykgeyBtX3NlbGVj
dG9yTGlzdC5hZG9wdFNlbGVjdG9yQXJyYXkoc2VsZWN0b3JzKTsgfQogCiAgICAgUGFzc1JlZjxT
dHlsZVJ1bGU+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZSgq
dGhpcykpOyB9CkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmIG11dGFibGVQcm9wZXJ0aWVzKCk7CiAKICAgICB2b2lkIHBhcnNlckFkb3B0U2Vs
ZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBz
ZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMp
OyB9Ci0gICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQorICAgIHZvaWQg
d3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzKSB7IG1f
c2VsZWN0b3JMaXN0ID0gc3RkOjptb3ZlKHNlbGVjdG9ycyk7IH0KIAogICAgIFBhc3NSZWY8U3R5
bGVSdWxlUGFnZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxl
UGFnZSgqdGhpcykpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAppbmRleCA0
ZmE1NzdlNWIxMTBhNWU4N2IwNTIxNTFjODFmZWVlYzhhNzE3MDk5Li45YmI1ZmUzNmE0YjU3NDhm
MzA4OTlkMjMyNWY5YTg4ZGY3MThlYzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnku
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSwxMCArMzUsNDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0
JiBzZWxlY3Rvckxpc3QpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorc3RhdGljIGJvb2wgaXNTaW5n
bGVUYWdOYW1lU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQoreworICAgIHJl
dHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBzZWxlY3Rvci5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpUYWc7Cit9CisKK3N0YXRpYyBib29sIGlzU2luZ2xlQ2xhc3NOYW1lU2Vs
ZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQoreworICAgIHJldHVybiBzZWxlY3Rv
ci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBzZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpDbGFzczsKK30KKyNlbmRpZgorCitlbnVtIGNsYXNzIElkTWF0Y2hpbmdUeXBlIDogdWludDhf
dCB7CisgICAgTm9uZSwKKyAgICBSaWdodG1vc3QsCisgICAgRmlsdGVyCit9OworCitzdGF0aWMg
SWRNYXRjaGluZ1R5cGUgZmluZElkTWF0Y2hpbmdUeXBlKGNvbnN0IENTU1NlbGVjdG9yJiBmaXJz
dFNlbGVjdG9yKQogewotICAgIEFTU0VSVChtX3NlbGVjdG9ycy5pc0VtcHR5KCkpOworICAgIGJv
b2wgaW5SaWdodG1vc3QgPSB0cnVlOworICAgIGZvciAoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yID0gJmZpcnN0U2VsZWN0b3I7IHNlbGVjdG9yOyBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdI
aXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpJZCkgeworICAgICAgICAgICAgaWYgKGluUmlnaHRtb3N0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OworICAgICAgICAgICAgcmV0dXJuIElkTWF0
Y2hpbmdUeXBlOjpGaWx0ZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxh
dGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgICAgIGluUmlnaHRt
b3N0ID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBJZE1hdGNoaW5nVHlwZTo6Tm9uZTsKK30K
IAorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdChjb25zdCBDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9yTGlzdCkKK3sKICAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0gMDsKICAg
ICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgp
OyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQog
ICAgICAgICBzZWxlY3RvckNvdW50Kys7CkBAIC00Niw2ICs3NywzOSBAQCB2b2lkIFNlbGVjdG9y
RGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3Qp
CiAgICAgbV9zZWxlY3RvcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWxlY3RvckNvdW50KTsK
ICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJz
dCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3Ip
KQogICAgICAgICBtX3NlbGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVj
dG9yLCBTZWxlY3RvckNoZWNrZXJGYXN0UGF0aDo6Y2FuVXNlKHNlbGVjdG9yKSkpOworCisgICAg
aWYgKHNlbGVjdG9yQ291bnQgPT0gMSkgeworICAgICAgICBjb25zdCBDU1NTZWxlY3RvciYgc2Vs
ZWN0b3IgPSAqbV9zZWxlY3RvcnMuZmlyc3QoKS5zZWxlY3RvcjsKKyAgICAgICAgaWYgKHNlbGVj
dG9yLmlzTGFzdEluVGFnSGlzdG9yeSgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNlbGVjdG9y
Lm1fbWF0Y2gpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKKyAgICAgICAg
ICAgICAgICBtX21hdGNoVHlwZSA9IFRhZ05hbWVNYXRjaDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgorICAgICAgICAgICAgICAg
IG1fbWF0Y2hUeXBlID0gQ2xhc3NOYW1lTWF0Y2g7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgICAgICAgICBtX21hdGNo
VHlwZSA9IFJpZ2h0TW9zdFdpdGhJZE1hdGNoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9IENvbXBpbGFi
bGVTaW5nbGU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2ggKGZpbmRJZE1hdGNoaW5nVHlwZShzZWxlY3Rv
cikpIHsKKyAgICAgICAgICAgIGNhc2UgSWRNYXRjaGluZ1R5cGU6Ok5vbmU6CisgICAgICAgICAg
ICAgICAgbV9tYXRjaFR5cGUgPSBDb21waWxhYmxlU2luZ2xlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OgorICAgICAg
ICAgICAgICAgIG1fbWF0Y2hUeXBlID0gUmlnaHRNb3N0V2l0aElkTWF0Y2g7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElkTWF0Y2hpbmdUeXBlOjpGaWx0ZXI6Cisg
ICAgICAgICAgICAgICAgbV9tYXRjaFR5cGUgPSBDb21waWxhYmxlU2luZ2xlV2l0aFJvb3RGaWx0
ZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9tYXRjaFR5cGUgPSBNdWx0aXBsZVNlbGVjdG9yTWF0Y2g7CiB9
CiAKIGlubGluZSBib29sIFNlbGVjdG9yRGF0YUxpc3Q6OnNlbGVjdG9yTWF0Y2hlcyhjb25zdCBT
ZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUpIGNvbnN0CkBAIC0xNTcsOSArMjIxLDQyIEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlRmFzdFBhdGhGb3JJZFNlbGVjdG9yKGNv
bnN0IENvbnRhaW5lCiAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9y
RWxlbWVudChvdXRwdXQsIGVsZW1lbnQpOwogfQogCi1zdGF0aWMgYm9vbCBpc1NpbmdsZVRhZ05h
bWVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCitzdGF0aWMgQ29udGFpbmVy
Tm9kZSYgZmlsdGVyUm9vdEJ5SWQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IENTU1Nl
bGVjdG9yJiBmaXJzdFNlbGVjdG9yKQogewotICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRh
Z0hpc3RvcnkoKSAmJiBzZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpUYWc7CisgICAg
aWYgKCFyb290Tm9kZS5pbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiByb290Tm9kZTsKKyAg
ICBpZiAocm9vdE5vZGUuZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICAgICAgcmV0dXJu
IHJvb3ROb2RlOworCisgICAgLy8gSWYgdGhlcmUgd2FzIGFuIElkIG1hdGNoIGluIHRoZSByaWdo
dG1vc3QgU2ltcGxlIFNlbGVjdG9yLCB3ZSBzaG91bGQgYmUgaW4gYSBSaWdodE1vc3RXaXRoSWRN
YXRjaCwgbm90IGluIGZpbHRlci4KKyAgICAvLyBUaHVzIHdlIGNhbiBza2lwIHRoZSByaWdodG1v
c3QgbWF0Y2guCisgICAgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gJmZpcnN0U2VsZWN0
b3I7CisgICAgZG8geworICAgICAgICBBU1NFUlQoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2Vs
ZWN0b3I6OklkKTsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVj
dG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzZWxlY3RvciA9
IHNlbGVjdG9yLT50YWdIaXN0b3J5KCk7CisgICAgfSB3aGlsZSAoc2VsZWN0b3IpOworCisgICAg
Ym9vbCBpbkFkamFjZW50Q2hhaW4gPSBmYWxzZTsKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVj
dG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3ItPm1f
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OklkKSB7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGlkVG9NYXRjaCA9IHNlbGVjdG9yLT52YWx1ZSgpOworICAgICAgICAgICAgaWYgKExJS0VM
WSghcm9vdE5vZGUudHJlZVNjb3BlKCkuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGlk
VG9NYXRjaCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIHNlYXJjaFJv
b3QgPSByb290Tm9kZS50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZFRvTWF0Y2gpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChpbkFkamFjZW50Q2hhaW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZWFyY2hSb290ID0gc2VhcmNoUm9vdC0+cGFyZW50Tm9kZSgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoc2VhcmNoUm9vdCAmJiAoaXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8
fCBzZWFyY2hSb290ID09ICZyb290Tm9kZSB8fCBzZWFyY2hSb290LT5pc0Rlc2NlbmRhbnRPZigm
cm9vdE5vZGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAqc2VhcmNoUm9vdDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudCB8fCBz
ZWxlY3Rvci0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudCkKKyAg
ICAgICAgICAgIGluQWRqYWNlbnRDaGFpbiA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGluQWRqYWNlbnRDaGFpbiA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gcm9vdE5vZGU7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+CkBAIC0yMTUsMTEg
KzMxMiw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlU2lu
Z2xlVGFnTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDb250CiAgICAgfQogfQogCi1zdGF0aWMgYm9v
bCBpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikK
LXsKLSAgICByZXR1cm4gc2VsZWN0b3IuaXNMYXN0SW5UYWdIaXN0b3J5KCkgJiYgc2VsZWN0b3Iu
bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3M7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBT
ZWxlY3RvclF1ZXJ5VHJhaXQ+CiBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6
ZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSwgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEsIHR5cGVuYW1lIFNlbGVj
dG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewpAQCAtMjc4LDU5ICsz
NzAsODUgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21w
aWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlcihjb25zdAogICAgICAgICB9CiAgICAgfQogfQotCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgotQUxXQVlTX0lOTElORSB2b2lk
IFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhDb250
ZXh0KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBTZWxlY3RvckNvbXBpbGVyOjpTZWxl
Y3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IHNlbGVjdG9yQ2hlY2tlciwgY29uc3QgU2Vs
ZWN0b3JDb21waWxlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCB0eXBlbmFtZSBTZWxlY3Rv
clF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8m
IGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRhaW5l
ck5vZGUmPihyb290Tm9kZSkpKSB7Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVsZW1l
bnQsICZjb250ZXh0KSkgewotICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRP
dXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKFNlbGVj
dG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NF
TEVDVE9SX0pJVCkKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIEFM
V0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1
dCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAg
Y29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEgPSBtX3NlbGVjdG9yc1swXTsKLSAgICAg
ICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yKiBpZFNlbGVjdG9yID0gc2VsZWN0b3JGb3JJZExvb2t1
cChyb290Tm9kZSwgKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBleGVjdXRl
RmFzdFBhdGhGb3JJZFNlbGVjdG9yPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUsIHNlbGVj
dG9yRGF0YSwgaWRTZWxlY3Rvciwgb3V0cHV0KTsKLSAgICAgICAgZWxzZSBpZiAoaXNTaW5nbGVU
YWdOYW1lU2VsZWN0b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBleGVj
dXRlU2luZ2xlVGFnTmFtZVNlbGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3ROb2Rl
LCBzZWxlY3RvckRhdGEsIG91dHB1dCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzU2luZ2xlQ2xhc3NO
YW1lU2VsZWN0b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBleGVjdXRl
U2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUs
IHNlbGVjdG9yRGF0YSwgb3V0cHV0KTsKLSAgICAgICAgZWxzZSB7CisgICAgQ29udGFpbmVyTm9k
ZSogc2VhcmNoUm9vdE5vZGUgPSAmcm9vdE5vZGU7CisgICAgc3dpdGNoIChtX21hdGNoVHlwZSkg
eworICAgIGNhc2UgUmlnaHRNb3N0V2l0aElkTWF0Y2g6CisgICAgICAgIGlmIChjb25zdCBDU1NT
ZWxlY3RvciogaWRTZWxlY3RvciA9IHNlbGVjdG9yRm9ySWRMb29rdXAoKnNlYXJjaFJvb3ROb2Rl
LCAqbV9zZWxlY3RvcnMuZmlyc3QoKS5zZWxlY3RvcikpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVG
YXN0UGF0aEZvcklkU2VsZWN0b3I8U2VsZWN0b3JRdWVyeVRyYWl0Pigqc2VhcmNoUm9vdE5vZGUs
IG1fc2VsZWN0b3JzLmZpcnN0KCksIGlkU2VsZWN0b3IsIG91dHB1dCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIENvbXBpbGFi
bGVTaW5nbGVXaXRoUm9vdEZpbHRlcjoKKyAgICBjYXNlIENvbXBpbGFibGVTaW5nbGU6CisgICAg
ICAgIHsKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICAgICAgICAgIHZvaWQqIGNv
bXBpbGVkU2VsZWN0b3JDaGVja2VyID0gc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3JDb2Rl
UmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgICAgICAgICAgaWYgKCFjb21waWxl
ZFNlbGVjdG9yQ2hlY2tlciAmJiBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgPT0gU2Vs
ZWN0b3JDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQpIHsKLSAgICAgICAgICAgICAgICBK
U0M6OlZNKiB2bSA9IHJvb3ROb2RlLmRvY3VtZW50KCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT52bSgpOwotICAgICAgICAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyA9
IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0b3Is
IHZtLCBTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3IsIHNl
bGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yQ29kZVJlZik7Ci0gICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoc2VsZWN0b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzICE9IFNlbGVjdG9yQ29t
cGlsYXRpb25TdGF0dXM6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQpOwotICAg
ICAgICAgICAgICAgIGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyID0gc2VsZWN0b3JEYXRhLmNvbXBp
bGVkU2VsZWN0b3JDb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgICAgICAg
ICAgfQorICAgICAgICBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSA9IG1fc2VsZWN0
b3JzLmZpcnN0KCk7CisgICAgICAgIEFTU0VSVChtX21hdGNoVHlwZSA9PSBSaWdodE1vc3RXaXRo
SWRNYXRjaCB8fCBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgPT0gU2VsZWN0b3JDb21w
aWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQpOwogCi0gICAgICAgICAgICBpZiAoY29tcGlsZWRT
ZWxlY3RvckNoZWNrZXIpIHsKLSAgICAgICAgICAgICAgICBTZWxlY3RvckNvbXBpbGVyOjpTaW1w
bGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21waWxlcjo6c2lt
cGxlU2VsZWN0b3JDaGVja2VyRnVuY3Rpb24oY29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIHNlbGVj
dG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgZXhlY3V0ZUNvbXBp
bGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUsIHNl
bGVjdG9yQ2hlY2tlciwgb3V0cHV0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IEpTQzo6Vk0qIHZtID0gc2VhcmNoUm9vdE5vZGUtPmRvY3VtZW50KCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT52bSgpOworICAgICAgICBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMg
PSBTZWxlY3RvckNvbXBpbGVyOjpjb21waWxlU2VsZWN0b3Ioc2VsZWN0b3JEYXRhLnNlbGVjdG9y
LCB2bSwgU2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yLCBz
ZWxlY3RvckRhdGEuY29tcGlsZWRTZWxlY3RvckNvZGVSZWYpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgIT0gU2VsZWN0b3JDb21waWxhdGlv
blN0YXR1czo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk7CisKKyAgICAgICAg
aWYgKHNlbGVjdG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIpIHsKKyAgICAgICAgICAgIGlmIChtX21hdGNo
VHlwZSA9PSBDb21waWxhYmxlU2luZ2xlKSB7CisgICAgICAgICAgICAgICAgbV9tYXRjaFR5cGUg
PSBDb21waWxlZFNpbmdsZTsKKyAgICAgICAgICAgICAgICBnb3RvIENvbXBpbGVkU2luZ2xlQ2Fz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX21hdGNoVHlwZSA9PSBDb21waWxh
YmxlU2luZ2xlV2l0aFJvb3RGaWx0ZXIpIHsKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9
IENvbXBpbGVkU2luZ2xlV2l0aFJvb3RGaWx0ZXI7CisgICAgICAgICAgICAgICAgZ290byBDb21w
aWxlZFNpbmdsZVdpdGhSb290RmlsdGVyQ2FzZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGdvdG8gQ29tcGlsZWRTaW5nbGVDYXNlOworICAgICAgICB9CisgICAgICAgIGlmIChtX21hdGNo
VHlwZSAhPSBSaWdodE1vc3RXaXRoSWRNYXRjaCkKKyAgICAgICAgICAgIG1fbWF0Y2hUeXBlID0g
U2luZ2xlU2VsZWN0b3I7CisgICAgICAgIGdvdG8gU2luZ2xlU2VsZWN0b3JDYXNlOworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5BQkxF
KENTU19TRUxFQ1RPUl9KSVQpCi0KLSAgICAgICAgICAgIGV4ZWN1dGVTaW5nbGVTZWxlY3RvckRh
dGE8U2VsZWN0b3JRdWVyeVRyYWl0Pihyb290Tm9kZSwgc2VsZWN0b3JEYXRhLCBvdXRwdXQpOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbXBpbGVkU2luZ2xlV2l0aFJv
b3RGaWx0ZXI6CisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgICAgIENvbXBpbGVk
U2luZ2xlV2l0aFJvb3RGaWx0ZXJDYXNlOgorICAgICAgICBzZWFyY2hSb290Tm9kZSA9ICZmaWx0
ZXJSb290QnlJZCgqc2VhcmNoUm9vdE5vZGUsICptX3NlbGVjdG9ycy5maXJzdCgpLnNlbGVjdG9y
KTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CisjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9K
SVQpCisgICAgY2FzZSBDb21waWxlZFNpbmdsZToKKyNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJ
VCkKKyAgICAgICAgeworICAgICAgICBDb21waWxlZFNpbmdsZUNhc2U6CisgICAgICAgIGNvbnN0
IFNlbGVjdG9yRGF0YSYgc2VsZWN0b3JEYXRhID0gbV9zZWxlY3RvcnMuZmlyc3QoKTsKKyAgICAg
ICAgdm9pZCogY29tcGlsZWRTZWxlY3RvckNoZWNrZXIgPSBzZWxlY3RvckRhdGEuY29tcGlsZWRT
ZWxlY3RvckNvZGVSZWYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIFNlbGVj
dG9yQ29tcGlsZXI6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIgPSBTZWxl
Y3RvckNvbXBpbGVyOjpzaW1wbGVTZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21waWxlZFNlbGVj
dG9yQ2hlY2tlciwgc2VsZWN0b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzKTsKKyAgICAgICAgZXhl
Y3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNl
YXJjaFJvb3ROb2RlLCBzZWxlY3RvckNoZWNrZXIsIG91dHB1dCk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgY2FzZSBT
aW5nbGVTZWxlY3RvcjoKKyAgICAgICAgU2luZ2xlU2VsZWN0b3JDYXNlOgorICAgICAgICBleGVj
dXRlU2luZ2xlU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNlYXJjaFJvb3ROb2Rl
LCBtX3NlbGVjdG9ycy5maXJzdCgpLCBvdXRwdXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFRhZ05hbWVNYXRjaDoKKyAgICAgICAgZXhlY3V0ZVNpbmdsZVRhZ05hbWVTZWxlY3RvckRhdGE8
U2VsZWN0b3JRdWVyeVRyYWl0Pigqc2VhcmNoUm9vdE5vZGUsIG1fc2VsZWN0b3JzLmZpcnN0KCks
IG91dHB1dCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xhc3NOYW1lTWF0Y2g6CisgICAg
ICAgIGV4ZWN1dGVTaW5nbGVDbGFzc05hbWVTZWxlY3RvckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0
Pigqc2VhcmNoUm9vdE5vZGUsIG1fc2VsZWN0b3JzLmZpcnN0KCksIG91dHB1dCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTXVsdGlwbGVTZWxlY3Rvck1hdGNoOgorICAgICAgICBleGVjdXRl
U2luZ2xlTXVsdGlTZWxlY3RvckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0Pigqc2VhcmNoUm9vdE5v
ZGUsIG91dHB1dCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBleGVjdXRlU2luZ2xlTXVs
dGlTZWxlY3RvckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0Pihyb290Tm9kZSwgb3V0cHV0KTsKIH0K
IAotU2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeShjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNl
bGVjdG9yTGlzdCkKK1NlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVlcnkoQ1NTU2VsZWN0b3JMaXN0
JiYgc2VsZWN0b3JMaXN0KQogICAgIDogbV9zZWxlY3Rvckxpc3Qoc2VsZWN0b3JMaXN0KQorICAg
ICwgbV9zZWxlY3RvcnMobV9zZWxlY3Rvckxpc3QpCiB7Ci0gICAgbV9zZWxlY3RvcnMuaW5pdGlh
bGl6ZShtX3NlbGVjdG9yTGlzdCk7CiB9CiAKIFNlbGVjdG9yUXVlcnkqIFNlbGVjdG9yUXVlcnlD
YWNoZTo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JzLCBEb2N1bWVudCYgZG9jdW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzU4LDcgKzQ3Niw3IEBAIFNlbGVjdG9yUXVlcnkq
IFNlbGVjdG9yUXVlcnlDYWNoZTo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JzLCBE
b2N1bWVudCYKICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtYXhpbXVtU2VsZWN0b3JRdWVy
eUNhY2hlU2l6ZSkKICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShtX2VudHJpZXMuYmVnaW4oKSk7
CiAgICAgCi0gICAgcmV0dXJuIG1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5p
cXVlPFNlbGVjdG9yUXVlcnk+KHNlbGVjdG9yTGlzdCkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
KyAgICByZXR1cm4gbV9lbnRyaWVzLmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2Vs
ZWN0b3JRdWVyeT4oc3RkOjptb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CiB9CiAKIHZvaWQgU2VsZWN0b3JRdWVyeUNhY2hlOjppbnZhbGlkYXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5oCmluZGV4IGFhYjQyNzZkZGEzZjQ3MzI3YWI3MWJjMTkwMWVlZmE3
ZTMyNTE5OWUuLmRlM2Q2NmUwYmRjZmZhYTFkYTM1Mjc5N2IwZjNlODYzZDMxYjMwOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMjEgKzQ2LDI1IEBAIGNs
YXNzIE5vZGVMaXN0OwogCiBjbGFzcyBTZWxlY3RvckRhdGFMaXN0IHsKIHB1YmxpYzoKLSAgICB2
b2lkIGluaXRpYWxpemUoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisgICAgU2VsZWN0b3JEYXRh
TGlzdChjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKICAgICBib29sIG1hdGNoZXMoRWxlbWVudCYp
IGNvbnN0OwogICAgIFJlZlB0cjxOb2RlTGlzdD4gcXVlcnlBbGwoQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpIGNvbnN0OwogICAgIEVsZW1lbnQqIHF1ZXJ5Rmlyc3QoQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBTZWxlY3RvckRhdGEgewotICAg
ICAgICBTZWxlY3RvckRhdGEoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBib29sIGlzRmFz
dENoZWNrYWJsZSkgOiBzZWxlY3RvcihzZWxlY3RvciksIGlzRmFzdENoZWNrYWJsZShpc0Zhc3RD
aGVja2FibGUpIHsgfQotICAgICAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3I7Ci0gICAg
ICAgIGJvb2wgaXNGYXN0Q2hlY2thYmxlOworICAgICAgICBTZWxlY3RvckRhdGEoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCBib29sIGlzRmFzdENoZWNrYWJsZSkKKyAgICAgICAgICAgIDog
c2VsZWN0b3Ioc2VsZWN0b3IpCisgICAgICAgICAgICAsIGlzRmFzdENoZWNrYWJsZShpc0Zhc3RD
aGVja2FibGUpCisgICAgICAgIHsKKyAgICAgICAgfQogCisgICAgICAgIGNvbnN0IENTU1NlbGVj
dG9yKiBzZWxlY3RvcjsKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICAgICAgbXV0
YWJsZSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIGNvbXBpbGF0aW9uU3RhdHVzOwogICAgICAg
ICBtdXRhYmxlIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGNvbXBpbGVkU2VsZWN0b3JDb2Rl
UmVmOworICAgICAgICBtdXRhYmxlIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgY29tcGlsYXRp
b25TdGF0dXM7CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgICAgIGJv
b2wgaXNGYXN0Q2hlY2thYmxlOwogICAgIH07CiAKICAgICBib29sIHNlbGVjdG9yTWF0Y2hlcyhj
b25zdCBTZWxlY3RvckRhdGEmLCBFbGVtZW50JiwgY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5v
ZGUpIGNvbnN0OwpAQCAtNzMsMTAgKzc3LDIwIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4gdm9pZCBleGVjdXRlU2luZ2xlTXVsdGlTZWxlY3Rv
ckRhdGEoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVuYW1lIFNlbGVjdG9yUXVl
cnlUcmFpdDo6T3V0cHV0VHlwZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklU
KQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+IHZvaWQgZXhlY3V0
ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlLCBTZWxlY3RvckNvbXBpbGVyOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIsIHR5cGVuYW1lIFNl
bGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0VHlwZSYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+IHZvaWQgZXhlY3V0ZUNvbXBpbGVkU2VsZWN0b3JDaGVj
a2VyV2l0aENvbnRleHQoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIFNlbGVjdG9yQ29t
cGlsZXI6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQsIGNvbnN0IFNlbGVjdG9y
Q29tcGlsZXI6OkNoZWNraW5nQ29udGV4dCYsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6
T3V0cHV0VHlwZSYpIGNvbnN0OwogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQog
CiAgICAgVmVjdG9yPFNlbGVjdG9yRGF0YT4gbV9zZWxlY3RvcnM7CisgICAgbXV0YWJsZSBlbnVt
IE1hdGNoVHlwZSB7CisgICAgICAgIENvbXBpbGFibGVTaW5nbGUsCisgICAgICAgIENvbXBpbGFi
bGVTaW5nbGVXaXRoUm9vdEZpbHRlciwKKyAgICAgICAgQ29tcGlsZWRTaW5nbGUsCisgICAgICAg
IENvbXBpbGVkU2luZ2xlV2l0aFJvb3RGaWx0ZXIsCisgICAgICAgIFNpbmdsZVNlbGVjdG9yLAor
ICAgICAgICBSaWdodE1vc3RXaXRoSWRNYXRjaCwKKyAgICAgICAgVGFnTmFtZU1hdGNoLAorICAg
ICAgICBDbGFzc05hbWVNYXRjaCwKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rvck1hdGNoLAorICAg
IH0gbV9tYXRjaFR5cGU7CiB9OwogCiBjbGFzcyBTZWxlY3RvclF1ZXJ5IHsKQEAgLTg0LDE0ICs5
OCwxNCBAQCBjbGFzcyBTZWxlY3RvclF1ZXJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIAogcHVibGljOgotICAgIGV4cGxpY2l0IFNlbGVjdG9yUXVlcnkoY29uc3QgQ1NTU2VsZWN0
b3JMaXN0Jik7CisgICAgZXhwbGljaXQgU2VsZWN0b3JRdWVyeShDU1NTZWxlY3Rvckxpc3QmJik7
CiAgICAgYm9vbCBtYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+
IHF1ZXJ5QWxsKENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAgICBFbGVtZW50KiBx
dWVyeUZpcnN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogICAgIENTU1NlbGVjdG9yTGlzdCBtX3Nl
bGVjdG9yTGlzdDsKKyAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogfTsKIAogY2xh
c3MgU2VsZWN0b3JRdWVyeUNhY2hlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YTE1ZjA1OTg4MjBjNzdiMTdlOTFmYTg0
MmMzYTNlMGI3NWNmZWI1Li4yMTc3NzkwOTU2OGQyOTdmNTY1MWQ1ZTU0YWJjZGVjMDBmYmViODFi
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDItMjMgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIE9wdGltaXplZCBxdWVyeVNlbGVjdG9yKEFs
bCkgd2hlbiBzZWxlY3RvciBjb250YWlucyAjaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1pZC1m
aWx0ZXJpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVjdG9ycy9x
dWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy5odG1sOiBBZGRlZC4KKwogMjAxNC0wMi0yMiAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgSldLIGtl
eV9vcHMgdmFsdWVzIGZyb20gd3JhcC91bndyYXAgdG8gd3JhcEtleS91bndyYXBLZXkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtZmlsdGVy
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0
b3ItaWQtZmlsdGVyaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGYyMDQ1MGRkYTYxYWE3
MDAxNzNlNGE4ZjdjNTk4MDI1MzM5YzcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0ZXJpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNDQgQEAKK1Rlc3QgdmFyaW91cyBjYXNlcyB3aGVuIHdlIGNvbnN0cmFpbiBhIHNl
bGVjdG9yIG1hdGNoaW5nIHRvIGEgc3VidHJlZSBzZWxlY3RlZCBieSAjSUQKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK01pc3NpbmcgaWQuCitQQVNTIGRvY3VtZW50LmJvZHkucXVl
cnlTZWxlY3RvckFsbCgiI25vdFRoZXJlICoiKS5sZW5ndGggaXMgMAorCitUcml2aWFsIGZpbHRl
cmluZy4KK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjc2ltcGxlIGxpIiku
bGVuZ3RoIGlzIDEKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjc2ltcGxl
IGxpIilbMF0uaWQgaXMgInNpbXBsZVRhcmdldCIKKworSUQgaXMgYWRqYWNlbnQgb2YgdGFyZ2V0
LgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkaXJlY3RBZGphY2VudFJv
b3QrZGl2IGxpIikubGVuZ3RoIGlzIDEKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9y
QWxsKCIjZGlyZWN0QWRqYWNlbnRSb290K2RpdiBsaSIpWzBdLmlkIGlzICJkaXJlY3RBZGphY2Vu
dFRhcmdldCIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjaW5kaXJlY3RB
ZGphY2VudFJvb3R+ZGl2IGxpIikubGVuZ3RoIGlzIDEKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVy
eVNlbGVjdG9yQWxsKCIjaW5kaXJlY3RBZGphY2VudFJvb3R+ZGl2IGxpIilbMF0uaWQgaXMgImlu
ZGlyZWN0QWRqYWNlbnRUYXJnZXQiCisKK0R1cGxpY2F0ZWQgSURzLgorUEFTUyBkb2N1bWVudC5i
b2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIikubGVuZ3RoIGlzIDMKK1BBU1Mg
ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCBsaSIpWzBdLmlkIGlz
ICJkdXBsaWNhdGVkVGFyZ2V0MSIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjZHVwbGljYXRlZCBsaSIpWzFdLmlkIGlzICJkdXBsaWNhdGVkVGFyZ2V0MiIKK1BBU1MgZG9j
dW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCBsaSIpWzJdLmlkIGlzICJk
dXBsaWNhdGVkVGFyZ2V0MyIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIj
ZHVwbGljYXRlZCtkaXYgbGkiKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkK2RpdiBsaSIpWzBdLmlkIGlzICJzaWJsaW5nT2ZEdXBs
aWNhdGVkMSIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRl
ZCtkaXYgbGkiKVsxXS5pZCBpcyAic2libGluZ09mRHVwbGljYXRlZDIiCisKK0R1cGxpY2F0ZWQg
SURzIHdpdGggYSBub24tZHVwbGljYXRlZCBhbmNlc3Rvci4KK1BBU1MgZG9jdW1lbnQuYm9keS5x
dWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxp
Y2F0ZWQgbGkiKS5sZW5ndGggaXMgMworUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JB
bGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCBsaSIpWzBd
LmlkIGlzICJkZWR1cGxpY2F0ZWRUYXJnZXQxIgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2Vs
ZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCBs
aSIpWzFdLmlkIGlzICJkZWR1cGxpY2F0ZWRUYXJnZXQyIgorUEFTUyBkb2N1bWVudC5ib2R5LnF1
ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGlj
YXRlZCBsaSIpWzJdLmlkIGlzICJkZWR1cGxpY2F0ZWRUYXJnZXQzIgorUEFTUyBkb2N1bWVudC5i
b2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2Rl
ZHVwbGljYXRlZCtkaXYgbGkiKS5sZW5ndGggaXMgMgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRl
ZCtkaXYgbGkiKVswXS5pZCBpcyAic2libGluZ09mRGVkdXBsaWNhdGVkMSIKK1BBU1MgZG9jdW1l
bnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRl
ICNkZWR1cGxpY2F0ZWQrZGl2IGxpIilbMV0uaWQgaXMgInNpYmxpbmdPZkRlZHVwbGljYXRlZDIi
CitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJl
bnRPZkR1cGxpY2F0ZStkaXYgbGkiKS5sZW5ndGggaXMgMQorUEFTUyBkb2N1bWVudC5ib2R5LnF1
ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUrZGl2IGxpIilb
MF0uaWQgaXMgInNpYmxpbmdPZk5vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSIKKworU2li
bGluZyBvZiBIVE1MIGRvY3VtZW50LgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JB
bGwoIiNodG1sRG9jdW1lbnR+KiAqIikubGVuZ3RoIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0ZXJpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYjAyYTI5ODYxYTQzZjNlNjcxN2NhZmE1MWFlN2RkMGQwMDcxMzJjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0
ZXJpbmcuaHRtbApAQCAtMCwwICsxLDEzOCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBpZD1o
dG1sRG9jdW1lbnQ+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5
Om5vbmUiPgorICAgIDwhLS0gU2ltcGxlIGNhc2UgLS0+CisgICAgPGRpdiBpZD1zaW1wbGU+Cisg
ICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBpZD1zaW1wbGVUYXJnZXQ+PC9saT4KKyAgICAg
ICAgPC91bD4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gRHVwbGljYXRlZCBJRHMgY2FzZSAtLT4K
KyAgICA8ZGl2IGlkPWR1cGxpY2F0ZWQ+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBp
ZD1kdXBsaWNhdGVkVGFyZ2V0MT48L2xpPgorICAgICAgICA8L3VsPgorICAgICAgICA8ZGl2IGlk
PWR1cGxpY2F0ZWQ+CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgPGxpIGlkPWR1
cGxpY2F0ZWRUYXJnZXQyPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGkgaWQ9
c2libGluZ09mRHVwbGljYXRlZDE+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKwor
ICAgIDxkaXYgaWQ9ZHVwbGljYXRlZD4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpIGlk
PWR1cGxpY2F0ZWRUYXJnZXQzPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisgICAg
PGRpdj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpIGlkPXNpYmxpbmdPZkR1cGxpY2F0
ZWQyPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIER1cGxpY2F0
ZWQgSURzIGluIGEgbm9uLWR1cGxpY2F0ZWQgSUQgLS0+CisgICAgPGRpdiBpZD1ub25EdXBsaWNh
dGVkUGFyZW50T2ZEdXBsaWNhdGU+CisgICAgICAgIDxkaXYgaWQ9ZGVkdXBsaWNhdGVkPgorICAg
ICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgIDxsaSBpZD1kZWR1cGxpY2F0ZWRUYXJnZXQx
PjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgPGRpdiBpZD1kZWR1cGxpY2F0
ZWQ+CisgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9ZGVk
dXBsaWNhdGVkVGFyZ2V0Mj48L2xpPgorICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXY+CisgICAgICAgICAgICA8dWw+
CisgICAgICAgICAgICAgICAgPGxpIGlkPXNpYmxpbmdPZkRlZHVwbGljYXRlZDE+PC9saT4KKyAg
ICAgICAgICAgIDwvdWw+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgaWQ9ZGVkdXBs
aWNhdGVkPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgIDxsaSBpZD1kZWR1cGxp
Y2F0ZWRUYXJnZXQzPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGRpdj4KKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGkgaWQ9c2li
bGluZ09mRGVkdXBsaWNhdGVkMj48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxp
IGlkPXNpYmxpbmdPZk5vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZT48L2xpPgorICAgICAg
ICA8L3VsPgorICAgIDwvZGl2PgorCisgICAgPCEtLSBJRCBhZGphY2VudCBvZiB0YXJnZXQgLS0+
CisgICAgPGRpdiBpZD1kaXJlY3RBZGphY2VudFJvb3Q+PC9kaXY+CisgICAgPGRpdj4KKyAgICAg
ICAgPHVsPgorICAgICAgICAgICAgPGxpIGlkPSJkaXJlY3RBZGphY2VudFRhcmdldCI+PC9saT4K
KyAgICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gSUQgaW5kaXJlY3QgYWRqYWNl
bnQgb2YgdGFyZ2V0IC0tPgorICAgIDxkaXYgaWQ9aW5kaXJlY3RBZGphY2VudFJvb3Q+PC9kaXY+
CisgICAgPGRpdj48L2Rpdj4KKyAgICA8ZGl2PjwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDx1
bD4KKyAgICAgICAgICAgIDxsaSBpZD0iaW5kaXJlY3RBZGphY2VudFRhcmdldCI+PC9saT4KKyAg
ICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IHZhcmlvdXMgY2FzZXMgd2hlbiB3ZSBjb25zdHJhaW4gYSBzZWxlY3RvciBt
YXRjaGluZyB0byBhIHN1YnRyZWUgc2VsZWN0ZWQgYnkgI0lEJyk7CisKK2RlYnVnKCJNaXNzaW5n
IGlkLiIpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vdFRo
ZXJlICoiKS5sZW5ndGgnLCAnMCcpOworCitkZWJ1ZygiPGJyPlRyaXZpYWwgZmlsdGVyaW5nLiIp
Oworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI3NpbXBsZSBsaSIp
Lmxlbmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVl
cnlTZWxlY3RvckFsbCgiI3NpbXBsZSBsaSIpWzBdLmlkJywgJ3NpbXBsZVRhcmdldCcpOworCitk
ZWJ1ZygiPGJyPklEIGlzIGFkamFjZW50IG9mIHRhcmdldC4iKTsKK3Nob3VsZEJlKCdkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkaXJlY3RBZGphY2VudFJvb3QrZGl2IGxpIikubGVu
Z3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNl
bGVjdG9yQWxsKCIjZGlyZWN0QWRqYWNlbnRSb290K2RpdiBsaSIpWzBdLmlkJywgJ2RpcmVjdEFk
amFjZW50VGFyZ2V0Jyk7CitzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjaW5kaXJlY3RBZGphY2VudFJvb3R+ZGl2IGxpIikubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjaW5kaXJlY3RB
ZGphY2VudFJvb3R+ZGl2IGxpIilbMF0uaWQnLCAnaW5kaXJlY3RBZGphY2VudFRhcmdldCcpOwor
CitkZWJ1ZygiPGJyPkR1cGxpY2F0ZWQgSURzLiIpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHku
cXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKS5sZW5ndGgnLCAnMycpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNh
dGVkIGxpIilbMF0uaWQnLCAnZHVwbGljYXRlZFRhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCBsaSIpWzFd
LmlkJywgJ2R1cGxpY2F0ZWRUYXJnZXQyJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3Vt
ZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKVsyXS5pZCcsICdkdXBs
aWNhdGVkVGFyZ2V0MycpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFs
bCgiI2R1cGxpY2F0ZWQrZGl2IGxpIikubGVuZ3RoJywgJzInKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCtkaXYgbGki
KVswXS5pZCcsICdzaWJsaW5nT2ZEdXBsaWNhdGVkMScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkK2RpdiBsaSIpWzFd
LmlkJywgJ3NpYmxpbmdPZkR1cGxpY2F0ZWQyJyk7CisKK2RlYnVnKCI8YnI+RHVwbGljYXRlZCBJ
RHMgd2l0aCBhIG5vbi1kdXBsaWNhdGVkIGFuY2VzdG9yLiIpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAj
ZGVkdXBsaWNhdGVkIGxpIikubGVuZ3RoJywgJzMnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVw
bGljYXRlICNkZWR1cGxpY2F0ZWQgbGkiKVswXS5pZCcsICdkZWR1cGxpY2F0ZWRUYXJnZXQxJyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgi
I25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIilbMV0uaWQn
LCAnZGVkdXBsaWNhdGVkVGFyZ2V0MicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUg
I2RlZHVwbGljYXRlZCBsaSIpWzJdLmlkJywgJ2RlZHVwbGljYXRlZFRhcmdldDMnKTsKK3Nob3Vs
ZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50
T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCtkaXYgbGkiKS5sZW5ndGgnLCAnMicpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBs
aWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCtkaXYgbGkiKVswXS5pZCcsICdz
aWJsaW5nT2ZEZWR1cGxpY2F0ZWQxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50
LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAj
ZGVkdXBsaWNhdGVkK2RpdiBsaSIpWzFdLmlkJywgJ3NpYmxpbmdPZkRlZHVwbGljYXRlZDInKTsK
K3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVk
UGFyZW50T2ZEdXBsaWNhdGUrZGl2IGxpIikubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBh
cmVudE9mRHVwbGljYXRlK2RpdiBsaSIpWzBdLmlkJywgJ3NpYmxpbmdPZk5vbkR1cGxpY2F0ZWRQ
YXJlbnRPZkR1cGxpY2F0ZScpOworCitkZWJ1ZygiPGJyPlNpYmxpbmcgb2YgSFRNTCBkb2N1bWVu
dC4iKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNodG1sRG9j
dW1lbnR+KiAqIikubGVuZ3RoJywgJzAnKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225557</attachid>
            <date>2014-03-01 11:39:21 -0800</date>
            <delta_ts>2014-03-01 12:04:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116502-20140301113920.patch</filename>
            <type>text/plain</type>
            <size>31856</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE0LTAzLTAxICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZWQgcXVl
cnlTZWxlY3RvcihBbGwpIHdoZW4gc2VsZWN0b3IgY29udGFpbnMgI2lkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2VsZWN0b3JzL3F1
ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLmh0bWwKKworICAgICAgICBUaGUgaWRlYSBvZiB0aGlz
IHBhdGNoIGlzIHRvIHBlcmZvcm0gcXVlcnlTZWxlY3RvciBvbiBhIHN1YnRyZWUKKyAgICAgICAg
cm9vdGVkIGF0IHRoZSBsYXN0IGVsZW1lbnQgd2l0aCAjaWQgbWF0Y2hpbmcuIEZvciBleGFtcGxl
LCBpZiB3ZSBoYXZlIHRoZSBzZWxlY3RvcgorICAgICAgICAiI2Zvb2JhciBkaXYgYSIsIHdlIHN0
YXJ0IGJ5IGxvb2tpbmcgZm9yIHRoZSBlbGVtZW50IHdpdGggSUQgZm9vYmFyIGluIHRoZSBUcmVl
U2NvcGUKKyAgICAgICAgY2FjaGUsIGFuZCBzdGFydCBtYXRjaGluZyB0aGUgY2hpbGRyZW4gZnJv
bSB0aGVyZS4KKworICAgICAgICBUaGUgaWRlYSBjb21lcyBmcm9tIFJ1bmUgZm9yCisgICAgICAg
IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9ibGluay8rLzFjZDgz
ZDM1ODg5NzNhMDJhYjE1ZDk0YjFiMDVhMjg2MjA4NTM2MjQKKyAgICAgICAgYnV0IHRoZSBjb2Rl
IGFzIGRpdmVyZ2VkIHRvbyBtdWNoIHNvIGl0IGhhZCB0byBiZSByZWltcGxlbWVudGVkIHNwZWNp
ZmljYWxseSBmb3IgV2ViS2l0LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6OkNTU1NlbGVjdG9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0
Ojp+Q1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjp3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QpOgorICAg
ICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2luZ2xl
VGFnTmFtZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2luZ2xlQ2xhc3NOYW1lU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZElkTWF0Y2hpbmdUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsdGVyUm9vdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRh
TGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1
ZXJ5Q2FjaGU6OmFkZCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YTo6U2VsZWN0b3JEYXRhKToK
KwogMjAxNC0wMi0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiBsZWFrcyBtZW1vcnkgc3RydWN0dXJl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAkocmV2aXNpb24gMTY0
OTIxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTMyLDExICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q1NTU2VsZWN0b3JMaXN0Ojp+Q1NTU2VsZWN0b3JMaXN0KCkKLXsKLSAgICBkZWxldGVTZWxlY3Rv
cnMoKTsKLX0KLQogQ1NTU2VsZWN0b3JMaXN0OjpDU1NTZWxlY3Rvckxpc3QoY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiBvdGhlcikKIHsKICAgICB1bnNpZ25lZCBvdGhlckNvbXBvbmVudENvdW50ID0g
b3RoZXIuY29tcG9uZW50Q291bnQoKTsKQEAgLTQ1LDExICs0MCwxMCBAQCBDU1NTZWxlY3Rvckxp
c3Q6OkNTU1NlbGVjdG9yTGlzdChjb25zdCBDCiAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fc2Vs
ZWN0b3JBcnJheVtpXSkgQ1NTU2VsZWN0b3Iob3RoZXIubV9zZWxlY3RvckFycmF5W2ldKTsKIH0K
IAotdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCkKK0NT
U1NlbGVjdG9yTGlzdDo6Q1NTU2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYmIG90aGVyKQor
ICAgIDogbV9zZWxlY3RvckFycmF5KG90aGVyLm1fc2VsZWN0b3JBcnJheSkKIHsKLSAgICBkZWxl
dGVTZWxlY3RvcnMoKTsKLSAgICBtX3NlbGVjdG9yQXJyYXkgPSBsaXN0Lm1fc2VsZWN0b3JBcnJh
eTsKLSAgICBsaXN0Lm1fc2VsZWN0b3JBcnJheSA9IDA7CisgICAgb3RoZXIubV9zZWxlY3RvckFy
cmF5ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JW
ZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3Rv
clZlY3RvcikKQEAgLTk3LDYgKzkxLDE0IEBAIHVuc2lnbmVkIENTU1NlbGVjdG9yTGlzdDo6Y29t
cG9uZW50Q291bnQKICAgICByZXR1cm4gKGN1cnJlbnQgLSBtX3NlbGVjdG9yQXJyYXkpICsgMTsK
IH0KIAorQ1NTU2VsZWN0b3JMaXN0JiBDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPShDU1NTZWxl
Y3Rvckxpc3QmJiBvdGhlcikKK3sKKyAgICBkZWxldGVTZWxlY3RvcnMoKTsKKyAgICBtX3NlbGVj
dG9yQXJyYXkgPSBvdGhlci5tX3NlbGVjdG9yQXJyYXk7CisgICAgb3RoZXIubV9zZWxlY3RvckFy
cmF5ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIHZvaWQgQ1NTU2VsZWN0b3JM
aXN0OjpkZWxldGVTZWxlY3RvcnMoKQogewogICAgIGlmICghbV9zZWxlY3RvckFycmF5KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAkocmV2aXNpb24gMTY0OTIxKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwx
MCArMzgsMTAgQEAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0IHsKIHB1YmxpYzoKICAgICBDU1NTZWxl
Y3Rvckxpc3QoKSA6IG1fc2VsZWN0b3JBcnJheSgwKSB7IH0KICAgICBDU1NTZWxlY3Rvckxpc3Qo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisgICAgQ1NTU2VsZWN0b3JMaXN0KENTU1NlbGVjdG9y
TGlzdCYmKTsKIAotICAgIH5DU1NTZWxlY3Rvckxpc3QoKTsKKyAgICB+Q1NTU2VsZWN0b3JMaXN0
KCkgeyBkZWxldGVTZWxlY3RvcnMoKTsgfQogCi0gICAgdm9pZCBhZG9wdChDU1NTZWxlY3Rvckxp
c3QmIGxpc3QpOwogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9yVmVjdG9yKTsKICAgICB2b2lkIGFk
b3B0U2VsZWN0b3JBcnJheShDU1NTZWxlY3Rvciogc2VsZWN0b3JzKSB7IEFTU0VSVCghbV9zZWxl
Y3RvckFycmF5KTsgbV9zZWxlY3RvckFycmF5ID0gc2VsZWN0b3JzOyB9CiAKQEAgLTY3LDYgKzY3
LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY29tcG9uZW50Q291bnQoKSBjb25zdDsKIAor
ICAgIENTU1NlbGVjdG9yTGlzdCYgb3BlcmF0b3I9KENTU1NlbGVjdG9yTGlzdCYmKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIGRlbGV0ZVNlbGVjdG9ycygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5oCShyZXZpc2lvbiAxNjQ5MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICAKICAgICB2b2lkIHBh
cnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvcnMpOyB9Ci0gICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsg
fQorICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0ID0gc3RkOjptb3ZlKHNlbGVjdG9ycyk7IH0KICAgICB2
b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JBcnJheShDU1NTZWxlY3Rvciogc2VsZWN0b3JzKSB7IG1f
c2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JBcnJheShzZWxlY3RvcnMpOyB9CiAKICAgICBQYXNz
UmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVS
dWxlKCp0aGlzKSk7IH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAogICAgIHZvaWQgcGFyc2VyQWRv
cHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
Pj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVj
dG9ycyk7IH0KLSAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdChzZWxlY3RvcnMpOyB9CisgICAg
dm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMp
IHsgbV9zZWxlY3Rvckxpc3QgPSBzdGQ6Om1vdmUoc2VsZWN0b3JzKTsgfQogCiAgICAgUGFzc1Jl
ZjxTdHlsZVJ1bGVQYWdlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVQYWdlKCp0aGlzKSk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAkocmV2aXNpb24gMTY0OTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxMCArMzUsNDEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
c3RhdGljIGJvb2wgaXNTaW5nbGVUYWdOYW1lU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNl
bGVjdG9yKQoreworICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBz
ZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpUYWc7Cit9CisKK3N0YXRpYyBib29sIGlz
U2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQorewor
ICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBzZWxlY3Rvci5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpDbGFzczsKK30KKyNlbmRpZgorCitlbnVtIGNsYXNzIElkTWF0
Y2hpbmdUeXBlIDogdWludDhfdCB7CisgICAgTm9uZSwKKyAgICBSaWdodG1vc3QsCisgICAgRmls
dGVyCit9OworCitzdGF0aWMgSWRNYXRjaGluZ1R5cGUgZmluZElkTWF0Y2hpbmdUeXBlKGNvbnN0
IENTU1NlbGVjdG9yJiBmaXJzdFNlbGVjdG9yKQogewotICAgIEFTU0VSVChtX3NlbGVjdG9ycy5p
c0VtcHR5KCkpOworICAgIGJvb2wgaW5SaWdodG1vc3QgPSB0cnVlOworICAgIGZvciAoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gJmZpcnN0U2VsZWN0b3I7IHNlbGVjdG9yOyBzZWxlY3Rv
ciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpJZCkgeworICAgICAgICAgICAgaWYgKGluUmlnaHRtb3N0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OworICAgICAg
ICAgICAgcmV0dXJuIElkTWF0Y2hpbmdUeXBlOjpGaWx0ZXI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAg
ICAgICAgICAgIGluUmlnaHRtb3N0ID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBJZE1hdGNo
aW5nVHlwZTo6Tm9uZTsKK30KIAorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdChj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKICAgICB1bnNpZ25lZCBzZWxl
Y3RvckNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNl
bGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6
Om5leHQoc2VsZWN0b3IpKQogICAgICAgICBzZWxlY3RvckNvdW50Kys7CkBAIC00Niw2ICs3Nywz
OSBAQCB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgCiAgICAgbV9zZWxl
Y3RvcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWxlY3RvckNvdW50KTsKICAgICBmb3IgKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rv
cjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQogICAgICAgICBt
X3NlbGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVjdG9yLCBTZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aDo6Y2FuVXNlKHNlbGVjdG9yKSkpOworCisgICAgaWYgKHNlbGVjdG9y
Q291bnQgPT0gMSkgeworICAgICAgICBjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IgPSAqbV9z
ZWxlY3RvcnMuZmlyc3QoKS5zZWxlY3RvcjsKKyAgICAgICAgaWYgKHNlbGVjdG9yLmlzTGFzdElu
VGFnSGlzdG9yeSgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLm1fbWF0Y2gpIHsK
KyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKKyAgICAgICAgICAgICAgICBtX21h
dGNoVHlwZSA9IFRhZ05hbWVNYXRjaDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgorICAgICAgICAgICAgICAgIG1fbWF0Y2hUeXBl
ID0gQ2xhc3NOYW1lTWF0Y2g7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9IFJpZ2h0
TW9zdFdpdGhJZE1hdGNoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9IENvbXBpbGFibGVTaW5nbGU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGZpbmRJZE1hdGNoaW5nVHlwZShzZWxlY3RvcikpIHsKKyAgICAg
ICAgICAgIGNhc2UgSWRNYXRjaGluZ1R5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgbV9tYXRj
aFR5cGUgPSBDb21waWxhYmxlU2luZ2xlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OgorICAgICAgICAgICAgICAgIG1f
bWF0Y2hUeXBlID0gUmlnaHRNb3N0V2l0aElkTWF0Y2g7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIElkTWF0Y2hpbmdUeXBlOjpGaWx0ZXI6CisgICAgICAgICAgICAg
ICAgbV9tYXRjaFR5cGUgPSBDb21waWxhYmxlU2luZ2xlV2l0aFJvb3RGaWx0ZXI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgbV9tYXRjaFR5cGUgPSBNdWx0aXBsZVNlbGVjdG9yTWF0Y2g7CiB9CiAKIGlubGluZSBi
b29sIFNlbGVjdG9yRGF0YUxpc3Q6OnNlbGVjdG9yTWF0Y2hlcyhjb25zdCBTZWxlY3RvckRhdGEm
IHNlbGVjdG9yRGF0YSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpIGNvbnN0CkBAIC0xNTcsOSArMjIxLDQyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxl
Y3RvckRhdGFMaXN0OjpleGUKICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBlbmRPdXRw
dXRGb3JFbGVtZW50KG91dHB1dCwgZWxlbWVudCk7CiB9CiAKLXN0YXRpYyBib29sIGlzU2luZ2xl
VGFnTmFtZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK3N0YXRpYyBDb250
YWluZXJOb2RlJiBmaWx0ZXJSb290QnlJZChDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3Qg
Q1NTU2VsZWN0b3ImIGZpcnN0U2VsZWN0b3IpCiB7Ci0gICAgcmV0dXJuIHNlbGVjdG9yLmlzTGFz
dEluVGFnSGlzdG9yeSgpICYmIHNlbGVjdG9yLm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlRhZzsK
KyAgICBpZiAoIXJvb3ROb2RlLmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3ROb2Rl
OworICAgIGlmIChyb290Tm9kZS5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKQorICAgICAgICBy
ZXR1cm4gcm9vdE5vZGU7CisKKyAgICAvLyBJZiB0aGVyZSB3YXMgYW4gSWQgbWF0Y2ggaW4gdGhl
IHJpZ2h0bW9zdCBTaW1wbGUgU2VsZWN0b3IsIHdlIHNob3VsZCBiZSBpbiBhIFJpZ2h0TW9zdFdp
dGhJZE1hdGNoLCBub3QgaW4gZmlsdGVyLgorICAgIC8vIFRodXMgd2UgY2FuIHNraXAgdGhlIHJp
Z2h0bW9zdCBtYXRjaC4KKyAgICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSAmZmlyc3RT
ZWxlY3RvcjsKKyAgICBkbyB7CisgICAgICAgIEFTU0VSVChzZWxlY3Rvci0+bV9tYXRjaCAhPSBD
U1NTZWxlY3Rvcjo6SWQpOworICAgICAgICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgIT0gQ1NT
U2VsZWN0b3I6OlN1YlNlbGVjdG9yKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHNlbGVj
dG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKTsKKyAgICB9IHdoaWxlIChzZWxlY3Rvcik7CisK
KyAgICBib29sIGluQWRqYWNlbnRDaGFpbiA9IGZhbHNlOworICAgIGZvciAoOyBzZWxlY3Rvcjsg
c2VsZWN0b3IgPSBzZWxlY3Rvci0+dGFnSGlzdG9yeSgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rv
ci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6SWQpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgaWRUb01hdGNoID0gc2VsZWN0b3ItPnZhbHVlKCk7CisgICAgICAgICAgICBpZiAo
Q29udGFpbmVyTm9kZSogc2VhcmNoUm9vdCA9IHJvb3ROb2RlLnRyZWVTY29wZSgpLmdldEVsZW1l
bnRCeUlkKGlkVG9NYXRjaCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoTElLRUxZKCFyb290Tm9k
ZS50cmVlU2NvcGUoKS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQoaWRUb01hdGNoKSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluQWRqYWNlbnRDaGFpbikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlYXJjaFJvb3QgPSBzZWFyY2hSb290LT5wYXJlbnROb2RlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzZWFyY2hSb290ICYmIChpc1RyZWVTY29wZVJvb3Qocm9vdE5v
ZGUpIHx8IHNlYXJjaFJvb3QgPT0gJnJvb3ROb2RlIHx8IHNlYXJjaFJvb3QtPmlzRGVzY2VuZGFu
dE9mKCZyb290Tm9kZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICpzZWFyY2hS
b290OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpZiAoc2VsZWN0b3ItPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50
IHx8IHNlbGVjdG9yLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50
KQorICAgICAgICAgICAgaW5BZGphY2VudENoYWluID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaW5BZGphY2VudENoYWluID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiByb290
Tm9kZTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KQEAgLTIx
NSwxMSArMzEyLDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZQog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNTaW5nbGVDbGFzc05hbWVTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3RvciYgc2VsZWN0b3IpCi17Ci0gICAgcmV0dXJuIHNlbGVjdG9yLmlzTGFzdEluVGFn
SGlzdG9yeSgpICYmIHNlbGVjdG9yLm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzOwotfQot
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgogQUxXQVlTX0lOTElORSB2
b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVTaW5nbGVDbGFzc05hbWVTZWxlY3RvckRhdGEo
Y29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IFNlbGVjdG9yRGF0YSYgc2VsZWN0
b3JEYXRhLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCkg
Y29uc3QKIHsKQEAgLTI3OCw1OSArMzcwLDg3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3Rv
ckRhdGFMaXN0OjpleGUKICAgICAgICAgfQogICAgIH0KIH0KLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFNlbGVjdG9yUXVlcnlUcmFpdD4KLUFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0
OjpleGVjdXRlQ29tcGlsZWRTZWxlY3RvckNoZWNrZXJXaXRoQ29udGV4dChjb25zdCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSwgU2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDaGVja2VyV2l0aENo
ZWNraW5nQ29udGV4dCBzZWxlY3RvckNoZWNrZXIsIGNvbnN0IFNlbGVjdG9yQ29tcGlsZXI6OkNo
ZWNraW5nQ29udGV4dCYgY29udGV4dCwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRw
dXRUeXBlJiBvdXRwdXQpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8RWxlbWVudD4oY29uc3RfY2FzdDxDb250YWluZXJOb2RlJj4ocm9vdE5vZGUp
KSkgewotICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2VyKCZlbGVtZW50LCAmY29udGV4dCkpIHsK
LSAgICAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0cHV0Rm9yRWxlbWVudChv
dXRwdXQsICZlbGVtZW50KTsKLSAgICAgICAgICAgIGlmIChTZWxlY3RvclF1ZXJ5VHJhaXQ6OnNo
b3VsZE9ubHlNYXRjaEZpcnN0RWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+CiBBTFdBWVNfSU5MSU5FIHZvaWQg
U2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZShDb250YWluZXJOb2RlJiByb290Tm9kZSwgdHlwZW5h
bWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJiBvdXRwdXQpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc2VsZWN0b3JzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGNvbnN0IFNlbGVjdG9yRGF0
YSYgc2VsZWN0b3JEYXRhID0gbV9zZWxlY3RvcnNbMF07Ci0gICAgICAgIGlmIChjb25zdCBDU1NT
ZWxlY3RvciogaWRTZWxlY3RvciA9IHNlbGVjdG9yRm9ySWRMb29rdXAocm9vdE5vZGUsICpzZWxl
Y3RvckRhdGEuc2VsZWN0b3IpKQotICAgICAgICAgICAgZXhlY3V0ZUZhc3RQYXRoRm9ySWRTZWxl
Y3RvcjxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3ROb2RlLCBzZWxlY3RvckRhdGEsIGlkU2VsZWN0
b3IsIG91dHB1dCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzU2luZ2xlVGFnTmFtZVNlbGVjdG9yKCpz
ZWxlY3RvckRhdGEuc2VsZWN0b3IpKQotICAgICAgICAgICAgZXhlY3V0ZVNpbmdsZVRhZ05hbWVT
ZWxlY3RvckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0Pihyb290Tm9kZSwgc2VsZWN0b3JEYXRhLCBv
dXRwdXQpOwotICAgICAgICBlbHNlIGlmIChpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKCpzZWxl
Y3RvckRhdGEuc2VsZWN0b3IpKQotICAgICAgICAgICAgZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNl
bGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3ROb2RlLCBzZWxlY3RvckRhdGEsIG91
dHB1dCk7Ci0gICAgICAgIGVsc2UgeworICAgIENvbnRhaW5lck5vZGUqIHNlYXJjaFJvb3ROb2Rl
ID0gJnJvb3ROb2RlOworICAgIHN3aXRjaCAobV9tYXRjaFR5cGUpIHsKKyAgICBjYXNlIFJpZ2h0
TW9zdFdpdGhJZE1hdGNoOgorICAgICAgICBpZiAoY29uc3QgQ1NTU2VsZWN0b3IqIGlkU2VsZWN0
b3IgPSBzZWxlY3RvckZvcklkTG9va3VwKCpzZWFyY2hSb290Tm9kZSwgKm1fc2VsZWN0b3JzLmZp
cnN0KCkuc2VsZWN0b3IpKSB7CisgICAgICAgICAgICBleGVjdXRlRmFzdFBhdGhGb3JJZFNlbGVj
dG9yPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNlYXJjaFJvb3ROb2RlLCBtX3NlbGVjdG9ycy5maXJz
dCgpLCBpZFNlbGVjdG9yLCBvdXRwdXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgY2FzZSBDb21waWxhYmxlU2luZ2xlV2l0aFJvb3RG
aWx0ZXI6CisgICAgY2FzZSBDb21waWxhYmxlU2luZ2xlOgorICAgICAgICB7CiAjaWYgRU5BQkxF
KENTU19TRUxFQ1RPUl9KSVQpCi0gICAgICAgICAgICB2b2lkKiBjb21waWxlZFNlbGVjdG9yQ2hl
Y2tlciA9IHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yQ29kZVJlZi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKLSAgICAgICAgICAgIGlmICghY29tcGlsZWRTZWxlY3RvckNoZWNrZXIg
JiYgc2VsZWN0b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzID09IFNlbGVjdG9yQ29tcGlsYXRpb25T
dGF0dXM6Ok5vdENvbXBpbGVkKSB7Ci0gICAgICAgICAgICAgICAgSlNDOjpWTSogdm0gPSByb290
Tm9kZS5kb2N1bWVudCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKTsKLSAgICAgICAg
ICAgICAgICBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgPSBTZWxlY3RvckNvbXBpbGVy
Ojpjb21waWxlU2VsZWN0b3Ioc2VsZWN0b3JEYXRhLnNlbGVjdG9yLCB2bSwgU2VsZWN0b3JDb21w
aWxlcjo6U2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9yLCBzZWxlY3RvckRhdGEuY29tcGls
ZWRTZWxlY3RvckNvZGVSZWYpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlbGVj
dG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyAhPSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzOjpT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBjb21w
aWxlZFNlbGVjdG9yQ2hlY2tlciA9IHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yQ29kZVJl
Zi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY29u
c3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEgPSBtX3NlbGVjdG9ycy5maXJzdCgpOworICAg
ICAgICBBU1NFUlQobV9tYXRjaFR5cGUgPT0gUmlnaHRNb3N0V2l0aElkTWF0Y2ggfHwgc2VsZWN0
b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzID09IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6Ok5v
dENvbXBpbGVkKTsKIAotICAgICAgICAgICAgaWYgKGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyKSB7
Ci0gICAgICAgICAgICAgICAgU2VsZWN0b3JDb21waWxlcjo6U2ltcGxlU2VsZWN0b3JDaGVja2Vy
IHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVjdG9yQ29tcGlsZXI6OnNpbXBsZVNlbGVjdG9yQ2hlY2tl
ckZ1bmN0aW9uKGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyLCBzZWxlY3RvckRhdGEuY29tcGlsYXRp
b25TdGF0dXMpOwotICAgICAgICAgICAgICAgIGV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9y
Q2hlY2tlcjxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3ROb2RlLCBzZWxlY3RvckNoZWNrZXIsIG91
dHB1dCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBKU0M6OlZNKiB2bSA9IHNl
YXJjaFJvb3ROb2RlLT5kb2N1bWVudCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKTsK
KyAgICAgICAgc2VsZWN0b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzID0gU2VsZWN0b3JDb21waWxl
cjo6Y29tcGlsZVNlbGVjdG9yKHNlbGVjdG9yRGF0YS5zZWxlY3Rvciwgdm0sIFNlbGVjdG9yQ29t
cGlsZXI6OlNlbGVjdG9yQ29udGV4dDo6UXVlcnlTZWxlY3Rvciwgc2VsZWN0b3JEYXRhLmNvbXBp
bGVkU2VsZWN0b3JDb2RlUmVmKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VsZWN0b3JEYXRh
LmNvbXBpbGF0aW9uU3RhdHVzICE9IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXM6OlNlbGVjdG9y
Q2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQpOworCisgICAgICAgIGlmIChzZWxlY3RvckRhdGEu
Y29tcGlsYXRpb25TdGF0dXMgPT0gU2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6U2ltcGxlU2Vs
ZWN0b3JDaGVja2VyKSB7CisgICAgICAgICAgICBpZiAobV9tYXRjaFR5cGUgPT0gQ29tcGlsYWJs
ZVNpbmdsZSkgeworICAgICAgICAgICAgICAgIG1fbWF0Y2hUeXBlID0gQ29tcGlsZWRTaW5nbGU7
CisgICAgICAgICAgICAgICAgZ290byBDb21waWxlZFNpbmdsZUNhc2U7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAobV9tYXRjaFR5cGUgPT0gQ29tcGlsYWJsZVNpbmdsZVdpdGhSb290
RmlsdGVyKSB7CisgICAgICAgICAgICAgICAgbV9tYXRjaFR5cGUgPSBDb21waWxlZFNpbmdsZVdp
dGhSb290RmlsdGVyOworICAgICAgICAgICAgICAgIGdvdG8gQ29tcGlsZWRTaW5nbGVXaXRoUm9v
dEZpbHRlckNhc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIENvbXBpbGVkU2lu
Z2xlQ2FzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9tYXRjaFR5cGUgIT0gUmlnaHRNb3N0
V2l0aElkTWF0Y2gpCisgICAgICAgICAgICBtX21hdGNoVHlwZSA9IFNpbmdsZVNlbGVjdG9yOwor
ICAgICAgICBnb3RvIFNpbmdsZVNlbGVjdG9yQ2FzZTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1JfSklU
KQotCi0gICAgICAgICAgICBleGVjdXRlU2luZ2xlU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlU
cmFpdD4ocm9vdE5vZGUsIHNlbGVjdG9yRGF0YSwgb3V0cHV0KTsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDb21waWxlZFNpbmdsZVdpdGhSb290RmlsdGVyOgorI2lmIEVO
QUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgIENvbXBpbGVkU2luZ2xlV2l0aFJvb3RGaWx0ZXJD
YXNlOgorICAgICAgICBzZWFyY2hSb290Tm9kZSA9ICZmaWx0ZXJSb290QnlJZCgqc2VhcmNoUm9v
dE5vZGUsICptX3NlbGVjdG9ycy5maXJzdCgpLnNlbGVjdG9yKTsKKyAgICAgICAgRkFMTFRIUk9V
R0g7CisjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgY2FzZSBDb21waWxl
ZFNpbmdsZToKKyNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyAgICAgICAgeworICAgICAg
ICBDb21waWxlZFNpbmdsZUNhc2U6CisgICAgICAgIGNvbnN0IFNlbGVjdG9yRGF0YSYgc2VsZWN0
b3JEYXRhID0gbV9zZWxlY3RvcnMuZmlyc3QoKTsKKyAgICAgICAgdm9pZCogY29tcGlsZWRTZWxl
Y3RvckNoZWNrZXIgPSBzZWxlY3RvckRhdGEuY29tcGlsZWRTZWxlY3RvckNvZGVSZWYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIFNlbGVjdG9yQ29tcGlsZXI6OlNpbXBsZVNl
bGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIgPSBTZWxlY3RvckNvbXBpbGVyOjpzaW1wbGVT
ZWxlY3RvckNoZWNrZXJGdW5jdGlvbihjb21waWxlZFNlbGVjdG9yQ2hlY2tlciwgc2VsZWN0b3JE
YXRhLmNvbXBpbGF0aW9uU3RhdHVzKTsKKyAgICAgICAgZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2Vs
ZWN0b3JDaGVja2VyPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNlYXJjaFJvb3ROb2RlLCBzZWxlY3Rv
ckNoZWNrZXIsIG91dHB1dCk7CisgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYgLy8g
RU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgY2FzZSBTaW5nbGVTZWxlY3RvcjoKKyNpZiBF
TkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyAgICAgICAgU2luZ2xlU2VsZWN0b3JDYXNlOgorI2Vu
ZGlmCisgICAgICAgIGV4ZWN1dGVTaW5nbGVTZWxlY3RvckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0
Pigqc2VhcmNoUm9vdE5vZGUsIG1fc2VsZWN0b3JzLmZpcnN0KCksIG91dHB1dCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVGFnTmFtZU1hdGNoOgorICAgICAgICBleGVjdXRlU2luZ2xlVGFn
TmFtZVNlbGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KCpzZWFyY2hSb290Tm9kZSwgbV9z
ZWxlY3RvcnMuZmlyc3QoKSwgb3V0cHV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDbGFz
c05hbWVNYXRjaDoKKyAgICAgICAgZXhlY3V0ZVNpbmdsZUNsYXNzTmFtZVNlbGVjdG9yRGF0YTxT
ZWxlY3RvclF1ZXJ5VHJhaXQ+KCpzZWFyY2hSb290Tm9kZSwgbV9zZWxlY3RvcnMuZmlyc3QoKSwg
b3V0cHV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNdWx0aXBsZVNlbGVjdG9yTWF0Y2g6
CisgICAgICAgIGV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJh
aXQ+KCpzZWFyY2hSb290Tm9kZSwgb3V0cHV0KTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3RO
b2RlLCBvdXRwdXQpOwogfQogCi1TZWxlY3RvclF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KGNvbnN0IENT
U1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0KQorU2VsZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVy
eShDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3Rvckxpc3QpCiAgICAgOiBtX3NlbGVjdG9yTGlzdChz
ZWxlY3Rvckxpc3QpCisgICAgLCBtX3NlbGVjdG9ycyhtX3NlbGVjdG9yTGlzdCkKIHsKLSAgICBt
X3NlbGVjdG9ycy5pbml0aWFsaXplKG1fc2VsZWN0b3JMaXN0KTsKIH0KIAogU2VsZWN0b3JRdWVy
eSogU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIERvY3Vt
ZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zNTgsNyArNDc4LDcgQEAgU2Vs
ZWN0b3JRdWVyeSogU2VsZWN0b3JRdWVyeUNhY2hlOjphZGQoYwogICAgIGlmIChtX2VudHJpZXMu
c2l6ZSgpID09IG1heGltdW1TZWxlY3RvclF1ZXJ5Q2FjaGVTaXplKQogICAgICAgICBtX2VudHJp
ZXMucmVtb3ZlKG1fZW50cmllcy5iZWdpbigpKTsKICAgICAKLSAgICByZXR1cm4gbV9lbnRyaWVz
LmFkZChzZWxlY3RvcnMsIHN0ZDo6bWFrZV91bmlxdWU8U2VsZWN0b3JRdWVyeT4oc2VsZWN0b3JM
aXN0KSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2VudHJpZXMuYWRkKHNl
bGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1ZXJ5PihzdGQ6Om1vdmUoc2VsZWN0
b3JMaXN0KSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogdm9pZCBTZWxlY3RvclF1ZXJ5
Q2FjaGU6OmludmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCShy
ZXZpc2lvbiAxNjQ5MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NiwyMSArNDYsMjUgQEAgY2xhc3MgTm9kZUxpc3Q7
CiAKIGNsYXNzIFNlbGVjdG9yRGF0YUxpc3QgewogcHVibGljOgotICAgIHZvaWQgaW5pdGlhbGl6
ZShjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICBleHBsaWNpdCBTZWxlY3RvckRhdGFMaXN0
KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOwogICAgIGJvb2wgbWF0Y2hlcyhFbGVtZW50JikgY29u
c3Q7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbChDb250YWluZXJOb2RlJiByb290Tm9k
ZSkgY29uc3Q7CiAgICAgRWxlbWVudCogcXVlcnlGaXJzdChDb250YWluZXJOb2RlJiByb290Tm9k
ZSkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFNlbGVjdG9yRGF0YSB7Ci0gICAgICAg
IFNlbGVjdG9yRGF0YShjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hl
Y2thYmxlKSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNr
YWJsZSkgeyB9Ci0gICAgICAgIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICAgICAg
Ym9vbCBpc0Zhc3RDaGVja2FibGU7CisgICAgICAgIFNlbGVjdG9yRGF0YShjb25zdCBDU1NTZWxl
Y3Rvciogc2VsZWN0b3IsIGJvb2wgaXNGYXN0Q2hlY2thYmxlKQorICAgICAgICAgICAgOiBzZWxl
Y3RvcihzZWxlY3RvcikKKyAgICAgICAgICAgICwgaXNGYXN0Q2hlY2thYmxlKGlzRmFzdENoZWNr
YWJsZSkKKyAgICAgICAgeworICAgICAgICB9CiAKKyAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yOwogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQotICAgICAgICBtdXRhYmxl
IFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgY29tcGlsYXRpb25TdGF0dXM7CiAgICAgICAgIG11
dGFibGUgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29tcGlsZWRTZWxlY3RvckNvZGVSZWY7
CisgICAgICAgIG11dGFibGUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBjb21waWxhdGlvblN0
YXR1czsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyAgICAgICAgYm9vbCBp
c0Zhc3RDaGVja2FibGU7CiAgICAgfTsKIAogICAgIGJvb2wgc2VsZWN0b3JNYXRjaGVzKGNvbnN0
IFNlbGVjdG9yRGF0YSYsIEVsZW1lbnQmLCBjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSkg
Y29uc3Q7CkBAIC03MywxMCArNzcsMjAgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgU2VsZWN0b3JRdWVyeVRyYWl0PiB2b2lkIGV4ZWN1dGVTaW5nbGVNdWx0aVNlbGVjdG9yRGF0
YShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRy
YWl0OjpPdXRwdXRUeXBlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4gdm9pZCBleGVjdXRlQ29t
cGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXIoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUs
IFNlbGVjdG9yQ29tcGlsZXI6OlNpbXBsZVNlbGVjdG9yQ2hlY2tlciwgdHlwZW5hbWUgU2VsZWN0
b3JRdWVyeVRyYWl0OjpPdXRwdXRUeXBlJikgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFNlbGVjdG9yUXVlcnlUcmFpdD4gdm9pZCBleGVjdXRlQ29tcGlsZWRTZWxlY3RvckNoZWNrZXJX
aXRoQ29udGV4dChjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgU2VsZWN0b3JDb21waWxl
cjo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCwgY29uc3QgU2VsZWN0b3JDb21w
aWxlcjo6Q2hlY2tpbmdDb250ZXh0JiwgdHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0OjpPdXRw
dXRUeXBlJikgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAKICAg
ICBWZWN0b3I8U2VsZWN0b3JEYXRhPiBtX3NlbGVjdG9yczsKKyAgICBtdXRhYmxlIGVudW0gTWF0
Y2hUeXBlIHsKKyAgICAgICAgQ29tcGlsYWJsZVNpbmdsZSwKKyAgICAgICAgQ29tcGlsYWJsZVNp
bmdsZVdpdGhSb290RmlsdGVyLAorICAgICAgICBDb21waWxlZFNpbmdsZSwKKyAgICAgICAgQ29t
cGlsZWRTaW5nbGVXaXRoUm9vdEZpbHRlciwKKyAgICAgICAgU2luZ2xlU2VsZWN0b3IsCisgICAg
ICAgIFJpZ2h0TW9zdFdpdGhJZE1hdGNoLAorICAgICAgICBUYWdOYW1lTWF0Y2gsCisgICAgICAg
IENsYXNzTmFtZU1hdGNoLAorICAgICAgICBNdWx0aXBsZVNlbGVjdG9yTWF0Y2gsCisgICAgfSBt
X21hdGNoVHlwZTsKIH07CiAKIGNsYXNzIFNlbGVjdG9yUXVlcnkgewpAQCAtODQsMTQgKzk4LDE0
IEBAIGNsYXNzIFNlbGVjdG9yUXVlcnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2VsZWN0b3JRdWVyeShjb25zdCBDU1NTZWxlY3Rvckxp
c3QmKTsKKyAgICBleHBsaWNpdCBTZWxlY3RvclF1ZXJ5KENTU1NlbGVjdG9yTGlzdCYmKTsKICAg
ICBib29sIG1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwogICAgIFJlZlB0cjxOb2RlTGlzdD4gcXVl
cnlBbGwoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIGNvbnN0OwogICAgIEVsZW1lbnQqIHF1ZXJ5
Rmlyc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNl
bGVjdG9yRGF0YUxpc3QgbV9zZWxlY3RvcnM7CiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0
b3JMaXN0OworICAgIFNlbGVjdG9yRGF0YUxpc3QgbV9zZWxlY3RvcnM7CiB9OwogCiBjbGFzcyBT
ZWxlY3RvclF1ZXJ5Q2FjaGUgewpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0OTIxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDMt
MDEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIE9w
dGltaXplZCBxdWVyeVNlbGVjdG9yKEFsbCkgd2hlbiBzZWxlY3RvciBjb250YWlucyAjaWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjUwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBmYXN0L3NlbGVj
dG9ycy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLmh0bWw6IEFk
ZGVkLgorCiAyMDE0LTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIGxlYWtzIG1lbW9yeSBzdHJ1
Y3R1cmUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQt
ZmlsdGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Nl
bGVjdG9ycy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRl
cmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorVGVzdCB2
YXJpb3VzIGNhc2VzIHdoZW4gd2UgY29uc3RyYWluIGEgc2VsZWN0b3IgbWF0Y2hpbmcgdG8gYSBz
dWJ0cmVlIHNlbGVjdGVkIGJ5ICNJRAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
TWlzc2luZyBpZC4KK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm90VGhl
cmUgKiIpLmxlbmd0aCBpcyAwCisKK1RyaXZpYWwgZmlsdGVyaW5nLgorUEFTUyBkb2N1bWVudC5i
b2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNzaW1wbGUgbGkiKS5sZW5ndGggaXMgMQorUEFTUyBkb2N1
bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNzaW1wbGUgbGkiKVswXS5pZCBpcyAic2ltcGxl
VGFyZ2V0IgorCitJRCBpcyBhZGphY2VudCBvZiB0YXJnZXQuCitQQVNTIGRvY3VtZW50LmJvZHku
cXVlcnlTZWxlY3RvckFsbCgiI2RpcmVjdEFkamFjZW50Um9vdCtkaXYgbGkiKS5sZW5ndGggaXMg
MQorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkaXJlY3RBZGphY2VudFJv
b3QrZGl2IGxpIilbMF0uaWQgaXMgImRpcmVjdEFkamFjZW50VGFyZ2V0IgorUEFTUyBkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNpbmRpcmVjdEFkamFjZW50Um9vdH5kaXYgbGkiKS5s
ZW5ndGggaXMgMQorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNpbmRpcmVj
dEFkamFjZW50Um9vdH5kaXYgbGkiKVswXS5pZCBpcyAiaW5kaXJlY3RBZGphY2VudFRhcmdldCIK
KworRHVwbGljYXRlZCBJRHMuCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgi
I2R1cGxpY2F0ZWQgbGkiKS5sZW5ndGggaXMgMworUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2Vs
ZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIilbMF0uaWQgaXMgImR1cGxpY2F0ZWRUYXJnZXQxIgor
UEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIilbMV0u
aWQgaXMgImR1cGxpY2F0ZWRUYXJnZXQyIgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0
b3JBbGwoIiNkdXBsaWNhdGVkIGxpIilbMl0uaWQgaXMgImR1cGxpY2F0ZWRUYXJnZXQzIgorUEFT
UyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkK2RpdiBsaSIpLmxl
bmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0
ZWQrZGl2IGxpIilbMF0uaWQgaXMgInNpYmxpbmdPZkR1cGxpY2F0ZWQxIgorUEFTUyBkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkK2RpdiBsaSIpWzFdLmlkIGlzICJz
aWJsaW5nT2ZEdXBsaWNhdGVkMiIKKworRHVwbGljYXRlZCBJRHMgd2l0aCBhIG5vbi1kdXBsaWNh
dGVkIGFuY2VzdG9yLgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25E
dXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCBsaSIpLmxlbmd0aCBpcyAz
CitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJl
bnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIilbMF0uaWQgaXMgImRlZHVwbGljYXRlZFRh
cmdldDEiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0
ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIilbMV0uaWQgaXMgImRlZHVwbGlj
YXRlZFRhcmdldDIiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1
cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIilbMl0uaWQgaXMgImRl
ZHVwbGljYXRlZFRhcmdldDMiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgi
I25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkK2RpdiBsaSIpLmxl
bmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxp
Y2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkK2RpdiBsaSIpWzBdLmlkIGlzICJz
aWJsaW5nT2ZEZWR1cGxpY2F0ZWQxIgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JB
bGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCtkaXYgbGki
KVsxXS5pZCBpcyAic2libGluZ09mRGVkdXBsaWNhdGVkMiIKK1BBU1MgZG9jdW1lbnQuYm9keS5x
dWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlK2RpdiBsaSIp
Lmxlbmd0aCBpcyAxCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1
cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZStkaXYgbGkiKVswXS5pZCBpcyAic2libGluZ09mTm9u
RHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlIgorCitTaWJsaW5nIG9mIEhUTUwgZG9jdW1lbnQu
CitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2h0bWxEb2N1bWVudH4qICoi
KS5sZW5ndGggaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3It
aWQtZmlsdGVyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3Rv
cnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0ZXJpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzggQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWwgaWQ9
aHRtbERvY3VtZW50PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZGlzcGxh
eTpub25lIj4KKyAgICA8IS0tIFNpbXBsZSBjYXNlIC0tPgorICAgIDxkaXYgaWQ9c2ltcGxlPgor
ICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGkgaWQ9c2ltcGxlVGFyZ2V0PjwvbGk+CisgICAg
ICAgIDwvdWw+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIER1cGxpY2F0ZWQgSURzIGNhc2UgLS0+
CisgICAgPGRpdiBpZD1kdXBsaWNhdGVkPgorICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGkg
aWQ9ZHVwbGljYXRlZFRhcmdldDE+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgICAgPGRpdiBp
ZD1kdXBsaWNhdGVkPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgIDxsaSBpZD1k
dXBsaWNhdGVkVGFyZ2V0Mj48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpIGlk
PXNpYmxpbmdPZkR1cGxpY2F0ZWQxPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisK
KyAgICA8ZGl2IGlkPWR1cGxpY2F0ZWQ+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBp
ZD1kdXBsaWNhdGVkVGFyZ2V0Mz48L2xpPgorICAgICAgICA8L3VsPgorICAgIDwvZGl2PgorICAg
IDxkaXY+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBpZD1zaWJsaW5nT2ZEdXBsaWNh
dGVkMj48L2xpPgorICAgICAgICA8L3VsPgorICAgIDwvZGl2PgorCisgICAgPCEtLSBEdXBsaWNh
dGVkIElEcyBpbiBhIG5vbi1kdXBsaWNhdGVkIElEIC0tPgorICAgIDxkaXYgaWQ9bm9uRHVwbGlj
YXRlZFBhcmVudE9mRHVwbGljYXRlPgorICAgICAgICA8ZGl2IGlkPWRlZHVwbGljYXRlZD4KKyAg
ICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGkgaWQ9ZGVkdXBsaWNhdGVkVGFyZ2V0
MT48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgIDxkaXYgaWQ9ZGVkdXBsaWNh
dGVkPgorICAgICAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICAgICAgPGxpIGlkPWRl
ZHVwbGljYXRlZFRhcmdldDI+PC9saT4KKyAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPHVs
PgorICAgICAgICAgICAgICAgIDxsaSBpZD1zaWJsaW5nT2ZEZWR1cGxpY2F0ZWQxPjwvbGk+Cisg
ICAgICAgICAgICA8L3VsPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICA8ZGl2IGlkPWRlZHVw
bGljYXRlZD4KKyAgICAgICAgICAgIDx1bD4KKyAgICAgICAgICAgICAgICA8bGkgaWQ9ZGVkdXBs
aWNhdGVkVGFyZ2V0Mz48L2xpPgorICAgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXY+CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgPGxpIGlkPXNp
YmxpbmdPZkRlZHVwbGljYXRlZDI+PC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxs
aSBpZD1zaWJsaW5nT2ZOb25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGU+PC9saT4KKyAgICAg
ICAgPC91bD4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gSUQgYWRqYWNlbnQgb2YgdGFyZ2V0IC0t
PgorICAgIDxkaXYgaWQ9ZGlyZWN0QWRqYWNlbnRSb290PjwvZGl2PgorICAgIDxkaXY+CisgICAg
ICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBpZD0iZGlyZWN0QWRqYWNlbnRUYXJnZXQiPjwvbGk+
CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisKKyAgICA8IS0tIElEIGluZGlyZWN0IGFkamFj
ZW50IG9mIHRhcmdldCAtLT4KKyAgICA8ZGl2IGlkPWluZGlyZWN0QWRqYWNlbnRSb290PjwvZGl2
PgorICAgIDxkaXY+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8
dWw+CisgICAgICAgICAgICA8bGkgaWQ9ImluZGlyZWN0QWRqYWNlbnRUYXJnZXQiPjwvbGk+Cisg
ICAgICAgIDwvdWw+CisgICAgPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbignVGVzdCB2YXJpb3VzIGNhc2VzIHdoZW4gd2UgY29uc3RyYWluIGEgc2VsZWN0b3Ig
bWF0Y2hpbmcgdG8gYSBzdWJ0cmVlIHNlbGVjdGVkIGJ5ICNJRCcpOworCitkZWJ1ZygiTWlzc2lu
ZyBpZC4iKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub3RU
aGVyZSAqIikubGVuZ3RoJywgJzAnKTsKKworZGVidWcoIjxicj5Ucml2aWFsIGZpbHRlcmluZy4i
KTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNzaW1wbGUgbGki
KS5sZW5ndGgnLCAnMScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1
ZXJ5U2VsZWN0b3JBbGwoIiNzaW1wbGUgbGkiKVswXS5pZCcsICdzaW1wbGVUYXJnZXQnKTsKKwor
ZGVidWcoIjxicj5JRCBpcyBhZGphY2VudCBvZiB0YXJnZXQuIik7CitzaG91bGRCZSgnZG9jdW1l
bnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZGlyZWN0QWRqYWNlbnRSb290K2RpdiBsaSIpLmxl
bmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlT
ZWxlY3RvckFsbCgiI2RpcmVjdEFkamFjZW50Um9vdCtkaXYgbGkiKVswXS5pZCcsICdkaXJlY3RB
ZGphY2VudFRhcmdldCcpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFs
bCgiI2luZGlyZWN0QWRqYWNlbnRSb290fmRpdiBsaSIpLmxlbmd0aCcsICcxJyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2luZGlyZWN0
QWRqYWNlbnRSb290fmRpdiBsaSIpWzBdLmlkJywgJ2luZGlyZWN0QWRqYWNlbnRUYXJnZXQnKTsK
KworZGVidWcoIjxicj5EdXBsaWNhdGVkIElEcy4iKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5
LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIikubGVuZ3RoJywgJzMnKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGlj
YXRlZCBsaSIpWzBdLmlkJywgJ2R1cGxpY2F0ZWRUYXJnZXQxJyk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKVsx
XS5pZCcsICdkdXBsaWNhdGVkVGFyZ2V0MicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1
bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIilbMl0uaWQnLCAnZHVw
bGljYXRlZFRhcmdldDMnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JB
bGwoIiNkdXBsaWNhdGVkK2RpdiBsaSIpLmxlbmd0aCcsICcyJyk7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQrZGl2IGxp
IilbMF0uaWQnLCAnc2libGluZ09mRHVwbGljYXRlZDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCtkaXYgbGkiKVsx
XS5pZCcsICdzaWJsaW5nT2ZEdXBsaWNhdGVkMicpOworCitkZWJ1ZygiPGJyPkR1cGxpY2F0ZWQg
SURzIHdpdGggYSBub24tZHVwbGljYXRlZCBhbmNlc3Rvci4iKTsKK3Nob3VsZEJlKCdkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUg
I2RlZHVwbGljYXRlZCBsaSIpLmxlbmd0aCcsICczJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1
cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIilbMF0uaWQnLCAnZGVkdXBsaWNhdGVkVGFyZ2V0MScp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwo
IiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCBsaSIpWzFdLmlk
JywgJ2RlZHVwbGljYXRlZFRhcmdldDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1l
bnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRl
ICNkZWR1cGxpY2F0ZWQgbGkiKVsyXS5pZCcsICdkZWR1cGxpY2F0ZWRUYXJnZXQzJyk7CitzaG91
bGRCZSgnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVu
dE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQrZGl2IGxpIikubGVuZ3RoJywgJzInKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVw
bGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQrZGl2IGxpIilbMF0uaWQnLCAn
c2libGluZ09mRGVkdXBsaWNhdGVkMScpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVu
dC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUg
I2RlZHVwbGljYXRlZCtkaXYgbGkiKVsxXS5pZCcsICdzaWJsaW5nT2ZEZWR1cGxpY2F0ZWQyJyk7
CitzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRl
ZFBhcmVudE9mRHVwbGljYXRlK2RpdiBsaSIpLmxlbmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQ
YXJlbnRPZkR1cGxpY2F0ZStkaXYgbGkiKVswXS5pZCcsICdzaWJsaW5nT2ZOb25EdXBsaWNhdGVk
UGFyZW50T2ZEdXBsaWNhdGUnKTsKKworZGVidWcoIjxicj5TaWJsaW5nIG9mIEhUTUwgZG9jdW1l
bnQuIik7CitzaG91bGRCZSgnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjaHRtbERv
Y3VtZW50fiogKiIpLmxlbmd0aCcsICcwJyk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225558</attachid>
            <date>2014-03-01 12:04:11 -0800</date>
            <delta_ts>2014-03-01 12:04:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116502-20140301120410.patch</filename>
            <type>text/plain</type>
            <size>32047</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE0LTAzLTAxICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBPcHRpbWl6ZWQgcXVl
cnlTZWxlY3RvcihBbGwpIHdoZW4gc2VsZWN0b3IgY29udGFpbnMgI2lkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY1MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvc2VsZWN0b3JzL3F1
ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLmh0bWwKKworICAgICAgICBUaGUgaWRlYSBvZiB0aGlz
IHBhdGNoIGlzIHRvIHBlcmZvcm0gcXVlcnlTZWxlY3RvciBvbiBhIHN1YnRyZWUKKyAgICAgICAg
cm9vdGVkIGF0IHRoZSBsYXN0IGVsZW1lbnQgd2l0aCAjaWQgbWF0Y2hpbmcuIEZvciBleGFtcGxl
LCBpZiB3ZSBoYXZlIHRoZSBzZWxlY3RvcgorICAgICAgICAiI2Zvb2JhciBkaXYgYSIsIHdlIHN0
YXJ0IGJ5IGxvb2tpbmcgZm9yIHRoZSBlbGVtZW50IHdpdGggSUQgZm9vYmFyIGluIHRoZSBUcmVl
U2NvcGUKKyAgICAgICAgY2FjaGUsIGFuZCBzdGFydCBtYXRjaGluZyB0aGUgY2hpbGRyZW4gZnJv
bSB0aGVyZS4KKworICAgICAgICBUaGUgaWRlYSBjb21lcyBmcm9tIFJ1bmUgZm9yCisgICAgICAg
IGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9ibGluay8rLzFjZDgz
ZDM1ODg5NzNhMDJhYjE1ZDk0YjFiMDVhMjg2MjA4NTM2MjQKKyAgICAgICAgYnV0IHRoZSBjb2Rl
IGFzIGRpdmVyZ2VkIHRvbyBtdWNoIHNvIGl0IGhhZCB0byBiZSByZWltcGxlbWVudGVkIHNwZWNp
ZmljYWxseSBmb3IgV2ViS2l0LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6OkNTU1NlbGVjdG9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPSk6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0
Ojp+Q1NTU2VsZWN0b3JMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjp3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QpOgorICAg
ICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2luZ2xl
VGFnTmFtZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU2luZ2xlQ2xhc3NOYW1lU2Vs
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZElkTWF0Y2hpbmdUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsdGVyUm9vdEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JEYXRh
TGlzdDo6ZXhlY3V0ZUNvbXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JRdWVyeTo6U2VsZWN0b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclF1
ZXJ5Q2FjaGU6OmFkZCk6CisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yRGF0YUxpc3Q6OlNlbGVjdG9yRGF0YTo6U2VsZWN0b3JEYXRhKToK
KwogMjAxNC0wMi0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiBsZWFrcyBtZW1vcnkgc3RydWN0dXJl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAkocmV2aXNpb24gMTY0
OTIxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEyLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTMyLDExICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Q1NTU2VsZWN0b3JMaXN0Ojp+Q1NTU2VsZWN0b3JMaXN0KCkKLXsKLSAgICBkZWxldGVTZWxlY3Rv
cnMoKTsKLX0KLQogQ1NTU2VsZWN0b3JMaXN0OjpDU1NTZWxlY3Rvckxpc3QoY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiBvdGhlcikKIHsKICAgICB1bnNpZ25lZCBvdGhlckNvbXBvbmVudENvdW50ID0g
b3RoZXIuY29tcG9uZW50Q291bnQoKTsKQEAgLTQ1LDExICs0MCwxMCBAQCBDU1NTZWxlY3Rvckxp
c3Q6OkNTU1NlbGVjdG9yTGlzdChjb25zdCBDCiAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fc2Vs
ZWN0b3JBcnJheVtpXSkgQ1NTU2VsZWN0b3Iob3RoZXIubV9zZWxlY3RvckFycmF5W2ldKTsKIH0K
IAotdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0KENTU1NlbGVjdG9yTGlzdCYgbGlzdCkKK0NT
U1NlbGVjdG9yTGlzdDo6Q1NTU2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYmIG90aGVyKQor
ICAgIDogbV9zZWxlY3RvckFycmF5KG90aGVyLm1fc2VsZWN0b3JBcnJheSkKIHsKLSAgICBkZWxl
dGVTZWxlY3RvcnMoKTsKLSAgICBtX3NlbGVjdG9yQXJyYXkgPSBsaXN0Lm1fc2VsZWN0b3JBcnJh
eTsKLSAgICBsaXN0Lm1fc2VsZWN0b3JBcnJheSA9IDA7CisgICAgb3RoZXIubV9zZWxlY3RvckFy
cmF5ID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JW
ZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3Rv
clZlY3RvcikKQEAgLTk3LDYgKzkxLDE0IEBAIHVuc2lnbmVkIENTU1NlbGVjdG9yTGlzdDo6Y29t
cG9uZW50Q291bnQKICAgICByZXR1cm4gKGN1cnJlbnQgLSBtX3NlbGVjdG9yQXJyYXkpICsgMTsK
IH0KIAorQ1NTU2VsZWN0b3JMaXN0JiBDU1NTZWxlY3Rvckxpc3Q6Om9wZXJhdG9yPShDU1NTZWxl
Y3Rvckxpc3QmJiBvdGhlcikKK3sKKyAgICBkZWxldGVTZWxlY3RvcnMoKTsKKyAgICBtX3NlbGVj
dG9yQXJyYXkgPSBvdGhlci5tX3NlbGVjdG9yQXJyYXk7CisgICAgb3RoZXIubV9zZWxlY3RvckFy
cmF5ID0gbnVsbHB0cjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIHZvaWQgQ1NTU2VsZWN0b3JM
aXN0OjpkZWxldGVTZWxlY3RvcnMoKQogewogICAgIGlmICghbV9zZWxlY3RvckFycmF5KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAkocmV2aXNpb24gMTY0OTIxKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwx
MCArMzgsMTAgQEAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0IHsKIHB1YmxpYzoKICAgICBDU1NTZWxl
Y3Rvckxpc3QoKSA6IG1fc2VsZWN0b3JBcnJheSgwKSB7IH0KICAgICBDU1NTZWxlY3Rvckxpc3Qo
Y29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CisgICAgQ1NTU2VsZWN0b3JMaXN0KENTU1NlbGVjdG9y
TGlzdCYmKTsKIAotICAgIH5DU1NTZWxlY3Rvckxpc3QoKTsKKyAgICB+Q1NTU2VsZWN0b3JMaXN0
KCkgeyBkZWxldGVTZWxlY3RvcnMoKTsgfQogCi0gICAgdm9pZCBhZG9wdChDU1NTZWxlY3Rvckxp
c3QmIGxpc3QpOwogICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9yVmVjdG9yKTsKICAgICB2b2lkIGFk
b3B0U2VsZWN0b3JBcnJheShDU1NTZWxlY3Rvciogc2VsZWN0b3JzKSB7IEFTU0VSVCghbV9zZWxl
Y3RvckFycmF5KTsgbV9zZWxlY3RvckFycmF5ID0gc2VsZWN0b3JzOyB9CiAKQEAgLTY3LDYgKzY3
LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY29tcG9uZW50Q291bnQoKSBjb25zdDsKIAor
ICAgIENTU1NlbGVjdG9yTGlzdCYgb3BlcmF0b3I9KENTU1NlbGVjdG9yTGlzdCYmKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIGRlbGV0ZVNlbGVjdG9ycygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5oCShyZXZpc2lvbiAxNjQ5MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICAKICAgICB2b2lkIHBh
cnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJT
ZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvcnMpOyB9Ci0gICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2Vs
ZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsg
fQorICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9yTGlzdCYgc2Vs
ZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0ID0gc3RkOjptb3ZlKHNlbGVjdG9ycyk7IH0KICAgICB2
b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JBcnJheShDU1NTZWxlY3Rvciogc2VsZWN0b3JzKSB7IG1f
c2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JBcnJheShzZWxlY3RvcnMpOyB9CiAKICAgICBQYXNz
UmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVS
dWxlKCp0aGlzKSk7IH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAogICAgIHZvaWQgcGFyc2VyQWRv
cHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9y
Pj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVj
dG9ycyk7IH0KLSAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxp
c3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdChzZWxlY3RvcnMpOyB9CisgICAg
dm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMp
IHsgbV9zZWxlY3Rvckxpc3QgPSBzdGQ6Om1vdmUoc2VsZWN0b3JzKTsgfQogCiAgICAgUGFzc1Jl
ZjxTdHlsZVJ1bGVQYWdlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHls
ZVJ1bGVQYWdlKCp0aGlzKSk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcAkocmV2aXNpb24gMTY0OTIxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVl
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxMCArMzUsNDEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29u
c3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
c3RhdGljIGJvb2wgaXNTaW5nbGVUYWdOYW1lU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNl
bGVjdG9yKQoreworICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBz
ZWxlY3Rvci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpUYWc7Cit9CisKK3N0YXRpYyBib29sIGlz
U2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQorewor
ICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBzZWxlY3Rvci5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpDbGFzczsKK30KKyNlbmRpZgorCitlbnVtIGNsYXNzIElkTWF0
Y2hpbmdUeXBlIDogdWludDhfdCB7CisgICAgTm9uZSwKKyAgICBSaWdodG1vc3QsCisgICAgRmls
dGVyCit9OworCitzdGF0aWMgSWRNYXRjaGluZ1R5cGUgZmluZElkTWF0Y2hpbmdUeXBlKGNvbnN0
IENTU1NlbGVjdG9yJiBmaXJzdFNlbGVjdG9yKQogewotICAgIEFTU0VSVChtX3NlbGVjdG9ycy5p
c0VtcHR5KCkpOworICAgIGJvb2wgaW5SaWdodG1vc3QgPSB0cnVlOworICAgIGZvciAoY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gJmZpcnN0U2VsZWN0b3I7IHNlbGVjdG9yOyBzZWxlY3Rv
ciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5KCkpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yLT5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpJZCkgeworICAgICAgICAgICAgaWYgKGluUmlnaHRtb3N0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OworICAgICAg
ICAgICAgcmV0dXJuIElkTWF0Y2hpbmdUeXBlOjpGaWx0ZXI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAg
ICAgICAgICAgIGluUmlnaHRtb3N0ID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBJZE1hdGNo
aW5nVHlwZTo6Tm9uZTsKK30KIAorU2VsZWN0b3JEYXRhTGlzdDo6U2VsZWN0b3JEYXRhTGlzdChj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCkKK3sKICAgICB1bnNpZ25lZCBzZWxl
Y3RvckNvdW50ID0gMDsKICAgICBmb3IgKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNl
bGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6
Om5leHQoc2VsZWN0b3IpKQogICAgICAgICBzZWxlY3RvckNvdW50Kys7CkBAIC00Niw2ICs3Nywz
OSBAQCB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmluaXRpYWxpemUoY29uc3QgCiAgICAgbV9zZWxl
Y3RvcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzZWxlY3RvckNvdW50KTsKICAgICBmb3IgKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxlY3Rv
cjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKQogICAgICAgICBt
X3NlbGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoU2VsZWN0b3JEYXRhKHNlbGVjdG9yLCBTZWxlY3Rv
ckNoZWNrZXJGYXN0UGF0aDo6Y2FuVXNlKHNlbGVjdG9yKSkpOworCisgICAgaWYgKHNlbGVjdG9y
Q291bnQgPT0gMSkgeworICAgICAgICBjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IgPSAqbV9z
ZWxlY3RvcnMuZmlyc3QoKS5zZWxlY3RvcjsKKyAgICAgICAgaWYgKHNlbGVjdG9yLmlzTGFzdElu
VGFnSGlzdG9yeSgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNlbGVjdG9yLm1fbWF0Y2gpIHsK
KyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKKyAgICAgICAgICAgICAgICBtX21h
dGNoVHlwZSA9IFRhZ05hbWVNYXRjaDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNsYXNzOgorICAgICAgICAgICAgICAgIG1fbWF0Y2hUeXBl
ID0gQ2xhc3NOYW1lTWF0Y2g7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpJZDoKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9IFJpZ2h0
TW9zdFdpdGhJZE1hdGNoOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlwZSA9IENvbXBpbGFibGVTaW5nbGU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGZpbmRJZE1hdGNoaW5nVHlwZShzZWxlY3RvcikpIHsKKyAgICAg
ICAgICAgIGNhc2UgSWRNYXRjaGluZ1R5cGU6Ok5vbmU6CisgICAgICAgICAgICAgICAgbV9tYXRj
aFR5cGUgPSBDb21waWxhYmxlU2luZ2xlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBJZE1hdGNoaW5nVHlwZTo6UmlnaHRtb3N0OgorICAgICAgICAgICAgICAgIG1f
bWF0Y2hUeXBlID0gUmlnaHRNb3N0V2l0aElkTWF0Y2g7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIElkTWF0Y2hpbmdUeXBlOjpGaWx0ZXI6CisgICAgICAgICAgICAg
ICAgbV9tYXRjaFR5cGUgPSBDb21waWxhYmxlU2luZ2xlV2l0aFJvb3RGaWx0ZXI7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAg
ICAgICAgbV9tYXRjaFR5cGUgPSBNdWx0aXBsZVNlbGVjdG9yTWF0Y2g7CiB9CiAKIGlubGluZSBi
b29sIFNlbGVjdG9yRGF0YUxpc3Q6OnNlbGVjdG9yTWF0Y2hlcyhjb25zdCBTZWxlY3RvckRhdGEm
IHNlbGVjdG9yRGF0YSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpIGNvbnN0CkBAIC0xNTcsMTAgKzIyMSw0NSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2Vs
ZWN0b3JEYXRhTGlzdDo6ZXhlCiAgICAgICAgIFNlbGVjdG9yUXVlcnlUcmFpdDo6YXBwZW5kT3V0
cHV0Rm9yRWxlbWVudChvdXRwdXQsIGVsZW1lbnQpOwogfQogCi1zdGF0aWMgYm9vbCBpc1Npbmds
ZVRhZ05hbWVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciYgc2VsZWN0b3IpCisjaWYgRU5BQkxF
KENTU19TRUxFQ1RPUl9KSVQpCitzdGF0aWMgQ29udGFpbmVyTm9kZSYgZmlsdGVyUm9vdEJ5SWQo
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIGNvbnN0IENTU1NlbGVjdG9yJiBmaXJzdFNlbGVjdG9y
KQogewotICAgIHJldHVybiBzZWxlY3Rvci5pc0xhc3RJblRhZ0hpc3RvcnkoKSAmJiBzZWxlY3Rv
ci5tX21hdGNoID09IENTU1NlbGVjdG9yOjpUYWc7CisgICAgaWYgKCFyb290Tm9kZS5pbkRvY3Vt
ZW50KCkpCisgICAgICAgIHJldHVybiByb290Tm9kZTsKKyAgICBpZiAocm9vdE5vZGUuZG9jdW1l
bnQoKS5pblF1aXJrc01vZGUoKSkKKyAgICAgICAgcmV0dXJuIHJvb3ROb2RlOworCisgICAgLy8g
SWYgdGhlcmUgd2FzIGFuIElkIG1hdGNoIGluIHRoZSByaWdodG1vc3QgU2ltcGxlIFNlbGVjdG9y
LCB3ZSBzaG91bGQgYmUgaW4gYSBSaWdodE1vc3RXaXRoSWRNYXRjaCwgbm90IGluIGZpbHRlci4K
KyAgICAvLyBUaHVzIHdlIGNhbiBza2lwIHRoZSByaWdodG1vc3QgbWF0Y2guCisgICAgY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gJmZpcnN0U2VsZWN0b3I7CisgICAgZG8geworICAgICAg
ICBBU1NFUlQoc2VsZWN0b3ItPm1fbWF0Y2ggIT0gQ1NTU2VsZWN0b3I6OklkKTsKKyAgICAgICAg
aWYgKHNlbGVjdG9yLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLT50YWdIaXN0b3J5
KCk7CisgICAgfSB3aGlsZSAoc2VsZWN0b3IpOworCisgICAgYm9vbCBpbkFkamFjZW50Q2hhaW4g
PSBmYWxzZTsKKyAgICBmb3IgKDsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hp
c3RvcnkoKSkgeworICAgICAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6
OklkKSB7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVG9NYXRjaCA9IHNlbGVj
dG9yLT52YWx1ZSgpOworICAgICAgICAgICAgaWYgKENvbnRhaW5lck5vZGUqIHNlYXJjaFJvb3Qg
PSByb290Tm9kZS50cmVlU2NvcGUoKS5nZXRFbGVtZW50QnlJZChpZFRvTWF0Y2gpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKExJS0VMWSghcm9vdE5vZGUudHJlZVNjb3BlKCkuY29udGFpbnNNdWx0
aXBsZUVsZW1lbnRzV2l0aElkKGlkVG9NYXRjaCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpbkFkamFjZW50Q2hhaW4pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hSb290ID0g
c2VhcmNoUm9vdC0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2VhcmNo
Um9vdCAmJiAoaXNUcmVlU2NvcGVSb290KHJvb3ROb2RlKSB8fCBzZWFyY2hSb290ID09ICZyb290
Tm9kZSB8fCBzZWFyY2hSb290LT5pc0Rlc2NlbmRhbnRPZigmcm9vdE5vZGUpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAqc2VhcmNoUm9vdDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNlbGVjdG9yLT5yZWxhdGlvbigp
ID09IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudCB8fCBzZWxlY3Rvci0+cmVsYXRpb24oKSA9
PSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudCkKKyAgICAgICAgICAgIGluQWRqYWNlbnRD
aGFpbiA9IHRydWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluQWRqYWNlbnRDaGFpbiA9
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gcm9vdE5vZGU7CiB9CisjZW5kaWYKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4KIHN0YXRpYyBpbmxpbmUgdm9pZCBlbGVt
ZW50c0ZvckxvY2FsTmFtZShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6T3V0cHV0
VHlwZSYgb3V0cHV0KQpAQCAtMjE1LDExICszMTQsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2Vs
ZWN0b3JEYXRhTGlzdDo6ZXhlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc1NpbmdsZUNsYXNz
TmFtZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKLXsKLSAgICByZXR1cm4g
c2VsZWN0b3IuaXNMYXN0SW5UYWdIaXN0b3J5KCkgJiYgc2VsZWN0b3IubV9tYXRjaCA9PSBDU1NT
ZWxlY3Rvcjo6Q2xhc3M7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJh
aXQ+CiBBTFdBWVNfSU5MSU5FIHZvaWQgU2VsZWN0b3JEYXRhTGlzdDo6ZXhlY3V0ZVNpbmdsZUNs
YXNzTmFtZVNlbGVjdG9yRGF0YShjb25zdCBDb250YWluZXJOb2RlJiByb290Tm9kZSwgY29uc3Qg
U2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEsIHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdDo6
T3V0cHV0VHlwZSYgb3V0cHV0KSBjb25zdAogewpAQCAtMjc4LDU5ICszNzIsODcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZQogICAgICAgICB9CiAgICAgfQogfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PgotQUxXQVlTX0lOTElORSB2
b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGVDb21waWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhD
b250ZXh0KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBTZWxlY3RvckNvbXBpbGVyOjpT
ZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0IHNlbGVjdG9yQ2hlY2tlciwgY29uc3Qg
U2VsZWN0b3JDb21waWxlcjo6Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCB0eXBlbmFtZSBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91dHB1dCkgY29uc3QKLXsKLSAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihjb25zdF9jYXN0PENvbnRh
aW5lck5vZGUmPihyb290Tm9kZSkpKSB7Ci0gICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIoJmVs
ZW1lbnQsICZjb250ZXh0KSkgewotICAgICAgICAgICAgU2VsZWN0b3JRdWVyeVRyYWl0OjphcHBl
bmRPdXRwdXRGb3JFbGVtZW50KG91dHB1dCwgJmVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKFNl
bGVjdG9yUXVlcnlUcmFpdDo6c2hvdWxkT25seU1hdGNoRmlyc3RFbGVtZW50KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X1NFTEVDVE9SX0pJVCkKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFNlbGVjdG9yUXVlcnlUcmFpdD4K
IEFMV0FZU19JTkxJTkUgdm9pZCBTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlKENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmIG91
dHB1dCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWxlY3RvcnMuc2l6ZSgpID09IDEpIHsKLSAgICAg
ICAgY29uc3QgU2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEgPSBtX3NlbGVjdG9yc1swXTsKLSAg
ICAgICAgaWYgKGNvbnN0IENTU1NlbGVjdG9yKiBpZFNlbGVjdG9yID0gc2VsZWN0b3JGb3JJZExv
b2t1cChyb290Tm9kZSwgKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBleGVj
dXRlRmFzdFBhdGhGb3JJZFNlbGVjdG9yPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUsIHNl
bGVjdG9yRGF0YSwgaWRTZWxlY3Rvciwgb3V0cHV0KTsKLSAgICAgICAgZWxzZSBpZiAoaXNTaW5n
bGVUYWdOYW1lU2VsZWN0b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBl
eGVjdXRlU2luZ2xlVGFnTmFtZVNlbGVjdG9yRGF0YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KHJvb3RO
b2RlLCBzZWxlY3RvckRhdGEsIG91dHB1dCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzU2luZ2xlQ2xh
c3NOYW1lU2VsZWN0b3IoKnNlbGVjdG9yRGF0YS5zZWxlY3RvcikpCi0gICAgICAgICAgICBleGVj
dXRlU2luZ2xlQ2xhc3NOYW1lU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5v
ZGUsIHNlbGVjdG9yRGF0YSwgb3V0cHV0KTsKLSAgICAgICAgZWxzZSB7CisgICAgQ29udGFpbmVy
Tm9kZSogc2VhcmNoUm9vdE5vZGUgPSAmcm9vdE5vZGU7CisgICAgc3dpdGNoIChtX21hdGNoVHlw
ZSkgeworICAgIGNhc2UgUmlnaHRNb3N0V2l0aElkTWF0Y2g6CisgICAgICAgIGlmIChjb25zdCBD
U1NTZWxlY3RvciogaWRTZWxlY3RvciA9IHNlbGVjdG9yRm9ySWRMb29rdXAoKnNlYXJjaFJvb3RO
b2RlLCAqbV9zZWxlY3RvcnMuZmlyc3QoKS5zZWxlY3RvcikpIHsKKyAgICAgICAgICAgIGV4ZWN1
dGVGYXN0UGF0aEZvcklkU2VsZWN0b3I8U2VsZWN0b3JRdWVyeVRyYWl0Pigqc2VhcmNoUm9vdE5v
ZGUsIG1fc2VsZWN0b3JzLmZpcnN0KCksIGlkU2VsZWN0b3IsIG91dHB1dCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICBjYXNlIENvbXBp
bGFibGVTaW5nbGVXaXRoUm9vdEZpbHRlcjoKKyAgICBjYXNlIENvbXBpbGFibGVTaW5nbGU6Cisg
ICAgICAgIHsKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKLSAgICAgICAgICAgIHZvaWQq
IGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyID0gc2VsZWN0b3JEYXRhLmNvbXBpbGVkU2VsZWN0b3JD
b2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgICAgICAgICAgaWYgKCFjb21w
aWxlZFNlbGVjdG9yQ2hlY2tlciAmJiBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgPT0g
U2VsZWN0b3JDb21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQpIHsKLSAgICAgICAgICAgICAg
ICBKU0M6OlZNKiB2bSA9IHJvb3ROb2RlLmRvY3VtZW50KCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT52bSgpOwotICAgICAgICAgICAgICAgIHNlbGVjdG9yRGF0YS5jb21waWxhdGlvblN0YXR1
cyA9IFNlbGVjdG9yQ29tcGlsZXI6OmNvbXBpbGVTZWxlY3RvcihzZWxlY3RvckRhdGEuc2VsZWN0
b3IsIHZtLCBTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNvbnRleHQ6OlF1ZXJ5U2VsZWN0b3Is
IHNlbGVjdG9yRGF0YS5jb21waWxlZFNlbGVjdG9yQ29kZVJlZik7Ci0gICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2VsZWN0b3JEYXRhLmNvbXBpbGF0aW9uU3RhdHVzICE9IFNlbGVjdG9y
Q29tcGlsYXRpb25TdGF0dXM6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQpOwot
ICAgICAgICAgICAgICAgIGNvbXBpbGVkU2VsZWN0b3JDaGVja2VyID0gc2VsZWN0b3JEYXRhLmNv
bXBpbGVkU2VsZWN0b3JDb2RlUmVmLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgICAg
ICAgICAgfQorICAgICAgICBjb25zdCBTZWxlY3RvckRhdGEmIHNlbGVjdG9yRGF0YSA9IG1fc2Vs
ZWN0b3JzLmZpcnN0KCk7CisgICAgICAgIEFTU0VSVChtX21hdGNoVHlwZSA9PSBSaWdodE1vc3RX
aXRoSWRNYXRjaCB8fCBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgPT0gU2VsZWN0b3JD
b21waWxhdGlvblN0YXR1czo6Tm90Q29tcGlsZWQpOwogCi0gICAgICAgICAgICBpZiAoY29tcGls
ZWRTZWxlY3RvckNoZWNrZXIpIHsKLSAgICAgICAgICAgICAgICBTZWxlY3RvckNvbXBpbGVyOjpT
aW1wbGVTZWxlY3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyID0gU2VsZWN0b3JDb21waWxlcjo6
c2ltcGxlU2VsZWN0b3JDaGVja2VyRnVuY3Rpb24oY29tcGlsZWRTZWxlY3RvckNoZWNrZXIsIHNl
bGVjdG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyk7Ci0gICAgICAgICAgICAgICAgZXhlY3V0ZUNv
bXBpbGVkU2ltcGxlU2VsZWN0b3JDaGVja2VyPFNlbGVjdG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUs
IHNlbGVjdG9yQ2hlY2tlciwgb3V0cHV0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIEpTQzo6Vk0qIHZtID0gc2VhcmNoUm9vdE5vZGUtPmRvY3VtZW50KCkuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT52bSgpOworICAgICAgICBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0
dXMgPSBTZWxlY3RvckNvbXBpbGVyOjpjb21waWxlU2VsZWN0b3Ioc2VsZWN0b3JEYXRhLnNlbGVj
dG9yLCB2bSwgU2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb250ZXh0OjpRdWVyeVNlbGVjdG9y
LCBzZWxlY3RvckRhdGEuY29tcGlsZWRTZWxlY3RvckNvZGVSZWYpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMgIT0gU2VsZWN0b3JDb21waWxh
dGlvblN0YXR1czo6U2VsZWN0b3JDaGVja2VyV2l0aENoZWNraW5nQ29udGV4dCk7CisKKyAgICAg
ICAgaWYgKHNlbGVjdG9yRGF0YS5jb21waWxhdGlvblN0YXR1cyA9PSBTZWxlY3RvckNvbXBpbGF0
aW9uU3RhdHVzOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIpIHsKKyAgICAgICAgICAgIGlmIChtX21h
dGNoVHlwZSA9PSBDb21waWxhYmxlU2luZ2xlKSB7CisgICAgICAgICAgICAgICAgbV9tYXRjaFR5
cGUgPSBDb21waWxlZFNpbmdsZTsKKyAgICAgICAgICAgICAgICBnb3RvIENvbXBpbGVkU2luZ2xl
Q2FzZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX21hdGNoVHlwZSA9PSBDb21w
aWxhYmxlU2luZ2xlV2l0aFJvb3RGaWx0ZXIpIHsKKyAgICAgICAgICAgICAgICBtX21hdGNoVHlw
ZSA9IENvbXBpbGVkU2luZ2xlV2l0aFJvb3RGaWx0ZXI7CisgICAgICAgICAgICAgICAgZ290byBD
b21waWxlZFNpbmdsZVdpdGhSb290RmlsdGVyQ2FzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGdvdG8gQ29tcGlsZWRTaW5nbGVDYXNlOworICAgICAgICB9CisgICAgICAgIGlmIChtX21h
dGNoVHlwZSAhPSBSaWdodE1vc3RXaXRoSWRNYXRjaCkKKyAgICAgICAgICAgIG1fbWF0Y2hUeXBl
ID0gU2luZ2xlU2VsZWN0b3I7CisgICAgICAgIGdvdG8gU2luZ2xlU2VsZWN0b3JDYXNlOworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5B
QkxFKENTU19TRUxFQ1RPUl9KSVQpCi0KLSAgICAgICAgICAgIGV4ZWN1dGVTaW5nbGVTZWxlY3Rv
ckRhdGE8U2VsZWN0b3JRdWVyeVRyYWl0Pihyb290Tm9kZSwgc2VsZWN0b3JEYXRhLCBvdXRwdXQp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKKyAgICBjYXNlIENvbXBpbGVkU2luZ2xlV2l0
aFJvb3RGaWx0ZXI6CisjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisgICAgQ29tcGlsZWRT
aW5nbGVXaXRoUm9vdEZpbHRlckNhc2U6CisgICAgICAgIHNlYXJjaFJvb3ROb2RlID0gJmZpbHRl
clJvb3RCeUlkKCpzZWFyY2hSb290Tm9kZSwgKm1fc2VsZWN0b3JzLmZpcnN0KCkuc2VsZWN0b3Ip
OworICAgICAgICBGQUxMVEhST1VHSDsKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJ
VCkKKyAgICBjYXNlIENvbXBpbGVkU2luZ2xlOgorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklU
KQorICAgICAgICB7CisgICAgICAgIENvbXBpbGVkU2luZ2xlQ2FzZToKKyAgICAgICAgY29uc3Qg
U2VsZWN0b3JEYXRhJiBzZWxlY3RvckRhdGEgPSBtX3NlbGVjdG9ycy5maXJzdCgpOworICAgICAg
ICB2b2lkKiBjb21waWxlZFNlbGVjdG9yQ2hlY2tlciA9IHNlbGVjdG9yRGF0YS5jb21waWxlZFNl
bGVjdG9yQ29kZVJlZi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgU2VsZWN0
b3JDb21waWxlcjo6U2ltcGxlU2VsZWN0b3JDaGVja2VyIHNlbGVjdG9yQ2hlY2tlciA9IFNlbGVj
dG9yQ29tcGlsZXI6OnNpbXBsZVNlbGVjdG9yQ2hlY2tlckZ1bmN0aW9uKGNvbXBpbGVkU2VsZWN0
b3JDaGVja2VyLCBzZWxlY3RvckRhdGEuY29tcGlsYXRpb25TdGF0dXMpOworICAgICAgICBleGVj
dXRlQ29tcGlsZWRTaW1wbGVTZWxlY3RvckNoZWNrZXI8U2VsZWN0b3JRdWVyeVRyYWl0Pigqc2Vh
cmNoUm9vdE5vZGUsIHNlbGVjdG9yQ2hlY2tlciwgb3V0cHV0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyAgICBjYXNlIFNp
bmdsZVNlbGVjdG9yOgorI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQorICAgICAgICBTaW5n
bGVTZWxlY3RvckNhc2U6CisjZW5kaWYKKyAgICAgICAgZXhlY3V0ZVNpbmdsZVNlbGVjdG9yRGF0
YTxTZWxlY3RvclF1ZXJ5VHJhaXQ+KCpzZWFyY2hSb290Tm9kZSwgbV9zZWxlY3RvcnMuZmlyc3Qo
KSwgb3V0cHV0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUYWdOYW1lTWF0Y2g6CisgICAg
ICAgIGV4ZWN1dGVTaW5nbGVUYWdOYW1lU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4o
KnNlYXJjaFJvb3ROb2RlLCBtX3NlbGVjdG9ycy5maXJzdCgpLCBvdXRwdXQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENsYXNzTmFtZU1hdGNoOgorICAgICAgICBleGVjdXRlU2luZ2xlQ2xh
c3NOYW1lU2VsZWN0b3JEYXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNlYXJjaFJvb3ROb2RlLCBt
X3NlbGVjdG9ycy5maXJzdCgpLCBvdXRwdXQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE11
bHRpcGxlU2VsZWN0b3JNYXRjaDoKKyAgICAgICAgZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JE
YXRhPFNlbGVjdG9yUXVlcnlUcmFpdD4oKnNlYXJjaFJvb3ROb2RlLCBvdXRwdXQpOworICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgZXhlY3V0ZVNpbmdsZU11bHRpU2VsZWN0b3JEYXRhPFNlbGVj
dG9yUXVlcnlUcmFpdD4ocm9vdE5vZGUsIG91dHB1dCk7CiB9CiAKLVNlbGVjdG9yUXVlcnk6OlNl
bGVjdG9yUXVlcnkoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3Rvckxpc3QpCitTZWxlY3Rv
clF1ZXJ5OjpTZWxlY3RvclF1ZXJ5KENTU1NlbGVjdG9yTGlzdCYmIHNlbGVjdG9yTGlzdCkKICAg
ICA6IG1fc2VsZWN0b3JMaXN0KHNlbGVjdG9yTGlzdCkKKyAgICAsIG1fc2VsZWN0b3JzKG1fc2Vs
ZWN0b3JMaXN0KQogewotICAgIG1fc2VsZWN0b3JzLmluaXRpYWxpemUobV9zZWxlY3Rvckxpc3Qp
OwogfQogCiBTZWxlY3RvclF1ZXJ5KiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgRG9jdW1lbnQmIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTM1OCw3ICs0ODAsNyBAQCBTZWxlY3RvclF1ZXJ5KiBTZWxlY3RvclF1ZXJ5Q2FjaGU6OmFkZChj
CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNp
emUpCiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLmJlZ2luKCkpOwogICAgIAot
ICAgIHJldHVybiBtX2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxl
Y3RvclF1ZXJ5PihzZWxlY3Rvckxpc3QpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0
dXJuIG1fZW50cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVl
cnk+KHN0ZDo6bW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQog
CiB2b2lkIFNlbGVjdG9yUXVlcnlDYWNoZTo6aW52YWxpZGF0ZSgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2VsZWN0b3JRdWVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmgJKHJldmlzaW9uIDE2NDkyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDIxICs0Niwy
NSBAQCBjbGFzcyBOb2RlTGlzdDsKIAogY2xhc3MgU2VsZWN0b3JEYXRhTGlzdCB7CiBwdWJsaWM6
Ci0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOworICAgIGV4cGxp
Y2l0IFNlbGVjdG9yRGF0YUxpc3QoY29uc3QgQ1NTU2VsZWN0b3JMaXN0Jik7CiAgICAgYm9vbCBt
YXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IHF1ZXJ5QWxsKENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKICAgICBFbGVtZW50KiBxdWVyeUZpcnN0KENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU2Vs
ZWN0b3JEYXRhIHsKLSAgICAgICAgU2VsZWN0b3JEYXRhKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpIDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBpc0Zhc3RD
aGVja2FibGUoaXNGYXN0Q2hlY2thYmxlKSB7IH0KLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yOwotICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsKKyAgICAgICAgU2VsZWN0
b3JEYXRhKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUp
CisgICAgICAgICAgICA6IHNlbGVjdG9yKHNlbGVjdG9yKQorICAgICAgICAgICAgLCBpc0Zhc3RD
aGVja2FibGUoaXNGYXN0Q2hlY2thYmxlKQorICAgICAgICB7CisgICAgICAgIH0KIAorICAgICAg
ICBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9K
SVQpCi0gICAgICAgIG11dGFibGUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBjb21waWxhdGlv
blN0YXR1czsKICAgICAgICAgbXV0YWJsZSBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb21w
aWxlZFNlbGVjdG9yQ29kZVJlZjsKKyAgICAgICAgbXV0YWJsZSBTZWxlY3RvckNvbXBpbGF0aW9u
U3RhdHVzIGNvbXBpbGF0aW9uU3RhdHVzOwogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNUT1Jf
SklUKQorICAgICAgICBib29sIGlzRmFzdENoZWNrYWJsZTsKICAgICB9OwogCiAgICAgYm9vbCBz
ZWxlY3Rvck1hdGNoZXMoY29uc3QgU2VsZWN0b3JEYXRhJiwgRWxlbWVudCYsIGNvbnN0IENvbnRh
aW5lck5vZGUmIHJvb3ROb2RlKSBjb25zdDsKQEAgLTczLDEwICs3NywyMCBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ+IHZvaWQgZXhlY3V0ZVNp
bmdsZU11bHRpU2VsZWN0b3JEYXRhKGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCB0eXBl
bmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmKSBjb25zdDsKICNpZiBFTkFCTEUo
Q1NTX1NFTEVDVE9SX0pJVCkKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRy
YWl0PiB2b2lkIGV4ZWN1dGVDb21waWxlZFNpbXBsZVNlbGVjdG9yQ2hlY2tlcihjb25zdCBDb250
YWluZXJOb2RlJiByb290Tm9kZSwgU2VsZWN0b3JDb21waWxlcjo6U2ltcGxlU2VsZWN0b3JDaGVj
a2VyLCB0eXBlbmFtZSBTZWxlY3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2VsZWN0b3JRdWVyeVRyYWl0PiB2b2lkIGV4ZWN1dGVDb21w
aWxlZFNlbGVjdG9yQ2hlY2tlcldpdGhDb250ZXh0KGNvbnN0IENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlLCBTZWxlY3RvckNvbXBpbGVyOjpTZWxlY3RvckNoZWNrZXJXaXRoQ2hlY2tpbmdDb250ZXh0
LCBjb25zdCBTZWxlY3RvckNvbXBpbGVyOjpDaGVja2luZ0NvbnRleHQmLCB0eXBlbmFtZSBTZWxl
Y3RvclF1ZXJ5VHJhaXQ6Ok91dHB1dFR5cGUmKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X1NFTEVDVE9SX0pJVCkKIAogICAgIFZlY3RvcjxTZWxlY3RvckRhdGE+IG1fc2VsZWN0b3JzOwor
ICAgIG11dGFibGUgZW51bSBNYXRjaFR5cGUgeworICAgICAgICBDb21waWxhYmxlU2luZ2xlLAor
ICAgICAgICBDb21waWxhYmxlU2luZ2xlV2l0aFJvb3RGaWx0ZXIsCisgICAgICAgIENvbXBpbGVk
U2luZ2xlLAorICAgICAgICBDb21waWxlZFNpbmdsZVdpdGhSb290RmlsdGVyLAorICAgICAgICBT
aW5nbGVTZWxlY3RvciwKKyAgICAgICAgUmlnaHRNb3N0V2l0aElkTWF0Y2gsCisgICAgICAgIFRh
Z05hbWVNYXRjaCwKKyAgICAgICAgQ2xhc3NOYW1lTWF0Y2gsCisgICAgICAgIE11bHRpcGxlU2Vs
ZWN0b3JNYXRjaCwKKyAgICB9IG1fbWF0Y2hUeXBlOwogfTsKIAogY2xhc3MgU2VsZWN0b3JRdWVy
eSB7CkBAIC04NCwxNCArOTgsMTQgQEAgY2xhc3MgU2VsZWN0b3JRdWVyeSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTZWxlY3RvclF1ZXJ5
KGNvbnN0IENTU1NlbGVjdG9yTGlzdCYpOworICAgIGV4cGxpY2l0IFNlbGVjdG9yUXVlcnkoQ1NT
U2VsZWN0b3JMaXN0JiYpOwogICAgIGJvb2wgbWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CiAgICAg
UmVmUHRyPE5vZGVMaXN0PiBxdWVyeUFsbChDb250YWluZXJOb2RlJiByb290Tm9kZSkgY29uc3Q7
CiAgICAgRWxlbWVudCogcXVlcnlGaXJzdChDb250YWluZXJOb2RlJiByb290Tm9kZSkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgU2VsZWN0b3JEYXRhTGlzdCBtX3NlbGVjdG9yczsKICAgICBDU1NT
ZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CisgICAgU2VsZWN0b3JEYXRhTGlzdCBtX3NlbGVj
dG9yczsKIH07CiAKIGNsYXNzIFNlbGVjdG9yUXVlcnlDYWNoZSB7CkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNjQ5MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxNC0wMy0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgT3B0aW1pemVkIHF1ZXJ5U2VsZWN0b3IoQWxsKSB3aGVuIHNlbGVj
dG9yIGNvbnRhaW5zICNpZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE2NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1p
ZC1maWx0ZXJpbmcuaHRtbDogQWRkZWQuCisKIDIwMTQtMDItMjggIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRp
b24gbGVha3MgbWVtb3J5IHN0cnVjdHVyZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3Rv
cnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0ZXJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1
ZXJ5U2VsZWN0b3ItaWQtZmlsdGVyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ0IEBACitUZXN0IHZhcmlvdXMgY2FzZXMgd2hlbiB3ZSBjb25zdHJhaW4gYSBzZWxl
Y3RvciBtYXRjaGluZyB0byBhIHN1YnRyZWUgc2VsZWN0ZWQgYnkgI0lECisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitNaXNzaW5nIGlkLgorUEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNub3RUaGVyZSAqIikubGVuZ3RoIGlzIDAKKworVHJpdmlhbCBmaWx0ZXJp
bmcuCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI3NpbXBsZSBsaSIpLmxl
bmd0aCBpcyAxCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI3NpbXBsZSBs
aSIpWzBdLmlkIGlzICJzaW1wbGVUYXJnZXQiCisKK0lEIGlzIGFkamFjZW50IG9mIHRhcmdldC4K
K1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZGlyZWN0QWRqYWNlbnRSb290
K2RpdiBsaSIpLmxlbmd0aCBpcyAxCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFs
bCgiI2RpcmVjdEFkamFjZW50Um9vdCtkaXYgbGkiKVswXS5pZCBpcyAiZGlyZWN0QWRqYWNlbnRU
YXJnZXQiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2luZGlyZWN0QWRq
YWNlbnRSb290fmRpdiBsaSIpLmxlbmd0aCBpcyAxCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlT
ZWxlY3RvckFsbCgiI2luZGlyZWN0QWRqYWNlbnRSb290fmRpdiBsaSIpWzBdLmlkIGlzICJpbmRp
cmVjdEFkamFjZW50VGFyZ2V0IgorCitEdXBsaWNhdGVkIElEcy4KK1BBU1MgZG9jdW1lbnQuYm9k
eS5xdWVyeVNlbGVjdG9yQWxsKCIjZHVwbGljYXRlZCBsaSIpLmxlbmd0aCBpcyAzCitQQVNTIGRv
Y3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKVswXS5pZCBpcyAi
ZHVwbGljYXRlZFRhcmdldDEiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgi
I2R1cGxpY2F0ZWQgbGkiKVsxXS5pZCBpcyAiZHVwbGljYXRlZFRhcmdldDIiCitQQVNTIGRvY3Vt
ZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKVsyXS5pZCBpcyAiZHVw
bGljYXRlZFRhcmdldDMiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1
cGxpY2F0ZWQrZGl2IGxpIikubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNl
bGVjdG9yQWxsKCIjZHVwbGljYXRlZCtkaXYgbGkiKVswXS5pZCBpcyAic2libGluZ09mRHVwbGlj
YXRlZDEiCitQQVNTIGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQr
ZGl2IGxpIilbMV0uaWQgaXMgInNpYmxpbmdPZkR1cGxpY2F0ZWQyIgorCitEdXBsaWNhdGVkIElE
cyB3aXRoIGEgbm9uLWR1cGxpY2F0ZWQgYW5jZXN0b3IuCitQQVNTIGRvY3VtZW50LmJvZHkucXVl
cnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNh
dGVkIGxpIikubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQgbGkiKVswXS5p
ZCBpcyAiZGVkdXBsaWNhdGVkVGFyZ2V0MSIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVj
dG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQgbGki
KVsxXS5pZCBpcyAiZGVkdXBsaWNhdGVkVGFyZ2V0MiIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVy
eVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0
ZWQgbGkiKVsyXS5pZCBpcyAiZGVkdXBsaWNhdGVkVGFyZ2V0MyIKK1BBU1MgZG9jdW1lbnQuYm9k
eS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1
cGxpY2F0ZWQrZGl2IGxpIikubGVuZ3RoIGlzIDIKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNl
bGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQr
ZGl2IGxpIilbMF0uaWQgaXMgInNpYmxpbmdPZkRlZHVwbGljYXRlZDEiCitQQVNTIGRvY3VtZW50
LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAj
ZGVkdXBsaWNhdGVkK2RpdiBsaSIpWzFdLmlkIGlzICJzaWJsaW5nT2ZEZWR1cGxpY2F0ZWQyIgor
UEFTUyBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50
T2ZEdXBsaWNhdGUrZGl2IGxpIikubGVuZ3RoIGlzIDEKK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVy
eVNlbGVjdG9yQWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlK2RpdiBsaSIpWzBd
LmlkIGlzICJzaWJsaW5nT2ZOb25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUiCisKK1NpYmxp
bmcgb2YgSFRNTCBkb2N1bWVudC4KK1BBU1MgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjaHRtbERvY3VtZW50fiogKiIpLmxlbmd0aCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zZWxl
Y3RvcnMvcXVlcnlTZWxlY3Rvci1pZC1maWx0ZXJpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLWlkLWZpbHRlcmluZy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1p
ZC1maWx0ZXJpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzOCBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbCBpZD1odG1sRG9jdW1lbnQ+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgIDwhLS0gU2ltcGxlIGNhc2UgLS0+Cisg
ICAgPGRpdiBpZD1zaW1wbGU+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBpZD1zaW1w
bGVUYXJnZXQ+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKworICAgIDwhLS0gRHVw
bGljYXRlZCBJRHMgY2FzZSAtLT4KKyAgICA8ZGl2IGlkPWR1cGxpY2F0ZWQ+CisgICAgICAgIDx1
bD4KKyAgICAgICAgICAgIDxsaSBpZD1kdXBsaWNhdGVkVGFyZ2V0MT48L2xpPgorICAgICAgICA8
L3VsPgorICAgICAgICA8ZGl2IGlkPWR1cGxpY2F0ZWQ+CisgICAgICAgICAgICA8dWw+CisgICAg
ICAgICAgICAgICAgPGxpIGlkPWR1cGxpY2F0ZWRUYXJnZXQyPjwvbGk+CisgICAgICAgICAgICA8
L3VsPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PgorICAgICAgICA8dWw+
CisgICAgICAgICAgICA8bGkgaWQ9c2libGluZ09mRHVwbGljYXRlZDE+PC9saT4KKyAgICAgICAg
PC91bD4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ZHVwbGljYXRlZD4KKyAgICAgICAgPHVs
PgorICAgICAgICAgICAgPGxpIGlkPWR1cGxpY2F0ZWRUYXJnZXQzPjwvbGk+CisgICAgICAgIDwv
dWw+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxp
IGlkPXNpYmxpbmdPZkR1cGxpY2F0ZWQyPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+
CisKKyAgICA8IS0tIER1cGxpY2F0ZWQgSURzIGluIGEgbm9uLWR1cGxpY2F0ZWQgSUQgLS0+Cisg
ICAgPGRpdiBpZD1ub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGU+CisgICAgICAgIDxkaXYg
aWQ9ZGVkdXBsaWNhdGVkPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgIDxsaSBp
ZD1kZWR1cGxpY2F0ZWRUYXJnZXQxPjwvbGk+CisgICAgICAgICAgICA8L3VsPgorICAgICAgICAg
ICAgPGRpdiBpZD1kZWR1cGxpY2F0ZWQ+CisgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAg
ICAgICAgICAgICA8bGkgaWQ9ZGVkdXBsaWNhdGVkVGFyZ2V0Mj48L2xpPgorICAgICAgICAgICAg
ICAgIDwvdWw+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxk
aXY+CisgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAgPGxpIGlkPXNpYmxpbmdPZkRl
ZHVwbGljYXRlZDE+PC9saT4KKyAgICAgICAgICAgIDwvdWw+CisgICAgICAgIDwvZGl2PgorCisg
ICAgICAgIDxkaXYgaWQ9ZGVkdXBsaWNhdGVkPgorICAgICAgICAgICAgPHVsPgorICAgICAgICAg
ICAgICAgIDxsaSBpZD1kZWR1cGxpY2F0ZWRUYXJnZXQzPjwvbGk+CisgICAgICAgICAgICA8L3Vs
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdj4KKyAgICAgICAgICAgIDx1bD4KKyAgICAg
ICAgICAgICAgICA8bGkgaWQ9c2libGluZ09mRGVkdXBsaWNhdGVkMj48L2xpPgorICAgICAgICAg
ICAgPC91bD4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgICAgPGRpdj4KKyAgICAgICAg
PHVsPgorICAgICAgICAgICAgPGxpIGlkPXNpYmxpbmdPZk5vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1
cGxpY2F0ZT48L2xpPgorICAgICAgICA8L3VsPgorICAgIDwvZGl2PgorCisgICAgPCEtLSBJRCBh
ZGphY2VudCBvZiB0YXJnZXQgLS0+CisgICAgPGRpdiBpZD1kaXJlY3RBZGphY2VudFJvb3Q+PC9k
aXY+CisgICAgPGRpdj4KKyAgICAgICAgPHVsPgorICAgICAgICAgICAgPGxpIGlkPSJkaXJlY3RB
ZGphY2VudFRhcmdldCI+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKworICAgIDwh
LS0gSUQgaW5kaXJlY3QgYWRqYWNlbnQgb2YgdGFyZ2V0IC0tPgorICAgIDxkaXYgaWQ9aW5kaXJl
Y3RBZGphY2VudFJvb3Q+PC9kaXY+CisgICAgPGRpdj48L2Rpdj4KKyAgICA8ZGl2PjwvZGl2Pgor
ICAgIDxkaXY+CisgICAgICAgIDx1bD4KKyAgICAgICAgICAgIDxsaSBpZD0iaW5kaXJlY3RBZGph
Y2VudFRhcmdldCI+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9i
b2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IHZhcmlvdXMgY2FzZXMgd2hlbiB3ZSBj
b25zdHJhaW4gYSBzZWxlY3RvciBtYXRjaGluZyB0byBhIHN1YnRyZWUgc2VsZWN0ZWQgYnkgI0lE
Jyk7CisKK2RlYnVnKCJNaXNzaW5nIGlkLiIpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVl
cnlTZWxlY3RvckFsbCgiI25vdFRoZXJlICoiKS5sZW5ndGgnLCAnMCcpOworCitkZWJ1ZygiPGJy
PlRyaXZpYWwgZmlsdGVyaW5nLiIpOworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxl
Y3RvckFsbCgiI3NpbXBsZSBsaSIpLmxlbmd0aCcsICcxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI3NpbXBsZSBsaSIpWzBdLmlkJywg
J3NpbXBsZVRhcmdldCcpOworCitkZWJ1ZygiPGJyPklEIGlzIGFkamFjZW50IG9mIHRhcmdldC4i
KTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNkaXJlY3RBZGph
Y2VudFJvb3QrZGl2IGxpIikubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjZGlyZWN0QWRqYWNlbnRSb290K2RpdiBs
aSIpWzBdLmlkJywgJ2RpcmVjdEFkamFjZW50VGFyZ2V0Jyk7CitzaG91bGRCZSgnZG9jdW1lbnQu
Ym9keS5xdWVyeVNlbGVjdG9yQWxsKCIjaW5kaXJlY3RBZGphY2VudFJvb3R+ZGl2IGxpIikubGVu
Z3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNl
bGVjdG9yQWxsKCIjaW5kaXJlY3RBZGphY2VudFJvb3R+ZGl2IGxpIilbMF0uaWQnLCAnaW5kaXJl
Y3RBZGphY2VudFRhcmdldCcpOworCitkZWJ1ZygiPGJyPkR1cGxpY2F0ZWQgSURzLiIpOworc2hv
dWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQgbGkiKS5s
ZW5ndGgnLCAnMycpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNkdXBsaWNhdGVkIGxpIilbMF0uaWQnLCAnZHVwbGljYXRlZFRhcmdldDEn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjZHVwbGljYXRlZCBsaSIpWzFdLmlkJywgJ2R1cGxpY2F0ZWRUYXJnZXQyJyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0
ZWQgbGkiKVsyXS5pZCcsICdkdXBsaWNhdGVkVGFyZ2V0MycpOworc2hvdWxkQmUoJ2RvY3VtZW50
LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI2R1cGxpY2F0ZWQrZGl2IGxpIikubGVuZ3RoJywgJzIn
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxs
KCIjZHVwbGljYXRlZCtkaXYgbGkiKVswXS5pZCcsICdzaWJsaW5nT2ZEdXBsaWNhdGVkMScpOwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNk
dXBsaWNhdGVkK2RpdiBsaSIpWzFdLmlkJywgJ3NpYmxpbmdPZkR1cGxpY2F0ZWQyJyk7CisKK2Rl
YnVnKCI8YnI+RHVwbGljYXRlZCBJRHMgd2l0aCBhIG5vbi1kdXBsaWNhdGVkIGFuY2VzdG9yLiIp
Oworc2hvdWxkQmUoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0
ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkIGxpIikubGVuZ3RoJywgJzMnKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIjbm9u
RHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlICNkZWR1cGxpY2F0ZWQgbGkiKVswXS5pZCcsICdk
ZWR1cGxpY2F0ZWRUYXJnZXQxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJv
ZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVk
dXBsaWNhdGVkIGxpIilbMV0uaWQnLCAnZGVkdXBsaWNhdGVkVGFyZ2V0MicpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoIiNub25EdXBsaWNh
dGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCBsaSIpWzJdLmlkJywgJ2RlZHVwbGlj
YXRlZFRhcmdldDMnKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwo
IiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRlZCtkaXYgbGkiKS5s
ZW5ndGgnLCAnMicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUgI2RlZHVwbGljYXRl
ZCtkaXYgbGkiKVswXS5pZCcsICdzaWJsaW5nT2ZEZWR1cGxpY2F0ZWQxJyk7CitzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2RvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiI25vbkR1cGxpY2F0
ZWRQYXJlbnRPZkR1cGxpY2F0ZSAjZGVkdXBsaWNhdGVkK2RpdiBsaSIpWzFdLmlkJywgJ3NpYmxp
bmdPZkRlZHVwbGljYXRlZDInKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0
b3JBbGwoIiNub25EdXBsaWNhdGVkUGFyZW50T2ZEdXBsaWNhdGUrZGl2IGxpIikubGVuZ3RoJywg
JzEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9y
QWxsKCIjbm9uRHVwbGljYXRlZFBhcmVudE9mRHVwbGljYXRlK2RpdiBsaSIpWzBdLmlkJywgJ3Np
YmxpbmdPZk5vbkR1cGxpY2F0ZWRQYXJlbnRPZkR1cGxpY2F0ZScpOworCitkZWJ1ZygiPGJyPlNp
Ymxpbmcgb2YgSFRNTCBkb2N1bWVudC4iKTsKK3Nob3VsZEJlKCdkb2N1bWVudC5ib2R5LnF1ZXJ5
U2VsZWN0b3JBbGwoIiNodG1sRG9jdW1lbnR+KiAqIikubGVuZ3RoJywgJzAnKTsKKworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>