<?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>153522</bug_id>
          
          <creation_ts>2016-01-26 16:13:45 -0800</creation_ts>
          <short_desc>window.atob() should ignore spaces in input</short_desc>
          <delta_ts>2016-01-27 14:38:00 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://html.spec.whatwg.org/#dom-windowbase64-atob</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159084</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-26 16:13:45 -0800</bug_when>
    <thetext>window.atob() should ignore spaces in input as per:
https://html.spec.whatwg.org/#dom-windowbase64-atob (Step 3)

Currently, WebKit throws an exception and it is the only browser to do so. Firefox and Chrome behavior according to the specification.

This causes us to fail 10 checks in the following W3C HTML test:
http://w3c-test.org/html/webappapis/atob/base64.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159085</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-26 16:14:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/24357822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159089</commentid>
    <comment_count>2</comment_count>
      <attachid>269945</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-26 16:20:43 -0800</bug_when>
    <thetext>Created attachment 269945
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159204</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-26 21:31:43 -0800</bug_when>
    <thetext>I&apos;m pretty sure that we have an old bug with a discussion of what a stupid idea this was :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159206</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-26 21:51:43 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m pretty sure that we have an old bug with a discussion of what a stupid
&gt; idea this was :(

I forgot about it but now that you mention it, it does ring a bell.

The thing is that the spec has not changed since, other browsers still strip whitespaces as well. It is now covered by the W3C web-platform-tests too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159220</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-26 22:48:08 -0800</bug_when>
    <thetext>bug 123830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159306</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 09:57:33 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; bug 123830

The fact at this point is that other browsers and the specification have been stripping spaces for several years now. Not doing this in WebKit is a compatibility risk and I think we should do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159308</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-27 10:07:08 -0800</bug_when>
    <thetext>I&apos;m afraid so, yes. It will probably change back eventually though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159329</commentid>
    <comment_count>8</comment_count>
      <attachid>270009</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 10:49:52 -0800</bug_when>
    <thetext>Created attachment 270009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159420</commentid>
    <comment_count>9</comment_count>
      <attachid>270009</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-27 14:18:33 -0800</bug_when>
    <thetext>Comment on attachment 270009
Patch

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

&gt; Source/WTF/wtf/text/Base64.cpp:182
&gt;  }

Don&apos;t forget to update the copyright on this file.

&gt; LayoutTests/fast/dom/Window/atob-btoa-expected.txt:29
&gt; +PASS window.atob(&quot; YQ==&quot;) is &quot;a&quot;

Can you please add tests covering the error cases?

There are 3 &quot;hadError = true;&quot;. Each should have a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159430</commentid>
    <comment_count>10</comment_count>
      <attachid>270041</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 14:31:25 -0800</bug_when>
    <thetext>Created attachment 270041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159438</commentid>
    <comment_count>11</comment_count>
      <attachid>270044</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 14:37:21 -0800</bug_when>
    <thetext>Created attachment 270044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159439</commentid>
    <comment_count>12</comment_count>
      <attachid>270044</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 14:37:54 -0800</bug_when>
    <thetext>Comment on attachment 270044
Patch

Clearing flags on attachment: 270044

Committed r195694: &lt;http://trac.webkit.org/changeset/195694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159441</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-27 14:38:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269945</attachid>
            <date>2016-01-26 16:20:43 -0800</date>
            <delta_ts>2016-01-27 10:49:48 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>153522_atob_spaces_wip.patch</filename>
            <type>text/plain</type>
            <size>15676</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50
eHQKaW5kZXggNDM4MGEyNS4uNzA4ZWI4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKQEAgLTI2LDggKzI2LDE2IEBAIFBBU1Mg
d2luZG93LmF0b2IoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cy4KIFBBU1Mgd2luZG93LmF0b2IoIiIpIGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKG51bGwp
IGlzICLCnsOpZSIKIFBBU1Mgd2luZG93LmF0b2IodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IEludmFsaWRDaGFyYWN0ZXJFcnJvcjogRE9NIEV4Y2VwdGlvbiA1LgotUEFTUyB3aW5k
b3cuYXRvYigiIFlRPT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRDaGFyYWN0ZXJF
cnJvcjogRE9NIEV4Y2VwdGlvbiA1LgotUEFTUyB3aW5kb3cuYXRvYigiWVE9PVx1MDAwYSIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9u
IDUuCitQQVNTIHdpbmRvdy5hdG9iKCIgWVE9PSIpIGlzICJhIgorUEFTUyB3aW5kb3cuYXRvYigi
WVE9PVx1MDAwYSIpIGlzICJhIgorUEFTUyB3aW5kb3cuYXRvYigiYWJcdGNkIikgaXMgImnCtx0i
CitQQVNTIHdpbmRvdy5hdG9iKCJhYlxuY2QiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93LmF0b2Io
ImFiXGZjZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiYWIgY2QiKSBpcyAiacK3HSIK
K1BBU1Mgd2luZG93LmF0b2IoImFiXHRcblxmXHIgY2QiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93
LmF0b2IoIiBcdFxuXGZcciBhYlx0XG5cZlxyIGNkXHRcblxmXHIgIikgaXMgImnCtx0iCitQQVNT
IHdpbmRvdy5hdG9iKCJhYlx0XG5cZlxyID1cdFxuXGZcciA9XHRcblxmXHIgIikgaXMgImkiCitQ
QVNTIHdpbmRvdy5hdG9iKCIgICAgICAgICAgICAiKSBpcyAiIgogUEFTUyB3aW5kb3cuYXRvYigi
NmVrPSIpIGlzICLDqcOpIgogUEFTUyB3aW5kb3cuYXRvYigiNmVrIikgaXMgIsOpw6kiCiBQQVNT
IHdpbmRvdy5hdG9iKCJnSUU9IikgaXMgIsKAwoEiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvYXRvYi1idG9hLmh0bWwKaW5kZXggNDE0NGUxZC4uMmZmZWIxOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EuaHRtbApAQCAtMzYsOCArMzYsMTYgQEAgc2hvdWxk
VGhyb3coJ3dpbmRvdy5hdG9iKCknLCAnIlR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMi
Jyk7CiBzaG91bGRCZSgnd2luZG93LmF0b2IoIiIpJywgJyIiJyk7CiBzaG91bGRCZSgnd2luZG93
LmF0b2IobnVsbCknLCAnIlx4OUXDqWUiJyk7IC8vIEdldHMgY29udmVydGVkIHRvICJudWxsIiBz
dHJpbmcuCiBzaG91bGRUaHJvdygnd2luZG93LmF0b2IodW5kZWZpbmVkKScpOwotc2hvdWxkVGhy
b3coJ3dpbmRvdy5hdG9iKCIgWVE9PSIpJyk7Ci1zaG91bGRUaHJvdygnd2luZG93LmF0b2IoIllR
PT1cXHUwMDBhIiknKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiIFlRPT0iKScsICciYSInKTsK
K3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiWVE9PVxcdTAwMGEiKScsICciYSInKTsKK3Nob3VsZEJl
KCd3aW5kb3cuYXRvYigiYWJcXHRjZCIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRv
dy5hdG9iKCJhYlxcbmNkIiknLCAnImnCt1x4MWQiJyk7CitzaG91bGRCZSgnd2luZG93LmF0b2Io
ImFiXFxmY2QiKScsICciacK3XHgxZCInKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiYWIgY2Qi
KScsICciacK3XHgxZCInKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiYWJcXHRcXG5cXGZcXHIg
Y2QiKScsICciacK3XHgxZCInKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiIFxcdFxcblxcZlxc
ciBhYlxcdFxcblxcZlxcciBjZFxcdFxcblxcZlxcciAiKScsICciacK3XHgxZCInKTsKK3Nob3Vs
ZEJlKCd3aW5kb3cuYXRvYigiYWJcXHRcXG5cXGZcXHIgPVxcdFxcblxcZlxcciA9XFx0XFxuXFxm
XFxyICIpJywgJyJpIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCIgICAgICAgICAgICAiKScs
ICciIicpOwogc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCI2ZWs9IiknLCAnIsOpw6kiJyk7CiBzaG91
bGRCZSgnd2luZG93LmF0b2IoIjZlayIpJywgJyLDqcOpIicpOwogc2hvdWxkQmUoJ3dpbmRvdy5h
dG9iKCJnSUU9IiknLCAnIlx1MDA4MFx1MDA4MSInKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQmFzZTY0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAppbmRl
eCAxZGZkOGRkLi40MDcxZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2
NC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCkBAIC0xODIsNyArMTgy
LDcgQEAgdm9pZCBiYXNlNjRVUkxFbmNvZGUoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQgbGVu
LCBWZWN0b3I8Y2hhcj4mIG91dCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRpYyBp
bmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFZlY3RvcjxjaGFyPiYgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5LCBjb25z
dCBjaGFyICgmZGVjb2RlTWFwKVsxMjhdKQorc3RhdGljIGlubGluZSBib29sIGJhc2U2NERlY29k
ZUludGVybmFsKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPGNoYXI+JiBv
dXQsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IGNoYXIgKCZkZWNvZGVNYXApWzEyOF0pCiB7CiAg
ICAgb3V0LmNsZWFyKCk7CiAgICAgaWYgKCFsZW5ndGgpCkBAIC0xOTIsMjkgKzE5Miw0NyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QgVCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBWZWN0b3I8YwogCiAgICAgdW5zaWduZWQgZXF1YWxzU2lnbkNvdW50ID0g
MDsKICAgICB1bnNpZ25lZCBvdXRMZW5ndGggPSAwOworICAgIGJvb2wgaGFkRXJyb3IgPSBmYWxz
ZTsKICAgICBmb3IgKHVuc2lnbmVkIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgKytpZHgpIHsKICAg
ICAgICAgdW5zaWduZWQgY2ggPSBkYXRhW2lkeF07CiAgICAgICAgIGlmIChjaCA9PSAnPScpIHsK
ICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwotICAgICAgICAgICAgLy8gVGhlcmUgc2hv
dWxkIGJlIG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgNCwgYW5kIHRoZXJl
Ci0gICAgICAgICAgICAvLyBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuIDIgcGFkZGluZyBjaGFy
YWN0ZXJzLgotICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBCYXNlNjRGYWlsT25JbnZhbGlkQ2hh
cmFjdGVyT3JFeGNlc3NQYWRkaW5nICYmIChsZW5ndGggJSA0IHx8IGVxdWFsc1NpZ25Db3VudCA+
IDIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIFRoZXJl
IHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4gMiBwYWRkaW5nIGNoYXJhY3RlcnMuCisgICAgICAg
ICAgICBpZiAob3B0aW9ucyAmIEJhc2U2NFZhbGlkYXRlUGFkZGluZyAmJiBlcXVhbHNTaWduQ291
bnQgPiAyKSB7CisgICAgICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Y2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gY2ggPCBXVEZfQVJSQVlfTEVOR1RIKGRlY29kZU1hcCkg
PyBkZWNvZGVNYXBbY2hdIDogbm9uQWxwaGFiZXQ7CiAgICAgICAgICAgICBpZiAoZGVjb2RlZENo
YXJhY3RlciAhPSBub25BbHBoYWJldCkgewotICAgICAgICAgICAgICAgIGlmIChlcXVhbHNTaWdu
Q291bnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAg
ICBvdXRbb3V0TGVuZ3RoXSA9IGRlY29kZWRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgKytv
dXRMZW5ndGg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGljeSA9PSBCYXNlNjRGYWlsT25J
bnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nIHx8IHBvbGljeSA9PSBCYXNlNjRGYWlsT25J
bnZhbGlkQ2hhcmFjdGVyIHx8IChwb2xpY3kgPT0gQmFzZTY0SWdub3JlV2hpdGVzcGFjZSAmJiAh
aXNTcGFjZU9yTmV3bGluZShjaCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAoZXF1YWxzU2lnbkNvdW50KSB7CisgICAgICAgICAgICAgICAgICAg
IGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIG91dFtvdXRMZW5ndGgrK10gPSBkZWNvZGVkQ2hhcmFj
dGVyOworICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMgJiBCYXNlNjRJZ25vcmVTcGFj
ZXNBbmROZXdMaW5lcykgfHwgIWlzU3BhY2VPck5ld2xpbmUoY2gpKSB7CisgICAgICAgICAgICAg
ICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gTWFrZSBzdXJlIHdlIHNocmluayBiYWNrIHRo
ZSBWZWN0b3IgYmVmb3JlIHJldHVybmluZy4gb3V0TGVuZ3RoIG1heSBiZSBzaG9ydGVyIHRoYW4g
ZXhwZWN0ZWQKKyAgICAvLyBpbiBjYXNlIG9mIGVycm9yIG9yIGluIGNhc2Ugb2YgaWdub3JlZCBz
cGFjZXMuCisgICAgaWYgKG91dExlbmd0aCA8IG91dC5zaXplKCkpCisgICAgICAgIG91dC5zaHJp
bmsob3V0TGVuZ3RoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCiAgICAgaWYgKCFvdXRMZW5ndGgpCiAgICAgICAgIHJldHVybiAhZXF1YWxzU2lnbkNvdW50
OwogCisgICAgLy8gVGhlIHNob3VsZCBiZSBubyBwYWRkaW5nIGlmIGxlbmd0aCBpcyBhIG11bHRp
cGxlIG9mIDQuCisgICAgLy8gV2UgdXNlIChvdXRMZW5ndGggKyBlcXVhbHNTaWduQ291bnQpIGlu
c3RlYWQgb2YgbGVuZ3RoIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBhY2NvdW50IGZvciBpZ25v
cmVkIGNoYXJhY3RlcnMgKGkuZS4gc3BhY2VzKS4KKyAgICBpZiAob3B0aW9ucyAmIEJhc2U2NFZh
bGlkYXRlUGFkZGluZyAmJiBlcXVhbHNTaWduQ291bnQgJiYgKG91dExlbmd0aCArIGVxdWFsc1Np
Z25Db3VudCkgJSA0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBWYWxpZCBkYXRh
IGlzIChuICogNCArIFswLDIsM10pIGNoYXJhY3RlcnMgbG9uZy4KICAgICBpZiAoKG91dExlbmd0
aCAlIDQpID09IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OCwxNSArMjY2LDE1IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgYmFz
ZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRh
cHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kpCitib29sIGJhc2U2NERlY29kZShj
b25zdCBTdHJpbmcmIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0LCB1
bnNpZ25lZCBvcHRpb25zKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGluLmxlbmd0aCgpOwog
ICAgIGlmICghbGVuZ3RoIHx8IGluLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0RGVj
b2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCBvdXQsIHBvbGljeSwgYmFzZTY0
RGVjTWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2
KCksIGxlbmd0aCwgb3V0LCBwb2xpY3ksIGJhc2U2NERlY01hcCk7CisgICAgICAgIHJldHVybiBi
YXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgb3B0aW9u
cywgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hh
cmFjdGVyczE2KCksIGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOwogfQogCi1i
b29sIGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVk
Q2hhclZlY3RvckFkYXB0ZXIgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5KQorYm9vbCBi
YXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJW
ZWN0b3JBZGFwdGVyIG91dCwgdW5zaWduZWQgb3B0aW9ucykKIHsKICAgICBvdXQuY2xlYXIoKTsK
IApAQCAtMjY0LDIwICsyODIsMjAgQEAgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNo
YXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCwKICAgICBpZiAo
aW4uc2l6ZSgpID4gVUlOVF9NQVgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oaW4u
ZGF0YSgpKSwgaW4uc2l6ZSgpLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1
cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGlu
LmRhdGEoKSksIGluLnNpemUoKSwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOwogfQogCi1i
b29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNpZ25lZE9y
VW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kp
Citib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNpZ25l
ZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2lnbmVkIG9wdGlvbnMpCiB7Ci0g
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihkYXRhKSwgbGVuLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1cm4g
YmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEp
LCBsZW4sIG91dCwgb3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAogYm9vbCBiYXNlNjRVUkxE
ZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVy
IG91dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbi5sZW5ndGgoKTsKICAgICBpZiAoIWxl
bmd0aCB8fCBpbi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFs
KGluLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFj
dGVyLCBiYXNlNjRVUkxEZWNNYXApOwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChp
bi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0
ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5h
bChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJM
RGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2
KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwogfQogCiBi
b29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2ln
bmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQpAQCAtMjg4LDEyICszMDYsMTIgQEAgYm9vbCBiYXNl
NjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJW
ZWN0b3JBZGFwdGVyIG8KICAgICBpZiAoaW4uc2l6ZSgpID4gVUlOVF9NQVgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oaW4uZGF0YSgpKSwgaW4uc2l6ZSgpLCBvdXQsIEJhc2U2NEZh
aWxPbkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgcmV0dXJuIGJhc2U2
NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihpbi5kYXRhKCkp
LCBpbi5zaXplKCksIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKIH0KIAog
Ym9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuLCBTaWdu
ZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewotICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oZGF0YSksIGxlbiwg
b3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBiYXNlNjRVUkxEZWNNYXApOworICAg
IHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oZGF0YSksIGxlbiwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFz
ZTY0LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmluZGV4IDRkZTYwMTMuLjFlNmUy
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9CYXNlNjQuaApAQCAtNDAsMTEgKzQwLDEwIEBAIGVudW0gQmFzZTY0RW5j
b2RlUG9saWN5IHsKICAgICBCYXNlNjRVUkxQb2xpY3kgLy8gTm8gcGFkZGluZywgbm8gTEZzLgog
fTsKIAotZW51bSBCYXNlNjREZWNvZGVQb2xpY3kgewotICAgIEJhc2U2NEZhaWxPbkludmFsaWRD
aGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcsCi0gICAgQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rl
ciwKLSAgICBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNlLAotICAgIEJhc2U2NElnbm9yZUludmFsaWRD
aGFyYWN0ZXJzCitlbnVtIEJhc2U2NERlY29kZU9wdGlvbnMgeworICAgIEJhc2U2NERlZmF1bHQg
PSAwLAorICAgIEJhc2U2NFZhbGlkYXRlUGFkZGluZyA9IDEgPDwgMCwKKyAgICBCYXNlNjRJZ25v
cmVTcGFjZXNBbmROZXdMaW5lcyA9IDEgPDwgMSwKIH07CiAKIGNsYXNzIFNpZ25lZE9yVW5zaWdu
ZWRDaGFyVmVjdG9yQWRhcHRlciB7CkBAIC04NSw5ICs4NCw5IEBAIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2Rl
UG9saWN5CiBTdHJpbmcgYmFzZTY0RW5jb2RlKENvbnN0U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0
b3JBZGFwdGVyLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjREb05vdEluc2VydExGcyk7CiBT
dHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IENTdHJpbmcmLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBC
YXNlNjREb05vdEluc2VydExGcyk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGJhc2U2NERl
Y29kZShjb25zdCBTdHJpbmcmLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIsIEJh
c2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOwotV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFNpZ25l
ZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgQmFzZTY0RGVjb2RlUG9saWN5ID0gQmFzZTY0
RmFpbE9uSW52YWxpZENoYXJhY3Rlcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjRE
ZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFk
YXB0ZXIsIEJhc2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIp
OworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIFNp
Z25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2
NERlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZl
Y3RvcjxjaGFyPiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQg
b3B0aW9ucyA9IEJhc2U2NERlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0
RGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JB
ZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CiAKIGlubGluZSB2b2lk
IGJhc2U2NEVuY29kZShDb25zdFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBpbiwg
VmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3kpCiB7CkBAIC0xNTEs
MTEgKzE1MCw4IEBAIGlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlKGNvbnN0IENTdHJpbmcm
IGluKQogdXNpbmcgV1RGOjpCYXNlNjRFbmNvZGVQb2xpY3k7CiB1c2luZyBXVEY6OkJhc2U2NERv
Tm90SW5zZXJ0TEZzOwogdXNpbmcgV1RGOjpCYXNlNjRJbnNlcnRMRnM7Ci11c2luZyBXVEY6OkJh
c2U2NERlY29kZVBvbGljeTsKLXVzaW5nIFdURjo6QmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rl
ck9yRXhjZXNzUGFkZGluZzsKLXVzaW5nIFdURjo6QmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rl
cjsKLXVzaW5nIFdURjo6QmFzZTY0SWdub3JlV2hpdGVzcGFjZTsKLXVzaW5nIFdURjo6QmFzZTY0
SWdub3JlSW52YWxpZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6OkJhc2U2NFZhbGlkYXRlUGFkZGlu
ZzsKK3VzaW5nIFdURjo6QmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXM7CiB1c2luZyBXVEY6
OmJhc2U2NEVuY29kZTsKIHVzaW5nIFdURjo6YmFzZTY0RGVjb2RlOwogdXNpbmcgV1RGOjpiYXNl
NjRVUkxEZWNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggODYyYjkwMi4uOGUz
M2E3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTE2MCw3ICsxMTYwLDcgQEAg
U3RyaW5nIERPTVdpbmRvdzo6YXRvYihjb25zdCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgaWYgKCFi
YXNlNjREZWNvZGUoZW5jb2RlZFN0cmluZywgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFj
dGVyT3JFeGNlc3NQYWRkaW5nKSkgeworICAgIGlmICghYmFzZTY0RGVjb2RlKGVuY29kZWRTdHJp
bmcsIG91dCwgQmFzZTY0VmFsaWRhdGVQYWRkaW5nIHwgQmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3
TGluZXMpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNzExOWU0My4uNTA1
YWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIFBhZ2U6
OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCkKICAgICAgICAgbV9kaWRMb2FkVXNlclN0
eWxlU2hlZXQgPSB0cnVlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBzdHlsZVNoZWV0QXNVVEY4
OwotICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwu
c3RyaW5nKCkuc3Vic3RyaW5nKDM1KSksIHN0eWxlU2hlZXRBc1VURjgsIEJhc2U2NElnbm9yZVdo
aXRlc3BhY2UpKQorICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDM1KSksIHN0eWxlU2hlZXRBc1VURjgsIEJhc2U2
NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSkKICAgICAgICAgICAgIG1fdXNlclN0eWxlU2hlZXQg
PSBTdHJpbmc6OmZyb21VVEY4KHN0eWxlU2hlZXRBc1VURjguZGF0YSgpLCBzdHlsZVNoZWV0QXNV
VEY4LnNpemUoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMLmNwcAppbmRleCAyMjk2MDBlLi45YzFmYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBoYW5kbGVE
YXRhVVJMKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKIAogICAgICAgICBWZWN0b3I8
Y2hhcj4gb3V0OwotICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRhdGEsIG91dCwgQmFzZTY0SWdu
b3JlV2hpdGVzcGFjZSkgJiYgb3V0LnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKGJhc2U2NERl
Y29kZShkYXRhLCBvdXQsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6
ZSgpID4gMCkgewogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KG91dC5zaXplKCkpOwogICAgICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURh
dGEoaGFuZGxlLCBvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpLCAwKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRl
eCBmYmI2YTgzLi41ODk3M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lk
IGRlY29kZUJhc2U2NChEZWNvZGVUYXNrJiB0YXNrKQogICAgIGlmICghYmFzZTY0VVJMRGVjb2Rl
KHRhc2suZW5jb2RlZERhdGEudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBidWZmZXIpKSB7CiAg
ICAgICAgIC8vIERpZG4ndCB3b3JrLCB0cnkgdW5lc2NhcGluZyBhbmQgZGVjb2RpbmcgYXMgYmFz
ZTY0LgogICAgICAgICBhdXRvIHVuZXNjYXBlZFN0cmluZyA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh0YXNrLmVuY29kZWREYXRhLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAg
IGlmICghYmFzZTY0RGVjb2RlKHVuZXNjYXBlZFN0cmluZywgYnVmZmVyLCBCYXNlNjRJZ25vcmVX
aGl0ZXNwYWNlKSkKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUodW5lc2NhcGVkU3RyaW5nLCBi
dWZmZXIsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYnVmZmVyLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMzEy
MGUyNi4uMDlkMTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZyYKIAogICAgICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICAg
ICAgVmVjdG9yPGNoYXI+IG91dDsKLSAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRl
bnRDb3B5LCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcp
KQorICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudENvcHksIG91dCwgQmFzZTY0
VmFsaWRhdGVQYWRkaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhQ29udGVudCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6b3V0LmRhdGEoKSBsZW5ndGg6b3V0LnNpemUoKV0pOwogICAgICAgICAgICAg
W2RhdGFDb250ZW50IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CmluZGV4IDBlN2ZkNmMuLmUxMjQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAKICAgICAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAg
ICAgICAgICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgICAgICAgICBpZiAoIWJhc2U2NERlY29k
ZShjb250ZW50Q29weSwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQ
YWRkaW5nKSkKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnRDb3B5LCBvdXQs
IEJhc2U2NFZhbGlkYXRlUGFkZGluZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUNvbnRlbnQgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOm91dC5kYXRhKCkgbGVuZ3RoOm91dC5zaXplKCldKTsKICAgICAg
ICAgICAgIFtkYXRhQ29udGVudCB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFU107
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270009</attachid>
            <date>2016-01-27 10:49:52 -0800</date>
            <delta_ts>2016-01-27 14:31:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153522-20160127104926.patch</filename>
            <type>text/plain</type>
            <size>20816</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1Njc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlODc1MmM4NTU4YzViYTBiZjc5Zjgy
MDI4N2YxN2NiOTY4MTExNDcuLjUyZmFhOWU0ZWNiY2M5Y2U2ZWQ4MGIyZTUwMWJmYjQxYWIwZDA2
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICB3aW5kb3cuYXRvYigpIHNob3VsZCBpZ25vcmUgc3BhY2Vz
IGluIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM1MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MzU3ODIyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gQmFzZTY0RGVjb2RlUG9s
aWN5IGVudW0gaW50byBmbGFncyBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGluZGljYXRlCisgICAg
ICAgIHRvIGJvdGggdmFsaWRhdGUgcGFkZGluZyBBTkQgaWdub3JlIHNwYWNlcy4KKworICAgICAg
ICBBbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgVmVjdG9yIHNpemUgaXMgcHJvcGVybHkg
c2hydW5rIHdoZW4KKyAgICAgICAgc3BhY2VzIGFyZSBpZ25vcmVkLgorCisgICAgICAgICogd3Rm
L3RleHQvQmFzZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RGVjb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGUpOgorICAgICAgICAoV1RGOjpiYXNlNjRVUkxEZWNv
ZGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5oOgorCiAyMDE2LTAxLTI3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfQ1VS
UkVOVFNSQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0YjIzYzBlMTA2NGNmMDJhZWM5YWQ3YTU0NjVmZjcxZDM2
NTY4YjAuLjhhZDAxY2NjYWJmYTc4OWFhYzVkNGMyYTlmOWE5OWNkM2NmZjM2NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0wMS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGlnbm9yZSBzcGFjZXMgaW4g
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzUyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQzNTc4MjI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQgaWdu
b3JlIHNwYWNlcyBpbiBpbnB1dCBhcyBwZXI6CisgICAgICAgIC0gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jZG9tLXdpbmRvd2Jhc2U2NC1hdG9iIChTdGVwIDMpCisKKyAgICAgICAgUHJl
dmlvdXNseSwgV2ViS2l0IHdvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBhbmQgaXQgd2FzIHRoZSBv
bmx5IGJyb3dzZXIKKyAgICAgICAgdG8gZG8gc28uIEZpcmVmb3ggYW5kIENocm9tZSBiZWhhdmlv
ciBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyB3YXMgY2F1
c2luZyB1cyB0byBmYWlsIDEwIGNoZWNrcyBpbiB0aGUgZm9sbG93aW5nIFczQyBIVE1MIHRlc3Q6
CisgICAgICAgIGh0dHA6Ly93M2MtdGVzdC5vcmcvaHRtbC93ZWJhcHBhcGlzL2F0b2IvYmFzZTY0
Lmh0bWwKKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKwor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6YXRvYik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlRGF0YVVSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlQmFzZTY0KToKKwogMjAxNi0wMS0yNyAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxF
X0NVUlJFTlRTUkMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBlNzBjOGE3MTliMTk0OTgzMzg0NmRjMmRi
YzhiMjk2ZTY0MjZiMTNjLi4xMGE0NzJiNzRjMzM5MTU2MmUyYjkyNjNkMzQzMTA3NDk1YzQ4NmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDEtMjcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICB3aW5kb3cuYXRvYigpIHNob3VsZCBp
Z25vcmUgc3BhY2VzIGluIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM1MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MzU3ODIyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnNhdmUpOgorCiAyMDE2LTAxLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfQ1VSUkVOVFNSQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGEzOWI1OGU5MDRlNmE0NjQyNGIyZDEwOGU3ZGYzMzI3MTU5ZTcwNjUuLmEyYzY0YzYx
ZTE5YzQ0MmJmMWIzMWJjNzYwMTIyNGIxZDllM2QzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNi0wMS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGlnbm9yZSBzcGFjZXMgaW4gaW5wdXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzUyMgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjQzNTc4MjI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKToKKwog
MjAxNi0wMS0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgRU5BQkxFX0NVUlJFTlRTUkMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQmFzZTY0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcAppbmRleCAxZGZk
OGRkMzM2ZmZkNDY4ZTdjNzdmYzEwZjE1YjIwY2YwMDJiZjlkLi40MDcxZjQzZDBlMTk1ZjY1MzM4
NjA4MThiYTk5ZTZhNmM2NjQyODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jh
c2U2NC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCkBAIC0xODIsNyAr
MTgyLDcgQEAgdm9pZCBiYXNlNjRVUkxFbmNvZGUoY29uc3Qgdm9pZCogZGF0YSwgdW5zaWduZWQg
bGVuLCBWZWN0b3I8Y2hhcj4mIG91dCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0YXRp
YyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIFZlY3RvcjxjaGFyPiYgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5LCBj
b25zdCBjaGFyICgmZGVjb2RlTWFwKVsxMjhdKQorc3RhdGljIGlubGluZSBib29sIGJhc2U2NERl
Y29kZUludGVybmFsKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPGNoYXI+
JiBvdXQsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IGNoYXIgKCZkZWNvZGVNYXApWzEyOF0pCiB7
CiAgICAgb3V0LmNsZWFyKCk7CiAgICAgaWYgKCFsZW5ndGgpCkBAIC0xOTIsMjkgKzE5Miw0NyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QgVCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8YwogCiAgICAgdW5zaWduZWQgZXF1YWxzU2lnbkNvdW50
ID0gMDsKICAgICB1bnNpZ25lZCBvdXRMZW5ndGggPSAwOworICAgIGJvb2wgaGFkRXJyb3IgPSBm
YWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGlkeCA9IDA7IGlkeCA8IGxlbmd0aDsgKytpZHgpIHsK
ICAgICAgICAgdW5zaWduZWQgY2ggPSBkYXRhW2lkeF07CiAgICAgICAgIGlmIChjaCA9PSAnPScp
IHsKICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwotICAgICAgICAgICAgLy8gVGhlcmUg
c2hvdWxkIGJlIG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgNCwgYW5kIHRo
ZXJlCi0gICAgICAgICAgICAvLyBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuIDIgcGFkZGluZyBj
aGFyYWN0ZXJzLgotICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBCYXNlNjRGYWlsT25JbnZhbGlk
Q2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nICYmIChsZW5ndGggJSA0IHx8IGVxdWFsc1NpZ25Db3Vu
dCA+IDIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIFRo
ZXJlIHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4gMiBwYWRkaW5nIGNoYXJhY3RlcnMuCisgICAg
ICAgICAgICBpZiAob3B0aW9ucyAmIEJhc2U2NFZhbGlkYXRlUGFkZGluZyAmJiBlcXVhbHNTaWdu
Q291bnQgPiAyKSB7CisgICAgICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgY2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gY2ggPCBXVEZfQVJSQVlfTEVOR1RIKGRlY29kZU1h
cCkgPyBkZWNvZGVNYXBbY2hdIDogbm9uQWxwaGFiZXQ7CiAgICAgICAgICAgICBpZiAoZGVjb2Rl
ZENoYXJhY3RlciAhPSBub25BbHBoYWJldCkgewotICAgICAgICAgICAgICAgIGlmIChlcXVhbHNT
aWduQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICBvdXRbb3V0TGVuZ3RoXSA9IGRlY29kZWRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAg
KytvdXRMZW5ndGg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGljeSA9PSBCYXNlNjRGYWls
T25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nIHx8IHBvbGljeSA9PSBCYXNlNjRGYWls
T25JbnZhbGlkQ2hhcmFjdGVyIHx8IChwb2xpY3kgPT0gQmFzZTY0SWdub3JlV2hpdGVzcGFjZSAm
JiAhaXNTcGFjZU9yTmV3bGluZShjaCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoZXF1YWxzU2lnbkNvdW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dFtvdXRMZW5ndGgrK10gPSBkZWNvZGVkQ2hh
cmFjdGVyOworICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMgJiBCYXNlNjRJZ25vcmVT
cGFjZXNBbmROZXdMaW5lcykgfHwgIWlzU3BhY2VPck5ld2xpbmUoY2gpKSB7CisgICAgICAgICAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gTWFrZSBzdXJlIHdlIHNocmluayBiYWNr
IHRoZSBWZWN0b3IgYmVmb3JlIHJldHVybmluZy4gb3V0TGVuZ3RoIG1heSBiZSBzaG9ydGVyIHRo
YW4gZXhwZWN0ZWQKKyAgICAvLyBpbiBjYXNlIG9mIGVycm9yIG9yIGluIGNhc2Ugb2YgaWdub3Jl
ZCBzcGFjZXMuCisgICAgaWYgKG91dExlbmd0aCA8IG91dC5zaXplKCkpCisgICAgICAgIG91dC5z
aHJpbmsob3V0TGVuZ3RoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgaWYgKCFvdXRMZW5ndGgpCiAgICAgICAgIHJldHVybiAhZXF1YWxzU2lnbkNv
dW50OwogCisgICAgLy8gVGhlIHNob3VsZCBiZSBubyBwYWRkaW5nIGlmIGxlbmd0aCBpcyBhIG11
bHRpcGxlIG9mIDQuCisgICAgLy8gV2UgdXNlIChvdXRMZW5ndGggKyBlcXVhbHNTaWduQ291bnQp
IGluc3RlYWQgb2YgbGVuZ3RoIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBhY2NvdW50IGZvciBp
Z25vcmVkIGNoYXJhY3RlcnMgKGkuZS4gc3BhY2VzKS4KKyAgICBpZiAob3B0aW9ucyAmIEJhc2U2
NFZhbGlkYXRlUGFkZGluZyAmJiBlcXVhbHNTaWduQ291bnQgJiYgKG91dExlbmd0aCArIGVxdWFs
c1NpZ25Db3VudCkgJSA0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBWYWxpZCBk
YXRhIGlzIChuICogNCArIFswLDIsM10pIGNoYXJhY3RlcnMgbG9uZy4KICAgICBpZiAoKG91dExl
bmd0aCAlIDQpID09IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OCwxNSArMjY2LDE1
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
YmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kpCitib29sIGJhc2U2NERlY29k
ZShjb25zdCBTdHJpbmcmIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0
LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGluLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoIHx8IGluLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCBvdXQsIHBvbGljeSwgYmFz
ZTY0RGVjTWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVy
czE2KCksIGxlbmd0aCwgb3V0LCBwb2xpY3ksIGJhc2U2NERlY01hcCk7CisgICAgICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgb3B0
aW9ucywgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4u
Y2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOwogfQog
Ci1ib29sIGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2ln
bmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5KQorYm9v
bCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENo
YXJWZWN0b3JBZGFwdGVyIG91dCwgdW5zaWduZWQgb3B0aW9ucykKIHsKICAgICBvdXQuY2xlYXIo
KTsKIApAQCAtMjY0LDIwICsyODIsMjAgQEAgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9y
PGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCwKICAgICBp
ZiAoaW4uc2l6ZSgpID4gVUlOVF9NQVgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
aW4uZGF0YSgpKSwgaW4uc2l6ZSgpLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKKyAgICBy
ZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGluLmRhdGEoKSksIGluLnNpemUoKSwgb3V0LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOwogfQog
Ci1ib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNpZ25l
ZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xp
Y3kpCitib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNp
Z25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2lnbmVkIG9wdGlvbnMpCiB7
Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihkYXRhKSwgbGVuLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1
cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRh
dGEpLCBsZW4sIG91dCwgb3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAogYm9vbCBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFw
dGVyIG91dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbi5sZW5ndGgoKTsKICAgICBpZiAo
IWxlbmd0aCB8fCBpbi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVy
bmFsKGluLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hh
cmFjdGVyLCBiYXNlNjRVUkxEZWNNYXApOwotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5h
bChpbi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFy
YWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRl
cm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0
VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVy
czE2KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwogfQog
CiBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVu
c2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQpAQCAtMjg4LDEyICszMDYsMTIgQEAgYm9vbCBi
YXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENo
YXJWZWN0b3JBZGFwdGVyIG8KICAgICBpZiAoaW4uc2l6ZSgpID4gVUlOVF9NQVgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oaW4uZGF0YSgpKSwgaW4uc2l6ZSgpLCBvdXQsIEJhc2U2
NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgcmV0dXJuIGJh
c2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihpbi5kYXRh
KCkpLCBpbi5zaXplKCksIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKIH0K
IAogYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuLCBT
aWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewotICAgIHJldHVybiBiYXNl
NjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oZGF0YSksIGxl
biwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBiYXNlNjRVUkxEZWNNYXApOwor
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oZGF0YSksIGxlbiwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QmFzZTY0LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmluZGV4IDRkZTYwMTMwYjcz
OGQyMzMzYWE4NzhmZjQzNDA5ZGI1YmIxZWZhOWEuLjFlNmUyZWJmNzdlNWNlMDNkNmYzY2I1ZmRl
ZjhhYWExZTE0MGU5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaApAQCAtNDAsMTEgKzQwLDEwIEBAIGVu
dW0gQmFzZTY0RW5jb2RlUG9saWN5IHsKICAgICBCYXNlNjRVUkxQb2xpY3kgLy8gTm8gcGFkZGlu
Zywgbm8gTEZzLgogfTsKIAotZW51bSBCYXNlNjREZWNvZGVQb2xpY3kgewotICAgIEJhc2U2NEZh
aWxPbkludmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcsCi0gICAgQmFzZTY0RmFpbE9uSW52
YWxpZENoYXJhY3RlciwKLSAgICBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNlLAotICAgIEJhc2U2NEln
bm9yZUludmFsaWRDaGFyYWN0ZXJzCitlbnVtIEJhc2U2NERlY29kZU9wdGlvbnMgeworICAgIEJh
c2U2NERlZmF1bHQgPSAwLAorICAgIEJhc2U2NFZhbGlkYXRlUGFkZGluZyA9IDEgPDwgMCwKKyAg
ICBCYXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lcyA9IDEgPDwgMSwKIH07CiAKIGNsYXNzIFNp
Z25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciB7CkBAIC04NSw5ICs4NCw5IEBAIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IHZvaWQqLCB1bnNpZ25lZCwg
QmFzZTY0RW5jb2RlUG9saWN5CiBTdHJpbmcgYmFzZTY0RW5jb2RlKENvbnN0U2lnbmVkT3JVbnNp
Z25lZENoYXJWZWN0b3JBZGFwdGVyLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjREb05vdElu
c2VydExGcyk7CiBTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IENTdHJpbmcmLCBCYXNlNjRFbmNv
ZGVQb2xpY3kgPSBCYXNlNjREb05vdEluc2VydExGcyk7CiAKLVdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3Rv
ckFkYXB0ZXIsIEJhc2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0
ZXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjxj
aGFyPiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgQmFzZTY0RGVjb2RlUG9s
aWN5ID0gQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rlcik7Ci1XVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBTaWduZWRPclVuc2lnbmVk
Q2hhclZlY3RvckFkYXB0ZXIsIEJhc2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxPbkludmFs
aWRDaGFyYWN0ZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0
IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0
aW9ucyA9IEJhc2U2NERlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVj
b2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRl
ciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgU2lnbmVkT3JVbnNpZ25l
ZENoYXJWZWN0b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CiAK
IGlubGluZSB2b2lkIGJhc2U2NEVuY29kZShDb25zdFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBpbiwgVmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NEVuY29kZVBvbGljeSBwb2xpY3kp
CiB7CkBAIC0xNTEsMTEgKzE1MCw4IEBAIGlubGluZSBTdHJpbmcgYmFzZTY0VVJMRW5jb2RlKGNv
bnN0IENTdHJpbmcmIGluKQogdXNpbmcgV1RGOjpCYXNlNjRFbmNvZGVQb2xpY3k7CiB1c2luZyBX
VEY6OkJhc2U2NERvTm90SW5zZXJ0TEZzOwogdXNpbmcgV1RGOjpCYXNlNjRJbnNlcnRMRnM7Ci11
c2luZyBXVEY6OkJhc2U2NERlY29kZVBvbGljeTsKLXVzaW5nIFdURjo6QmFzZTY0RmFpbE9uSW52
YWxpZENoYXJhY3Rlck9yRXhjZXNzUGFkZGluZzsKLXVzaW5nIFdURjo6QmFzZTY0RmFpbE9uSW52
YWxpZENoYXJhY3RlcjsKLXVzaW5nIFdURjo6QmFzZTY0SWdub3JlV2hpdGVzcGFjZTsKLXVzaW5n
IFdURjo6QmFzZTY0SWdub3JlSW52YWxpZENoYXJhY3RlcnM7Cit1c2luZyBXVEY6OkJhc2U2NFZh
bGlkYXRlUGFkZGluZzsKK3VzaW5nIFdURjo6QmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXM7
CiB1c2luZyBXVEY6OmJhc2U2NEVuY29kZTsKIHVzaW5nIFdURjo6YmFzZTY0RGVjb2RlOwogdXNp
bmcgV1RGOjpiYXNlNjRVUkxEZWNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
ODYyYjkwMjU4ZTExYTc4ZmI5ODcwYzc2NTU3MTllY2JiYWFkNTNkNi4uOGUzM2E3NzNmNGZiZDI5
YjlmYWVhZjc1ZjczNWQ2MmQ2MThjNGVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApA
QCAtMTE2MCw3ICsxMTYwLDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6YXRvYihjb25zdCBTdHJpbmcm
IGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIFZlY3Rvcjxj
aGFyPiBvdXQ7Ci0gICAgaWYgKCFiYXNlNjREZWNvZGUoZW5jb2RlZFN0cmluZywgb3V0LCBCYXNl
NjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nKSkgeworICAgIGlmICghYmFz
ZTY0RGVjb2RlKGVuY29kZWRTdHJpbmcsIG91dCwgQmFzZTY0VmFsaWRhdGVQYWRkaW5nIHwgQmFz
ZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9DSEFS
QUNURVJfRVJSOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKaW5kZXggYTM0YmY2Yzc5ZjViOTU4YjkxZDI3YjRmYjAxNWU5ODI3ODRjOTVhOC4uNTFjMjY5
MTJkMThlNGI1N2ZkNmQ4OTNlYzI0ZDgwNWY0MWU5MWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFu
Z2VkKCkKICAgICAgICAgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgPSB0cnVlOwogCiAgICAgICAg
IFZlY3RvcjxjaGFyPiBzdHlsZVNoZWV0QXNVVEY4OwotICAgICAgICBpZiAoYmFzZTY0RGVjb2Rl
KGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDM1KSksIHN0
eWxlU2hlZXRBc1VURjgsIEJhc2U2NElnbm9yZVdoaXRlc3BhY2UpKQorICAgICAgICBpZiAoYmFz
ZTY0RGVjb2RlKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vic3RyaW5n
KDM1KSksIHN0eWxlU2hlZXRBc1VURjgsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSkK
ICAgICAgICAgICAgIG1fdXNlclN0eWxlU2hlZXQgPSBTdHJpbmc6OmZyb21VVEY4KHN0eWxlU2hl
ZXRBc1VURjguZGF0YSgpLCBzdHlsZVNoZWV0QXNVVEY4LnNpemUoKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcAppbmRleCAyMjk2MDBlODdm
YTkwZGJjZmExM2JmZWRkMzVjMWVjNDk4ZTliOTAyLi45YzFmYjEyNjI1MTc5NTY4NTViMjk0MGZj
MzI1YmI4YWU4ZGEwMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBoYW5kbGVEYXRhVVJMKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25z
ZShoYW5kbGUsIHJlc3BvbnNlKTsKIAogICAgICAgICBWZWN0b3I8Y2hhcj4gb3V0OwotICAgICAg
ICBpZiAoYmFzZTY0RGVjb2RlKGRhdGEsIG91dCwgQmFzZTY0SWdub3JlV2hpdGVzcGFjZSkgJiYg
b3V0LnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKGJhc2U2NERlY29kZShkYXRhLCBvdXQsIEJh
c2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgpID4gMCkgewogICAgICAg
ICAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKG91dC5zaXplKCkpOwogICAg
ICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBvdXQuZGF0
YSgpLCBvdXQuc2l6ZSgpLCAwKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBmYmI2YTgzMTI4NTUxMmI5
MjJmNmE2Y2E2YmJkODAzMzBiNDQ1MWI5Li41ODk3M2JjNTAzOWViZjc0MmI0ZjYxOGEzMjlmOWEw
MGQwMWVmMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyB2b2lkIGRlY29kZUJh
c2U2NChEZWNvZGVUYXNrJiB0YXNrKQogICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKHRhc2suZW5j
b2RlZERhdGEudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBidWZmZXIpKSB7CiAgICAgICAgIC8v
IERpZG4ndCB3b3JrLCB0cnkgdW5lc2NhcGluZyBhbmQgZGVjb2RpbmcgYXMgYmFzZTY0LgogICAg
ICAgICBhdXRvIHVuZXNjYXBlZFN0cmluZyA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh0YXNr
LmVuY29kZWREYXRhLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0gICAgICAgIGlmICghYmFz
ZTY0RGVjb2RlKHVuZXNjYXBlZFN0cmluZywgYnVmZmVyLCBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNl
KSkKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUodW5lc2NhcGVkU3RyaW5nLCBidWZmZXIsIEJh
c2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgYnVmZmVyLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggMzEyMGUyNmVlMTE4
OGQzZTY2OWRjNGVhZjUxYzBiNjA0ZWY5NGUzNS4uMDlkMTBjNmMwNzdkMmYxOWI3ZGIyNzM5YzFk
ZWQ1NmY5YjYwMzdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZyYKIAogICAgICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICAg
ICAgVmVjdG9yPGNoYXI+IG91dDsKLSAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRl
bnRDb3B5LCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcp
KQorICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudENvcHksIG91dCwgQmFzZTY0
VmFsaWRhdGVQYWRkaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhQ29udGVudCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGlu
aXRXaXRoQnl0ZXM6b3V0LmRhdGEoKSBsZW5ndGg6b3V0LnNpemUoKV0pOwogICAgICAgICAgICAg
W2RhdGFDb250ZW50IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CmluZGV4IDBlN2ZkNmM2Mzg3ZjNjMWQxNzFjZGM3MDQ0NTk4ODYyM2I1MTI1MTkuLmUxMjQ3MDM0
YmE2NmMxZjNiNWQ4MDE3NmRjZmEyNjdjMzZlNjgwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNTY4LDcgKzU2
OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAKICAgICAgICAgaWYgKGJhc2U2NEVuY29k
ZWQpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgICAgICAgICBpZiAoIWJh
c2U2NERlY29kZShjb250ZW50Q29weSwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVy
T3JFeGNlc3NQYWRkaW5nKSkKKyAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGNvbnRlbnRD
b3B5LCBvdXQsIEJhc2U2NFZhbGlkYXRlUGFkZGluZykpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUNvbnRlbnQgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm91dC5kYXRhKCkgbGVuZ3RoOm91dC5zaXplKCld
KTsKICAgICAgICAgICAgIFtkYXRhQ29udGVudCB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNh
bGx5OllFU107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZjExZWJiYzM2NjNiZGY4MDcwMTlkN2ZlMWU0YWJmMTFmMDBkZTdl
Mi4uNWEwNjJlOWI1ZDEyNzU2ZWQxMmZmYWNlMWZmNjE3Yjk3MzVmZTMwYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE2LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
KyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQgaWdub3JlIHNwYWNlcyBpbiBpbnB1dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTIyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yNDM1NzgyMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgd2luZG93LmF0b2IoKSB0ZXN0IHRvIGNvdmVy
IGNhc2VzIHdpdGggc3BhY2VzIGluCisgICAgICAgIGlucHV0LgorCisgICAgICAgICogZmFzdC9k
b20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vV2lu
ZG93L2F0b2ItYnRvYS5odG1sOgorCiAyMDE2LTAxLTI3ICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW0dUS10gUHJvYmxlbSBydW5uaW5nIHByb21pc2Vz
IGNvZGUgaW4gd29ya2VycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L2F0b2ItYnRvYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRv
Yi1idG9hLWV4cGVjdGVkLnR4dAppbmRleCA0MzgwYTI1ZDY5ZThlMTY4YzIzNmJjYjcyYThiMmQ5
OTRkZTk0ZjQxLi43MDhlYjhkN2VjZTAyOTBkZWMzOTg1MTUzNzAyZTYyYTE4ZjVjNmY3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4
dApAQCAtMjYsOCArMjYsMTYgQEAgUEFTUyB3aW5kb3cuYXRvYigpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB3aW5kb3cuYXRvYigiIikgaXMg
IiIKIFBBU1Mgd2luZG93LmF0b2IobnVsbCkgaXMgIsKew6llIgogUEFTUyB3aW5kb3cuYXRvYih1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBE
T00gRXhjZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCi1QQVNTIHdp
bmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkQ2hh
cmFjdGVyRXJyb3I6IERPTSBFeGNlcHRpb24gNS4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09Iikg
aXMgImEiCitQQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgaXMgImEiCitQQVNTIHdpbmRv
dy5hdG9iKCJhYlx0Y2QiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93LmF0b2IoImFiXG5jZCIpIGlz
ICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiYWJcZmNkIikgaXMgImnCtx0iCitQQVNTIHdpbmRv
dy5hdG9iKCJhYiBjZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiYWJcdFxuXGZcciBj
ZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiIFx0XG5cZlxyIGFiXHRcblxmXHIgY2Rc
dFxuXGZcciAiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93LmF0b2IoImFiXHRcblxmXHIgPVx0XG5c
ZlxyID1cdFxuXGZcciAiKSBpcyAiaSIKK1BBU1Mgd2luZG93LmF0b2IoIiAgICAgICAgICAgICIp
IGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKCI2ZWs9IikgaXMgIsOpw6kiCiBQQVNTIHdpbmRvdy5h
dG9iKCI2ZWsiKSBpcyAiw6nDqSIKIFBBU1Mgd2luZG93LmF0b2IoImdJRT0iKSBpcyAiwoDCgSIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EuaHRtbAppbmRleCA0MTQ0ZTFk
MDZlM2NlN2NlOWFmYWNkMmYxZTUzYzY0ZWE5MTFmYjkyLi4yZmZlYjE4YTViYzJmMGQ5M2RkNTY3
YWEwMGM5Y2M3NDVmMzY3NGQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvYXRvYi1idG9hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2It
YnRvYS5odG1sCkBAIC0zNiw4ICszNiwxNiBAQCBzaG91bGRUaHJvdygnd2luZG93LmF0b2IoKScs
ICciVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cyInKTsKIHNob3VsZEJlKCd3aW5kb3cu
YXRvYigiIiknLCAnIiInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRvYihudWxsKScsICciXHg5RcOp
ZSInKTsgLy8gR2V0cyBjb252ZXJ0ZWQgdG8gIm51bGwiIHN0cmluZy4KIHNob3VsZFRocm93KCd3
aW5kb3cuYXRvYih1bmRlZmluZWQpJyk7Ci1zaG91bGRUaHJvdygnd2luZG93LmF0b2IoIiBZUT09
IiknKTsKLXNob3VsZFRocm93KCd3aW5kb3cuYXRvYigiWVE9PVxcdTAwMGEiKScpOworc2hvdWxk
QmUoJ3dpbmRvdy5hdG9iKCIgWVE9PSIpJywgJyJhIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9i
KCJZUT09XFx1MDAwYSIpJywgJyJhIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxcdGNk
IiknLCAnImnCt1x4MWQiJyk7CitzaG91bGRCZSgnd2luZG93LmF0b2IoImFiXFxuY2QiKScsICci
acK3XHgxZCInKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiYWJcXGZjZCIpJywgJyJpwrdceDFk
IicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYiBjZCIpJywgJyJpwrdceDFkIicpOworc2hv
dWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxcdFxcblxcZlxcciBjZCIpJywgJyJpwrdceDFkIicpOwor
c2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCIgXFx0XFxuXFxmXFxyIGFiXFx0XFxuXFxmXFxyIGNkXFx0
XFxuXFxmXFxyICIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxc
dFxcblxcZlxcciA9XFx0XFxuXFxmXFxyID1cXHRcXG5cXGZcXHIgIiknLCAnImkiJyk7CitzaG91
bGRCZSgnd2luZG93LmF0b2IoIiAgICAgICAgICAgICIpJywgJyIiJyk7CiBzaG91bGRCZSgnd2lu
ZG93LmF0b2IoIjZlaz0iKScsICciw6nDqSInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRvYigiNmVr
IiknLCAnIsOpw6kiJyk7CiBzaG91bGRCZSgnd2luZG93LmF0b2IoImdJRT0iKScsICciXHUwMDgw
XHUwMDgxIicpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270041</attachid>
            <date>2016-01-27 14:31:25 -0800</date>
            <delta_ts>2016-01-27 14:37:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153522-20160127143059.patch</filename>
            <type>text/plain</type>
            <size>22097</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlODc1MmM4NTU4YzViYTBiZjc5Zjgy
MDI4N2YxN2NiOTY4MTExNDcuLjUyZmFhOWU0ZWNiY2M5Y2U2ZWQ4MGIyZTUwMWJmYjQxYWIwZDA2
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICB3aW5kb3cuYXRvYigpIHNob3VsZCBpZ25vcmUgc3BhY2Vz
IGluIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM1MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MzU3ODIyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gQmFzZTY0RGVjb2RlUG9s
aWN5IGVudW0gaW50byBmbGFncyBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuIGluZGljYXRlCisgICAg
ICAgIHRvIGJvdGggdmFsaWRhdGUgcGFkZGluZyBBTkQgaWdub3JlIHNwYWNlcy4KKworICAgICAg
ICBBbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgVmVjdG9yIHNpemUgaXMgcHJvcGVybHkg
c2hydW5rIHdoZW4KKyAgICAgICAgc3BhY2VzIGFyZSBpZ25vcmVkLgorCisgICAgICAgICogd3Rm
L3RleHQvQmFzZTY0LmNwcDoKKyAgICAgICAgKFdURjo6YmFzZTY0RGVjb2RlSW50ZXJuYWwpOgor
ICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGUpOgorICAgICAgICAoV1RGOjpiYXNlNjRVUkxEZWNv
ZGUpOgorICAgICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5oOgorCiAyMDE2LTAxLTI3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVfQ1VS
UkVOVFNSQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM5ZDc0MmU5YzAyNmI4Y2JjMDcyNzFiZmI3MDc4NjE2N2Fi
MjYwN2QuLmFiNmJjYWFlOGQ1MDBhNDJlMGM2NTZiZmEyOTkyMTA0ZGFjNzI2NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMSBAQAorMjAxNi0wMS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGlnbm9yZSBzcGFjZXMgaW4g
aW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzUyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQzNTc4MjI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQgaWdu
b3JlIHNwYWNlcyBpbiBpbnB1dCBhcyBwZXI6CisgICAgICAgIC0gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jZG9tLXdpbmRvd2Jhc2U2NC1hdG9iIChTdGVwIDMpCisKKyAgICAgICAgUHJl
dmlvdXNseSwgV2ViS2l0IHdvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBhbmQgaXQgd2FzIHRoZSBv
bmx5IGJyb3dzZXIKKyAgICAgICAgdG8gZG8gc28uIEZpcmVmb3ggYW5kIENocm9tZSBiZWhhdmlv
ciBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyB3YXMgY2F1
c2luZyB1cyB0byBmYWlsIDEwIGNoZWNrcyBpbiB0aGUgZm9sbG93aW5nIFczQyBIVE1MIHRlc3Q6
CisgICAgICAgIGh0dHA6Ly93M2MtdGVzdC5vcmcvaHRtbC93ZWJhcHBhcGlzL2F0b2IvYmFzZTY0
Lmh0bWwKKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKwor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6YXRvYik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlRGF0YVVSTCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlQmFzZTY0KToKKwogMjAxNi0wMS0yNyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjogU1FM
aXRlIGJhY2tlbmQgZG9lc24ndCB1cGRhdGUgaW5kZXggcmVjb3JkcyBhcyBvYmplY3QgcmVjb3Jk
cyBhcmUgYWRkZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTcwYzhhNzE5YjE5NDk4MzM4NDZkYzJk
YmM4YjI5NmU2NDI2YjEzYy4uMTBhNDcyYjc0YzMzOTE1NjJlMmI5MjYzZDM0MzEwNzQ5NWM0ODZi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTAxLTI3ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQg
aWdub3JlIHNwYWNlcyBpbiBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzNTIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDM1NzgyMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpzYXZlKToKKwogMjAxNi0wMS0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0NVUlJFTlRTUkMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBmODUyOTM4MTE1NDFhZGM2MzZmNDk5ZTdkMmNhNDU1ZDBjYWM2ZjYxLi5lODgwMTU5
YjMwMDkyZDdjNjM2YmQ3Y2E2YmM5MjYzMDNjNmRjNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTYtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICB3aW5kb3cuYXRvYigpIHNob3VsZCBpZ25vcmUgc3BhY2VzIGluIGlucHV0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1MjIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzI0MzU3ODIyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZSk6CisK
IDIwMTYtMDEtMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
QWRkIEFQSSB0byBhY2Nlc3MgY2xvc2VkIHNoYWRvd1Jvb3QgaW4gSW5qZWN0ZWRCdW5kbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQmFzZTY0LmNwcAppbmRleCAxZGZkOGRkMzM2ZmZkNDY4ZTdjNzdmYzEwZjE1YjIwY2Yw
MDJiZjlkLi5mZmQ2ZmFmNGE5ODQxNDhlOWY0MmQzNDlkNTczZDk4MGFkZmQ2Yzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9CYXNlNjQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgIENvcHlyaWdodCAoQykgMjAw
MC0yMDAxIERhd2l0IEFsZW1heWVodSA8YWRhd2l0QGtkZS5vcmc+CiAgICBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KLSAgIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICAgQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJv
Z2FAcGFyb2dhLmNvbT4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lk
IGJhc2U2NFVSTEVuY29kZShjb25zdCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3Rvcjxj
aGFyPiYgb3V0KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RhdGljIGlubGluZSBib29s
IGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgVmVj
dG9yPGNoYXI+JiBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3ksIGNvbnN0IGNoYXIgKCZk
ZWNvZGVNYXApWzEyOF0pCitzdGF0aWMgaW5saW5lIGJvb2wgYmFzZTY0RGVjb2RlSW50ZXJuYWwo
Y29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8Y2hhcj4mIG91dCwgdW5zaWdu
ZWQgb3B0aW9ucywgY29uc3QgY2hhciAoJmRlY29kZU1hcClbMTI4XSkKIHsKICAgICBvdXQuY2xl
YXIoKTsKICAgICBpZiAoIWxlbmd0aCkKQEAgLTE5MiwyOSArMTkyLDQ3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIFZlY3RvcjxjCiAKICAgICB1bnNpZ25lZCBlcXVhbHNTaWduQ291bnQgPSAwOwogICAgIHVu
c2lnbmVkIG91dExlbmd0aCA9IDA7CisgICAgYm9vbCBoYWRFcnJvciA9IGZhbHNlOwogICAgIGZv
ciAodW5zaWduZWQgaWR4ID0gMDsgaWR4IDwgbGVuZ3RoOyArK2lkeCkgewogICAgICAgICB1bnNp
Z25lZCBjaCA9IGRhdGFbaWR4XTsKICAgICAgICAgaWYgKGNoID09ICc9JykgewogICAgICAgICAg
ICAgKytlcXVhbHNTaWduQ291bnQ7Ci0gICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
cGFkZGluZyBpZiBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiA0LCBhbmQgdGhlcmUKLSAgICAgICAg
ICAgIC8vIHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4gMiBwYWRkaW5nIGNoYXJhY3RlcnMuCi0g
ICAgICAgICAgICBpZiAocG9saWN5ID09IEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJPckV4
Y2Vzc1BhZGRpbmcgJiYgKGxlbmd0aCAlIDQgfHwgZXF1YWxzU2lnbkNvdW50ID4gMikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIG5l
dmVyIGJlIG1vcmUgdGhhbiAyIHBhZGRpbmcgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIGlmIChv
cHRpb25zICYgQmFzZTY0VmFsaWRhdGVQYWRkaW5nICYmIGVxdWFsc1NpZ25Db3VudCA+IDIpIHsK
KyAgICAgICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjaGFyIGRlY29k
ZWRDaGFyYWN0ZXIgPSBjaCA8IFdURl9BUlJBWV9MRU5HVEgoZGVjb2RlTWFwKSA/IGRlY29kZU1h
cFtjaF0gOiBub25BbHBoYWJldDsKICAgICAgICAgICAgIGlmIChkZWNvZGVkQ2hhcmFjdGVyICE9
IG5vbkFscGhhYmV0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFsc1NpZ25Db3VudCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIG91dFtvdXRM
ZW5ndGhdID0gZGVjb2RlZENoYXJhY3RlcjsKLSAgICAgICAgICAgICAgICArK291dExlbmd0aDsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAocG9saWN5ID09IEJhc2U2NEZhaWxPbkludmFsaWRDaGFy
YWN0ZXJPckV4Y2Vzc1BhZGRpbmcgfHwgcG9saWN5ID09IEJhc2U2NEZhaWxPbkludmFsaWRDaGFy
YWN0ZXIgfHwgKHBvbGljeSA9PSBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNlICYmICFpc1NwYWNlT3JO
ZXdsaW5lKGNoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIGlmIChlcXVhbHNTaWduQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaGFkRXJyb3Ig
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgb3V0W291dExlbmd0aCsrXSA9IGRlY29kZWRDaGFyYWN0ZXI7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCEob3B0aW9ucyAmIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xp
bmVzKSB8fCAhaXNTcGFjZU9yTmV3bGluZShjaCkpIHsKKyAgICAgICAgICAgICAgICBoYWRFcnJv
ciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICAvLyBNYWtlIHN1cmUgd2Ugc2hyaW5rIGJhY2sgdGhlIFZlY3RvciBi
ZWZvcmUgcmV0dXJuaW5nLiBvdXRMZW5ndGggbWF5IGJlIHNob3J0ZXIgdGhhbiBleHBlY3RlZAor
ICAgIC8vIGluIGNhc2Ugb2YgZXJyb3Igb3IgaW4gY2FzZSBvZiBpZ25vcmVkIHNwYWNlcy4KKyAg
ICBpZiAob3V0TGVuZ3RoIDwgb3V0LnNpemUoKSkKKyAgICAgICAgb3V0LnNocmluayhvdXRMZW5n
dGgpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBp
ZiAoIW91dExlbmd0aCkKICAgICAgICAgcmV0dXJuICFlcXVhbHNTaWduQ291bnQ7CiAKKyAgICAv
LyBUaGUgc2hvdWxkIGJlIG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgNC4K
KyAgICAvLyBXZSB1c2UgKG91dExlbmd0aCArIGVxdWFsc1NpZ25Db3VudCkgaW5zdGVhZCBvZiBs
ZW5ndGggYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFjY291bnQgZm9yIGlnbm9yZWQgY2hhcmFj
dGVycyAoaS5lLiBzcGFjZXMpLgorICAgIGlmIChvcHRpb25zICYgQmFzZTY0VmFsaWRhdGVQYWRk
aW5nICYmIGVxdWFsc1NpZ25Db3VudCAmJiAob3V0TGVuZ3RoICsgZXF1YWxzU2lnbkNvdW50KSAl
IDQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIFZhbGlkIGRhdGEgaXMgKG4gKiA0
ICsgWzAsMiwzXSkgY2hhcmFjdGVycyBsb25nLgogICAgIGlmICgob3V0TGVuZ3RoICUgNCkgPT0g
MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ4LDE1ICsyNjYsMTUgQEAgc3RhdGljIGlu
bGluZSBib29sIGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgVmVjdG9yPGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBiYXNlNjREZWNvZGUo
Y29uc3QgU3RyaW5nJiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCwg
QmFzZTY0RGVjb2RlUG9saWN5IHBvbGljeSkKK2Jvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmlu
ZyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2lnbmVkIG9w
dGlvbnMpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW4ubGVuZ3RoKCk7CiAgICAgaWYgKCFs
ZW5ndGggfHwgaW4uaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5h
bChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgcG9saWN5LCBiYXNlNjREZWNNYXApOwot
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
LCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKKyAgICAgICAgcmV0dXJuIGJhc2U2NERlY29k
ZUludGVybmFsKGluLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjRE
ZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzMTYo
KSwgbGVuZ3RoLCBvdXQsIG9wdGlvbnMsIGJhc2U2NERlY01hcCk7CiB9CiAKLWJvb2wgYmFzZTY0
RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kpCitib29sIGJhc2U2NERlY29k
ZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0
ZXIgb3V0LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIG91dC5jbGVhcigpOwogCkBAIC0yNjQs
MjAgKzI4MiwyMCBAQCBib29sIGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBT
aWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0LAogICAgIGlmIChpbi5zaXplKCkg
PiBVSU5UX01BWCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGJhc2U2NERl
Y29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihpbi5kYXRhKCkpLCBp
bi5zaXplKCksIG91dCwgcG9saWN5LCBiYXNlNjREZWNNYXApOworICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oaW4uZGF0YSgpKSwg
aW4uc2l6ZSgpLCBvdXQsIG9wdGlvbnMsIGJhc2U2NERlY01hcCk7CiB9CiAKLWJvb2wgYmFzZTY0
RGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgU2lnbmVkT3JVbnNpZ25lZENo
YXJWZWN0b3JBZGFwdGVyIG91dCwgQmFzZTY0RGVjb2RlUG9saWN5IHBvbGljeSkKK2Jvb2wgYmFz
ZTY0RGVjb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgU2lnbmVkT3JVbnNpZ25l
ZENoYXJWZWN0b3JBZGFwdGVyIG91dCwgdW5zaWduZWQgb3B0aW9ucykKIHsKLSAgICByZXR1cm4g
YmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEp
LCBsZW4sIG91dCwgcG9saWN5LCBiYXNlNjREZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oZGF0YSksIGxlbiwgb3V0
LCBvcHRpb25zLCBiYXNlNjREZWNNYXApOwogfQogCiBib29sIGJhc2U2NFVSTERlY29kZShjb25z
dCBTdHJpbmcmIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGluLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGlu
LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFj
dGVyczgoKSwgbGVuZ3RoLCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2
NFVSTERlY01hcCk7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJhY3Rl
cnMxNigpLCBsZW5ndGgsIG91dCwgQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3RlciwgYmFzZTY0
VVJMRGVjTWFwKTsKKyAgICAgICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGluLmNoYXJh
Y3RlcnM4KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwor
ICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
LCBvdXQsIEJhc2U2NERlZmF1bHQsIGJhc2U2NFVSTERlY01hcCk7CiB9CiAKIGJvb2wgYmFzZTY0
VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVj
dG9yQWRhcHRlciBvdXQpCkBAIC0yODgsMTIgKzMwNiwxMiBAQCBib29sIGJhc2U2NFVSTERlY29k
ZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0
ZXIgbwogICAgIGlmIChpbi5zaXplKCkgPiBVSU5UX01BWCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihpbi5kYXRhKCkpLCBpbi5zaXplKCksIG91dCwgQmFzZTY0RmFpbE9uSW52YWxp
ZENoYXJhY3RlciwgYmFzZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50
ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGluLmRhdGEoKSksIGluLnNpemUo
KSwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxEZWNNYXApOwogfQogCiBib29sIGJhc2U2
NFVSTERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNpZ25lZE9yVW5zaWdu
ZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVy
bmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihkYXRhKSwgbGVuLCBvdXQsIEJhc2U2
NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgcmV0dXJuIGJh
c2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihkYXRhKSwg
bGVuLCBvdXQsIEJhc2U2NERlZmF1bHQsIGJhc2U2NFVSTERlY01hcCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmgKaW5kZXggNGRlNjAxMzBiNzM4ZDIzMzNhYTg3OGZm
NDM0MDlkYjViYjFlZmE5YS4uZTg4YmE4YWRiMWMzZTMwZGVmOWNlOTk5ZWRmMGEyMzRiMzRkNDgz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCwxMSArNDAsMTAgQEAgZW51bSBCYXNlNjRF
bmNvZGVQb2xpY3kgewogICAgIEJhc2U2NFVSTFBvbGljeSAvLyBObyBwYWRkaW5nLCBubyBMRnMu
CiB9OwogCi1lbnVtIEJhc2U2NERlY29kZVBvbGljeSB7Ci0gICAgQmFzZTY0RmFpbE9uSW52YWxp
ZENoYXJhY3Rlck9yRXhjZXNzUGFkZGluZywKLSAgICBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFj
dGVyLAotICAgIEJhc2U2NElnbm9yZVdoaXRlc3BhY2UsCi0gICAgQmFzZTY0SWdub3JlSW52YWxp
ZENoYXJhY3RlcnMKK2VudW0gQmFzZTY0RGVjb2RlT3B0aW9ucyB7CisgICAgQmFzZTY0RGVmYXVs
dCA9IDAsCisgICAgQmFzZTY0VmFsaWRhdGVQYWRkaW5nID0gMSA8PCAwLAorICAgIEJhc2U2NEln
bm9yZVNwYWNlc0FuZE5ld0xpbmVzID0gMSA8PCAxLAogfTsKIAogY2xhc3MgU2lnbmVkT3JVbnNp
Z25lZENoYXJWZWN0b3JBZGFwdGVyIHsKQEAgLTg1LDkgKzg0LDkgQEAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBiYXNlNjRFbmNvZGUoY29uc3Qgdm9pZCosIHVuc2lnbmVkLCBCYXNlNjRFbmNv
ZGVQb2xpY3kKIFN0cmluZyBiYXNlNjRFbmNvZGUoQ29uc3RTaWduZWRPclVuc2lnbmVkQ2hhclZl
Y3RvckFkYXB0ZXIsIEJhc2U2NEVuY29kZVBvbGljeSA9IEJhc2U2NERvTm90SW5zZXJ0TEZzKTsK
IFN0cmluZyBiYXNlNjRFbmNvZGUoY29uc3QgQ1N0cmluZyYsIEJhc2U2NEVuY29kZVBvbGljeSA9
IEJhc2U2NERvTm90SW5zZXJ0TEZzKTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0
RGVjb2RlKGNvbnN0IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwg
QmFzZTY0RGVjb2RlUG9saWN5ID0gQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rlcik7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgU2ln
bmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCBCYXNlNjREZWNvZGVQb2xpY3kgPSBCYXNl
NjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyKTsKLVdURl9FWFBPUlRfUFJJVkFURSBib29sIGJhc2U2
NERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9y
QWRhcHRlciwgQmFzZTY0RGVjb2RlUG9saWN5ID0gQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rl
cik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiwg
U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFz
ZTY0RGVmYXVsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3Qg
VmVjdG9yPGNoYXI+JiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1bnNpZ25l
ZCBvcHRpb25zID0gQmFzZTY0RGVmYXVsdCk7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNl
NjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3Rv
ckFkYXB0ZXIsIHVuc2lnbmVkIG9wdGlvbnMgPSBCYXNlNjREZWZhdWx0KTsKIAogaW5saW5lIHZv
aWQgYmFzZTY0RW5jb2RlKENvbnN0U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIGlu
LCBWZWN0b3I8Y2hhcj4mIG91dCwgQmFzZTY0RW5jb2RlUG9saWN5IHBvbGljeSkKIHsKQEAgLTE1
MSwxMSArMTUwLDggQEAgaW5saW5lIFN0cmluZyBiYXNlNjRVUkxFbmNvZGUoY29uc3QgQ1N0cmlu
ZyYgaW4pCiB1c2luZyBXVEY6OkJhc2U2NEVuY29kZVBvbGljeTsKIHVzaW5nIFdURjo6QmFzZTY0
RG9Ob3RJbnNlcnRMRnM7CiB1c2luZyBXVEY6OkJhc2U2NEluc2VydExGczsKLXVzaW5nIFdURjo6
QmFzZTY0RGVjb2RlUG9saWN5OwotdXNpbmcgV1RGOjpCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFj
dGVyT3JFeGNlc3NQYWRkaW5nOwotdXNpbmcgV1RGOjpCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFj
dGVyOwotdXNpbmcgV1RGOjpCYXNlNjRJZ25vcmVXaGl0ZXNwYWNlOwotdXNpbmcgV1RGOjpCYXNl
NjRJZ25vcmVJbnZhbGlkQ2hhcmFjdGVyczsKK3VzaW5nIFdURjo6QmFzZTY0VmFsaWRhdGVQYWRk
aW5nOwordXNpbmcgV1RGOjpCYXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lczsKIHVzaW5nIFdU
Rjo6YmFzZTY0RW5jb2RlOwogdXNpbmcgV1RGOjpiYXNlNjREZWNvZGU7CiB1c2luZyBXVEY6OmJh
c2U2NFVSTERlY29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA4NjJiOTAyNThl
MTFhNzhmYjk4NzBjNzY1NTcxOWVjYmJhYWQ1M2Q2Li44ZTMzYTc3M2Y0ZmJkMjliOWZhZWFmNzVm
NzM1ZDYyZDYxOGM0ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMTYwLDcg
KzExNjAsNyBAQCBTdHJpbmcgRE9NV2luZG93OjphdG9iKGNvbnN0IFN0cmluZyYgZW5jb2RlZFN0
cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IG91dDsK
LSAgICBpZiAoIWJhc2U2NERlY29kZShlbmNvZGVkU3RyaW5nLCBvdXQsIEJhc2U2NEZhaWxPbklu
dmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcpKSB7CisgICAgaWYgKCFiYXNlNjREZWNvZGUo
ZW5jb2RlZFN0cmluZywgb3V0LCBCYXNlNjRWYWxpZGF0ZVBhZGRpbmcgfCBCYXNlNjRJZ25vcmVT
cGFjZXNBbmROZXdMaW5lcykpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBh
MzRiZjZjNzlmNWI5NThiOTFkMjdiNGZiMDE1ZTk4Mjc4NGM5NWE4Li41MWMyNjkxMmQxOGU0YjU3
ZmQ2ZDg5M2VjMjRkODA1ZjQxZTkxYjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEwMzIsNyAr
MTAzMiw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogICAg
ICAgICBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCA9IHRydWU7CiAKICAgICAgICAgVmVjdG9yPGNo
YXI+IHN0eWxlU2hlZXRBc1VURjg7Ci0gICAgICAgIGlmIChiYXNlNjREZWNvZGUoZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMzUpKSwgc3R5bGVTaGVldEFz
VVRGOCwgQmFzZTY0SWdub3JlV2hpdGVzcGFjZSkpCisgICAgICAgIGlmIChiYXNlNjREZWNvZGUo
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMzUpKSwgc3R5
bGVTaGVldEFzVVRGOCwgQmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpKQogICAgICAgICAg
ICAgbV91c2VyU3R5bGVTaGVldCA9IFN0cmluZzo6ZnJvbVVURjgoc3R5bGVTaGVldEFzVVRGOC5k
YXRhKCksIHN0eWxlU2hlZXRBc1VURjguc2l6ZSgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCmluZGV4IDIyOTYwMGU4N2ZhOTBkYmNmYTEz
YmZlZGQzNWMxZWM0OThlOWI5MDIuLjljMWZiMTI2MjUxNzk1Njg1NWIyOTQwZmMzMjViYjhhZThk
YTAxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcApA
QCAtNzYsNyArNzYsNyBAQCB2b2lkIGhhbmRsZURhdGFVUkwoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSkKICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwg
cmVzcG9uc2UpOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgICAgIGlmIChiYXNl
NjREZWNvZGUoZGF0YSwgb3V0LCBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNlKSAmJiBvdXQuc2l6ZSgp
ID4gMCkgeworICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRhdGEsIG91dCwgQmFzZTY0SWdub3Jl
U3BhY2VzQW5kTmV3TGluZXMpICYmIG91dC5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICByZXNw
b25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgob3V0LnNpemUoKSk7CiAgICAgICAgICAgICBo
YW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShoYW5kbGUsIG91dC5kYXRhKCksIG91dC5z
aXplKCksIDApOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCmluZGV4IGZiYjZhODMxMjg1NTEyYjkyMmY2YTZjYTZi
YmQ4MDMzMGI0NDUxYjkuLjU4OTczYmM1MDM5ZWJmNzQyYjRmNjE4YTMyOWY5YTAwZDAxZWYyNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgZGVjb2RlQmFzZTY0KERlY29k
ZVRhc2smIHRhc2spCiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUodGFzay5lbmNvZGVkRGF0YS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIGJ1ZmZlcikpIHsKICAgICAgICAgLy8gRGlkbid0IHdv
cmssIHRyeSB1bmVzY2FwaW5nIGFuZCBkZWNvZGluZyBhcyBiYXNlNjQuCiAgICAgICAgIGF1dG8g
dW5lc2NhcGVkU3RyaW5nID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHRhc2suZW5jb2RlZERh
dGEudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKLSAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUo
dW5lc2NhcGVkU3RyaW5nLCBidWZmZXIsIEJhc2U2NElnbm9yZVdoaXRlc3BhY2UpKQorICAgICAg
ICBpZiAoIWJhc2U2NERlY29kZSh1bmVzY2FwZWRTdHJpbmcsIGJ1ZmZlciwgQmFzZTY0SWdub3Jl
U3BhY2VzQW5kTmV3TGluZXMpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBidWZm
ZXIuc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCAzMTIwZTI2ZWUxMTg4ZDNlNjY5ZGM0
ZWFmNTFjMGI2MDRlZjk0ZTM1Li4wOWQxMGM2YzA3N2QyZjE5YjdkYjI3MzljMWRlZDU2ZjliNjAz
N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgICAgICBWZWN0b3I8
Y2hhcj4gb3V0OwotICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudENvcHksIG91
dCwgQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rlck9yRXhjZXNzUGFkZGluZykpCisgICAgICAg
ICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50Q29weSwgb3V0LCBCYXNlNjRWYWxpZGF0ZVBh
ZGRpbmcpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGFDb250ZW50ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czpvdXQuZGF0YSgpIGxlbmd0aDpvdXQuc2l6ZSgpXSk7CiAgICAgICAgICAgICBbZGF0YUNvbnRl
bnQgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMGU3
ZmQ2YzYzODdmM2MxZDE3MWNkYzcwNDQ1OTg4NjIzYjUxMjUxOS4uZTEyNDcwMzRiYTY2YzFmM2I1
ZDgwMTc2ZGNmYTI2N2MzNmU2ODA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC01NjgsNyArNTY4LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
VVJMLCBjb25zdCBTdHJpbmcmIGMKIAogICAgICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAg
ICAgICAgICAgVmVjdG9yPGNoYXI+IG91dDsKLSAgICAgICAgICAgIGlmICghYmFzZTY0RGVjb2Rl
KGNvbnRlbnRDb3B5LCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1Bh
ZGRpbmcpKQorICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudENvcHksIG91dCwg
QmFzZTY0VmFsaWRhdGVQYWRkaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhQ29udGVudCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXM6b3V0LmRhdGEoKSBsZW5ndGg6b3V0LnNpemUoKV0pOwogICAgICAg
ICAgICAgW2RhdGFDb250ZW50IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTXTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OThhYjAxNWYwNzg3MGY5NzM1ZDg0ZjI2YjU1Yzg1YmNlNDg5ZTJjLi43ZjIzMGJk
NDE3MmY0MWM3NmUzNDA0OWE3NWJhNDRlNGQ5Yzc3MGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTYtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICB3
aW5kb3cuYXRvYigpIHNob3VsZCBpZ25vcmUgc3BhY2VzIGluIGlucHV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1MjIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI0MzU3ODIyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSB3aW5kb3cuYXRvYigpIHRlc3QgdG8gY292ZXIgY2FzZXMgd2l0
aCBzcGFjZXMgaW4KKyAgICAgICAgaW5wdXQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cv
YXRvYi1idG9hLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvYXRvYi1i
dG9hLmh0bWw6CisKIDIwMTYtMDEtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIE1vZGVybiBJREI6IFNRTGl0ZSBiYWNrZW5kIGRvZXNuJ3QgdXBkYXRlIGlu
ZGV4IHJlY29yZHMgYXMgb2JqZWN0IHJlY29yZHMgYXJlIGFkZGVkLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dAppbmRleCA0MzgwYTI1
ZDY5ZThlMTY4YzIzNmJjYjcyYThiMmQ5OTRkZTk0ZjQxLi41OWQzODkzYTZjNWUxOWU3MWJmNzNl
MjgwZDUxZDUzNTE2ZTU4MDUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dApAQCAtMjYsOCArMjYsMTkgQEAgUEFTUyB3aW5kb3cu
YXRvYigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgog
UEFTUyB3aW5kb3cuYXRvYigiIikgaXMgIiIKIFBBU1Mgd2luZG93LmF0b2IobnVsbCkgaXMgIsKe
w6llIgogUEFTUyB3aW5kb3cuYXRvYih1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9i
KCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBE
T00gRXhjZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IERPTSBFeGNlcHRpb24gNS4KK1BB
U1Mgd2luZG93LmF0b2IoIiBZUT09IikgaXMgImEiCitQQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUw
MDBhIikgaXMgImEiCitQQVNTIHdpbmRvdy5hdG9iKCJhYlx0Y2QiKSBpcyAiacK3HSIKK1BBU1Mg
d2luZG93LmF0b2IoImFiXG5jZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiYWJcZmNk
IikgaXMgImnCtx0iCitQQVNTIHdpbmRvdy5hdG9iKCJhYiBjZCIpIGlzICJpwrcdIgorUEFTUyB3
aW5kb3cuYXRvYigiYWJcdFxuXGZcciBjZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigi
IFx0XG5cZlxyIGFiXHRcblxmXHIgY2RcdFxuXGZcciAiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93
LmF0b2IoImFiXHRcblxmXHIgPVx0XG5cZlxyID1cdFxuXGZcciAiKSBpcyAiaSIKK1BBU1Mgd2lu
ZG93LmF0b2IoIiAgICAgICAgICAgICIpIGlzICIiCitQQVNTIHdpbmRvdy5hdG9iKCIgYWJjZD09
PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhj
ZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCJhYmNkPT09ICIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRv
dy5hdG9iKCJhYmNkID09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3Rl
ckVycm9yOiBET00gRXhjZXB0aW9uIDUuCiBQQVNTIHdpbmRvdy5hdG9iKCI2ZWs9IikgaXMgIsOp
w6kiCiBQQVNTIHdpbmRvdy5hdG9iKCI2ZWsiKSBpcyAiw6nDqSIKIFBBU1Mgd2luZG93LmF0b2Io
ImdJRT0iKSBpcyAiwoDCgSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRv
dy9hdG9iLWJ0b2EuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2Eu
aHRtbAppbmRleCA0MTQ0ZTFkMDZlM2NlN2NlOWFmYWNkMmYxZTUzYzY0ZWE5MTFmYjkyLi4xZDA2
NmM2NzZjYjU0OWVmMzdjNGEwYTdlNTVhNzlkMGI1OTE0M2FkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2F0b2ItYnRvYS5odG1sCkBAIC0zNiw4ICszNiwxOSBAQCBzaG91bGRUaHJv
dygnd2luZG93LmF0b2IoKScsICciVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cyInKTsK
IHNob3VsZEJlKCd3aW5kb3cuYXRvYigiIiknLCAnIiInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRv
YihudWxsKScsICciXHg5RcOpZSInKTsgLy8gR2V0cyBjb252ZXJ0ZWQgdG8gIm51bGwiIHN0cmlu
Zy4KIHNob3VsZFRocm93KCd3aW5kb3cuYXRvYih1bmRlZmluZWQpJyk7Ci1zaG91bGRUaHJvdygn
d2luZG93LmF0b2IoIiBZUT09IiknKTsKLXNob3VsZFRocm93KCd3aW5kb3cuYXRvYigiWVE9PVxc
dTAwMGEiKScpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCIgWVE9PSIpJywgJyJhIicpOworc2hv
dWxkQmUoJ3dpbmRvdy5hdG9iKCJZUT09XFx1MDAwYSIpJywgJyJhIicpOworc2hvdWxkQmUoJ3dp
bmRvdy5hdG9iKCJhYlxcdGNkIiknLCAnImnCt1x4MWQiJyk7CitzaG91bGRCZSgnd2luZG93LmF0
b2IoImFiXFxuY2QiKScsICciacK3XHgxZCInKTsKK3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiYWJc
XGZjZCIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYiBjZCIpJywg
JyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxcdFxcblxcZlxcciBjZCIp
JywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCIgXFx0XFxuXFxmXFxyIGFi
XFx0XFxuXFxmXFxyIGNkXFx0XFxuXFxmXFxyICIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUo
J3dpbmRvdy5hdG9iKCJhYlxcdFxcblxcZlxcciA9XFx0XFxuXFxmXFxyID1cXHRcXG5cXGZcXHIg
IiknLCAnImkiJyk7CitzaG91bGRCZSgnd2luZG93LmF0b2IoIiAgICAgICAgICAgICIpJywgJyIi
Jyk7CitzaG91bGRUaHJvdygnd2luZG93LmF0b2IoIiBhYmNkPT09IiknKTsKK3Nob3VsZFRocm93
KCd3aW5kb3cuYXRvYigiYWJjZD09PSAiKScpOworc2hvdWxkVGhyb3coJ3dpbmRvdy5hdG9iKCJh
YmNkID09PSIpJyk7CiBzaG91bGRCZSgnd2luZG93LmF0b2IoIjZlaz0iKScsICciw6nDqSInKTsK
IHNob3VsZEJlKCd3aW5kb3cuYXRvYigiNmVrIiknLCAnIsOpw6kiJyk7CiBzaG91bGRCZSgnd2lu
ZG93LmF0b2IoImdJRT0iKScsICciXHUwMDgwXHUwMDgxIicpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270044</attachid>
            <date>2016-01-27 14:37:21 -0800</date>
            <delta_ts>2016-01-27 14:37:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153522-20160127143655.patch</filename>
            <type>text/plain</type>
            <size>22124</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRlODc1MmM4NTU4YzViYTBiZjc5Zjgy
MDI4N2YxN2NiOTY4MTExNDcuLjliOWM4YzIwNTc0YjM1NWYzOGEyODUwYTgzODJiZjMxYjk0MmVj
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDEtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICB3aW5kb3cuYXRvYigpIHNob3VsZCBpZ25vcmUgc3BhY2Vz
IGluIGlucHV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTM1MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MzU3ODIyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgVHVybiBCYXNlNjREZWNvZGVQ
b2xpY3kgZW51bSBpbnRvIGZsYWdzIHNvIHRoYXQgdGhlIGNhbGxlciBjYW4gaW5kaWNhdGUKKyAg
ICAgICAgdG8gYm90aCB2YWxpZGF0ZSBwYWRkaW5nIEFORCBpZ25vcmUgc3BhY2VzLgorCisgICAg
ICAgIEFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIG91dHB1dCBWZWN0b3Igc2l6ZSBpcyBwcm9wZXJs
eSBzaHJ1bmsgd2hlbgorICAgICAgICBzcGFjZXMgYXJlIGlnbm9yZWQuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV1RGOjpiYXNlNjREZWNvZGVJbnRlcm5hbCk6
CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6CisgICAgICAgIChXVEY6OmJhc2U2NFVSTERl
Y29kZSk6CisgICAgICAgICogd3RmL3RleHQvQmFzZTY0Lmg6CisKIDIwMTYtMDEtMjcgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9D
VVJSRU5UU1JDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM5NTE3NzYzMDFiYTBmYzM3YzBkMzNhYTZkMWU3ODI5
NWYxZTY4OC4uYmIyNDliZWUyOGQwMmFjOGYwNDI1ODJlYTdjNzM2NWI5NTI0OWU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQgaWdub3JlIHNwYWNlcyBp
biBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzNTIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDM1NzgyMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIHdpbmRvdy5hdG9iKCkgc2hvdWxk
IGlnbm9yZSBzcGFjZXMgaW4gaW5wdXQgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvI2RvbS13aW5kb3diYXNlNjQtYXRvYiAoU3RlcCAzKQorCisgICAgICAg
IFByZXZpb3VzbHksIFdlYktpdCB3b3VsZCB0aHJvdyBhbiBleGNlcHRpb24gYW5kIGl0IHdhcyB0
aGUgb25seSBicm93c2VyCisgICAgICAgIHRvIGRvIHNvLiBGaXJlZm94IGFuZCBDaHJvbWUgYmVo
YXZpb3IgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRoaXMgd2Fz
IGNhdXNpbmcgdXMgdG8gZmFpbCAxMCBjaGVja3MgaW4gdGhlIGZvbGxvd2luZyBXM0MgSFRNTCB0
ZXN0OgorICAgICAgICBodHRwOi8vdzNjLXRlc3Qub3JnL2h0bWwvd2ViYXBwYXBpcy9hdG9iL2Jh
c2U2NC5odG1sCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRhdGVkIGV4aXN0aW5nIHRlc3Qu
CisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmF0b2IpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZURhdGFVUkwp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OmRlY29kZUJhc2U2NCk6CisKIDIwMTYtMDEtMjcg
IEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBzb21lIGxvZ2lj
IHJlbGF0ZWQgdG8gdGhlIHByZXNlbnRhdGlvbiBtb2RlIGJ1dHRvbiBmcm9tIG1lZGlhQ29udHJv
bHNpT1MuanMgdG8gbWVkaWFDb250cm9sc0FwcGxlLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZTcw
YzhhNzE5YjE5NDk4MzM4NDZkYzJkYmM4YjI5NmU2NDI2YjEzYy4uNDIwYzYwYWFhNTY2ZTY1NDM2
NTAxODcyMzQ1MmViOGRmYThlMWEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDE2LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
d2luZG93LmF0b2IoKSBzaG91bGQgaWdub3JlIHNwYWNlcyBpbiBpbnB1dAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTIyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNDM1NzgyMj4KKworICAgICAgICBSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3Vs
YWluLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUpOgorCiAyMDE2LTAxLTI3
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBF
TkFCTEVfQ1VSUkVOVFNSQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY4NTI5MzgxMTU0MWFkYzYzNmY0OTllN2Qy
Y2E0NTVkMGNhYzZmNjEuLjRhNGY5ZDJhOTk5MjVhNmZjZTM5OTFiZDk5Mjk0YjZlN2ZhMGIxYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMS0yNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGlnbm9yZSBz
cGFjZXMgaW4gaW5wdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzUyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQzNTc4MjI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybVNhdmUpOgorCiAyMDE2LTAxLTI3ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBBUEkgdG8gYWNjZXNzIGNsb3NlZCBzaGFkb3dS
b290IGluIEluamVjdGVkQnVuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jh
c2U2NC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggMWRmZDhkZDMz
NmZmZDQ2OGU3Yzc3ZmMxMGYxNWIyMGNmMDAyYmY5ZC4uZmZkNmZhZjRhOTg0MTQ4ZTlmNDJkMzQ5
ZDU3M2Q5ODBhZGZkNmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSBEYXdpdCBBbGVtYXllaHUgPGFkYXdpdEBr
ZGUub3JnPgogICAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdl
YmtpdC5vcmc+Ci0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIENvcHlyaWdodCAoQykgMjAx
MCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAKICAgIFRoaXMgcHJvZ3Jh
bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBiYXNlNjRVUkxFbmNvZGUoY29uc3Qgdm9pZCogZGF0
YSwgdW5zaWduZWQgbGVuLCBWZWN0b3I8Y2hhcj4mIG91dCkKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLXN0YXRpYyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdCBUKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxjaGFyPiYgb3V0LCBCYXNlNjREZWNvZGVQb2xp
Y3kgcG9saWN5LCBjb25zdCBjaGFyICgmZGVjb2RlTWFwKVsxMjhdKQorc3RhdGljIGlubGluZSBi
b29sIGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
VmVjdG9yPGNoYXI+JiBvdXQsIHVuc2lnbmVkIG9wdGlvbnMsIGNvbnN0IGNoYXIgKCZkZWNvZGVN
YXApWzEyOF0pCiB7CiAgICAgb3V0LmNsZWFyKCk7CiAgICAgaWYgKCFsZW5ndGgpCkBAIC0xOTIs
MjkgKzE5Miw0NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29u
c3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8YwogCiAgICAgdW5zaWduZWQgZXF1
YWxzU2lnbkNvdW50ID0gMDsKICAgICB1bnNpZ25lZCBvdXRMZW5ndGggPSAwOworICAgIGJvb2wg
aGFkRXJyb3IgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGlkeCA9IDA7IGlkeCA8IGxlbmd0
aDsgKytpZHgpIHsKICAgICAgICAgdW5zaWduZWQgY2ggPSBkYXRhW2lkeF07CiAgICAgICAgIGlm
IChjaCA9PSAnPScpIHsKICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwotICAgICAgICAg
ICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUg
b2YgNCwgYW5kIHRoZXJlCi0gICAgICAgICAgICAvLyBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFu
IDIgcGFkZGluZyBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgaWYgKHBvbGljeSA9PSBCYXNlNjRG
YWlsT25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nICYmIChsZW5ndGggJSA0IHx8IGVx
dWFsc1NpZ25Db3VudCA+IDIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIC8vIFRoZXJlIHNob3VsZCBuZXZlciBiZSBtb3JlIHRoYW4gMiBwYWRkaW5nIGNoYXJh
Y3RlcnMuCisgICAgICAgICAgICBpZiAob3B0aW9ucyAmIEJhc2U2NFZhbGlkYXRlUGFkZGluZyAm
JiBlcXVhbHNTaWduQ291bnQgPiAyKSB7CisgICAgICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgY2hhciBkZWNvZGVkQ2hhcmFjdGVyID0gY2ggPCBXVEZfQVJSQVlfTEVO
R1RIKGRlY29kZU1hcCkgPyBkZWNvZGVNYXBbY2hdIDogbm9uQWxwaGFiZXQ7CiAgICAgICAgICAg
ICBpZiAoZGVjb2RlZENoYXJhY3RlciAhPSBub25BbHBoYWJldCkgewotICAgICAgICAgICAgICAg
IGlmIChlcXVhbHNTaWduQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgICBvdXRbb3V0TGVuZ3RoXSA9IGRlY29kZWRDaGFyYWN0ZXI7Ci0gICAg
ICAgICAgICAgICAgKytvdXRMZW5ndGg7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGljeSA9
PSBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nIHx8IHBvbGljeSA9
PSBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyIHx8IChwb2xpY3kgPT0gQmFzZTY0SWdub3Jl
V2hpdGVzcGFjZSAmJiAhaXNTcGFjZU9yTmV3bGluZShjaCkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZXF1YWxzU2lnbkNvdW50KSB7CisgICAg
ICAgICAgICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dFtvdXRMZW5ndGgrK10g
PSBkZWNvZGVkQ2hhcmFjdGVyOworICAgICAgICAgICAgfSBlbHNlIGlmICghKG9wdGlvbnMgJiBC
YXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lcykgfHwgIWlzU3BhY2VPck5ld2xpbmUoY2gpKSB7
CisgICAgICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gTWFrZSBzdXJlIHdl
IHNocmluayBiYWNrIHRoZSBWZWN0b3IgYmVmb3JlIHJldHVybmluZy4gb3V0TGVuZ3RoIG1heSBi
ZSBzaG9ydGVyIHRoYW4gZXhwZWN0ZWQKKyAgICAvLyBpbiBjYXNlIG9mIGVycm9yIG9yIGluIGNh
c2Ugb2YgaWdub3JlZCBzcGFjZXMuCisgICAgaWYgKG91dExlbmd0aCA8IG91dC5zaXplKCkpCisg
ICAgICAgIG91dC5zaHJpbmsob3V0TGVuZ3RoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFvdXRMZW5ndGgpCiAgICAgICAgIHJldHVybiAh
ZXF1YWxzU2lnbkNvdW50OwogCisgICAgLy8gVGhlIHNob3VsZCBiZSBubyBwYWRkaW5nIGlmIGxl
bmd0aCBpcyBhIG11bHRpcGxlIG9mIDQuCisgICAgLy8gV2UgdXNlIChvdXRMZW5ndGggKyBlcXVh
bHNTaWduQ291bnQpIGluc3RlYWQgb2YgbGVuZ3RoIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBh
Y2NvdW50IGZvciBpZ25vcmVkIGNoYXJhY3RlcnMgKGkuZS4gc3BhY2VzKS4KKyAgICBpZiAob3B0
aW9ucyAmIEJhc2U2NFZhbGlkYXRlUGFkZGluZyAmJiBlcXVhbHNTaWduQ291bnQgJiYgKG91dExl
bmd0aCArIGVxdWFsc1NpZ25Db3VudCkgJSA0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICAvLyBWYWxpZCBkYXRhIGlzIChuICogNCArIFswLDIsM10pIGNoYXJhY3RlcnMgbG9uZy4KICAg
ICBpZiAoKG91dExlbmd0aCAlIDQpID09IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0
OCwxNSArMjY2LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChj
b25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxjCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYgaW4sIFNpZ25lZE9yVW5zaWdu
ZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kpCitib29s
IGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3Rv
ckFkYXB0ZXIgb3V0LCB1bnNpZ25lZCBvcHRpb25zKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGluLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGluLmlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoaW4uY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCBvdXQs
IHBvbGljeSwgYmFzZTY0RGVjTWFwKTsKLSAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwo
aW4uY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3V0LCBwb2xpY3ksIGJhc2U2NERlY01hcCk7Cisg
ICAgICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5n
dGgsIG91dCwgb3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoaW4uY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3V0LCBvcHRpb25zLCBiYXNlNjRE
ZWNNYXApOwogfQogCi1ib29sIGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBT
aWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kg
cG9saWN5KQorYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVk
T3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCwgdW5zaWduZWQgb3B0aW9ucykKIHsKICAg
ICBvdXQuY2xlYXIoKTsKIApAQCAtMjY0LDIwICsyODIsMjAgQEAgYm9vbCBiYXNlNjREZWNvZGUo
Y29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVy
IG91dCwKICAgICBpZiAoaW4uc2l6ZSgpID4gVUlOVF9NQVgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oaW4uZGF0YSgpKSwgaW4uc2l6ZSgpLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVj
TWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGluLmRhdGEoKSksIGluLnNpemUoKSwgb3V0LCBvcHRpb25zLCBiYXNlNjRE
ZWNNYXApOwogfQogCi1ib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIEJhc2U2NERlY29k
ZVBvbGljeSBwb2xpY3kpCitib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQsIHVuc2lnbmVk
IG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihkYXRhKSwgbGVuLCBvdXQsIHBvbGljeSwgYmFzZTY0RGVjTWFw
KTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KGRhdGEpLCBsZW4sIG91dCwgb3B0aW9ucywgYmFzZTY0RGVjTWFwKTsKIH0KIAog
Ym9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgU3RyaW5nJiBpbiwgU2lnbmVkT3JVbnNpZ25lZENo
YXJWZWN0b3JBZGFwdGVyIG91dCkKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbi5sZW5ndGgo
KTsKICAgICBpZiAoIWxlbmd0aCB8fCBpbi5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGJhc2U2
NERlY29kZUludGVybmFsKGluLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgb3V0LCBCYXNlNjRGYWls
T25JbnZhbGlkQ2hhcmFjdGVyLCBiYXNlNjRVUkxEZWNNYXApOwotICAgIHJldHVybiBiYXNlNjRE
ZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBvdXQsIEJhc2U2NEZhaWxP
bkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7CisgICAgICAgIHJldHVybiBiYXNl
NjREZWNvZGVJbnRlcm5hbChpbi5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIG91dCwgQmFzZTY0RGVm
YXVsdCwgYmFzZTY0VVJMRGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwo
aW4uY2hhcmFjdGVyczE2KCksIGxlbmd0aCwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRVUkxE
ZWNNYXApOwogfQogCiBib29sIGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlu
LCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQpAQCAtMjg4LDEyICszMDYs
MTIgQEAgYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVk
T3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG8KICAgICBpZiAoaW4uc2l6ZSgpID4gVUlOVF9N
QVgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRl
cm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oaW4uZGF0YSgpKSwgaW4uc2l6ZSgp
LCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIGJhc2U2NFVSTERlY01hcCk7Cisg
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihpbi5kYXRhKCkpLCBpbi5zaXplKCksIG91dCwgQmFzZTY0RGVmYXVsdCwgYmFzZTY0VVJM
RGVjTWFwKTsKIH0KIAogYm9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuLCBTaWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIgb3V0KQogewotICAg
IHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oZGF0YSksIGxlbiwgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBiYXNlNjRV
UkxEZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oZGF0YSksIGxlbiwgb3V0LCBCYXNlNjREZWZhdWx0LCBiYXNlNjRV
UkxEZWNNYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQmFzZTY0LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oCmluZGV4
IDRkZTYwMTMwYjczOGQyMzMzYWE4NzhmZjQzNDA5ZGI1YmIxZWZhOWEuLmU4OGJhOGFkYjFjM2Uz
MGRlZjljZTk5OWVkZjBhMjM0YjM0ZDQ4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQmFzZTY0LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuaApAQCAtMSw3ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFy
b2dhQHBhcm9nYS5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAs
MTEgKzQwLDEwIEBAIGVudW0gQmFzZTY0RW5jb2RlUG9saWN5IHsKICAgICBCYXNlNjRVUkxQb2xp
Y3kgLy8gTm8gcGFkZGluZywgbm8gTEZzLgogfTsKIAotZW51bSBCYXNlNjREZWNvZGVQb2xpY3kg
ewotICAgIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJPckV4Y2Vzc1BhZGRpbmcsCi0gICAg
QmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3RlciwKLSAgICBCYXNlNjRJZ25vcmVXaGl0ZXNwYWNl
LAotICAgIEJhc2U2NElnbm9yZUludmFsaWRDaGFyYWN0ZXJzCitlbnVtIEJhc2U2NERlY29kZU9w
dGlvbnMgeworICAgIEJhc2U2NERlZmF1bHQgPSAwLAorICAgIEJhc2U2NFZhbGlkYXRlUGFkZGlu
ZyA9IDEgPDwgMCwKKyAgICBCYXNlNjRJZ25vcmVTcGFjZXNBbmROZXdMaW5lcyA9IDEgPDwgMSwK
IH07CiAKIGNsYXNzIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciB7CkBAIC04NSw5
ICs4NCw5IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IHZv
aWQqLCB1bnNpZ25lZCwgQmFzZTY0RW5jb2RlUG9saWN5CiBTdHJpbmcgYmFzZTY0RW5jb2RlKENv
bnN0U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCBCYXNlNjRFbmNvZGVQb2xpY3kg
PSBCYXNlNjREb05vdEluc2VydExGcyk7CiBTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IENTdHJp
bmcmLCBCYXNlNjRFbmNvZGVQb2xpY3kgPSBCYXNlNjREb05vdEluc2VydExGcyk7CiAKLVdURl9F
WFBPUlRfUFJJVkFURSBib29sIGJhc2U2NERlY29kZShjb25zdCBTdHJpbmcmLCBTaWduZWRPclVu
c2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIsIEJhc2U2NERlY29kZVBvbGljeSA9IEJhc2U2NEZhaWxP
bkludmFsaWRDaGFyYWN0ZXIpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2Rl
KGNvbnN0IFZlY3RvcjxjaGFyPiYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciwg
QmFzZTY0RGVjb2RlUG9saWN5ID0gQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rlcik7Ci1XVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBT
aWduZWRPclVuc2lnbmVkQ2hhclZlY3RvckFkYXB0ZXIsIEJhc2U2NERlY29kZVBvbGljeSA9IEJh
c2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgYmFz
ZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRl
ciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFNpZ25lZE9yVW5zaWduZWRD
aGFyVmVjdG9yQWRhcHRlciwgdW5zaWduZWQgb3B0aW9ucyA9IEJhc2U2NERlZmF1bHQpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyLCB1bnNpZ25lZCBvcHRpb25zID0gQmFz
ZTY0RGVmYXVsdCk7CiAKIGlubGluZSB2b2lkIGJhc2U2NEVuY29kZShDb25zdFNpZ25lZE9yVW5z
aWduZWRDaGFyVmVjdG9yQWRhcHRlciBpbiwgVmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NEVuY29k
ZVBvbGljeSBwb2xpY3kpCiB7CkBAIC0xNTEsMTEgKzE1MCw4IEBAIGlubGluZSBTdHJpbmcgYmFz
ZTY0VVJMRW5jb2RlKGNvbnN0IENTdHJpbmcmIGluKQogdXNpbmcgV1RGOjpCYXNlNjRFbmNvZGVQ
b2xpY3k7CiB1c2luZyBXVEY6OkJhc2U2NERvTm90SW5zZXJ0TEZzOwogdXNpbmcgV1RGOjpCYXNl
NjRJbnNlcnRMRnM7Ci11c2luZyBXVEY6OkJhc2U2NERlY29kZVBvbGljeTsKLXVzaW5nIFdURjo6
QmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3Rlck9yRXhjZXNzUGFkZGluZzsKLXVzaW5nIFdURjo6
QmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3RlcjsKLXVzaW5nIFdURjo6QmFzZTY0SWdub3JlV2hp
dGVzcGFjZTsKLXVzaW5nIFdURjo6QmFzZTY0SWdub3JlSW52YWxpZENoYXJhY3RlcnM7Cit1c2lu
ZyBXVEY6OkJhc2U2NFZhbGlkYXRlUGFkZGluZzsKK3VzaW5nIFdURjo6QmFzZTY0SWdub3JlU3Bh
Y2VzQW5kTmV3TGluZXM7CiB1c2luZyBXVEY6OmJhc2U2NEVuY29kZTsKIHVzaW5nIFdURjo6YmFz
ZTY0RGVjb2RlOwogdXNpbmcgV1RGOjpiYXNlNjRVUkxEZWNvZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggODYyYjkwMjU4ZTExYTc4ZmI5ODcwYzc2NTU3MTllY2JiYWFkNTNkNi4u
OGUzM2E3NzNmNGZiZDI5YjlmYWVhZjc1ZjczNWQ2MmQ2MThjNGVmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtMTE2MCw3ICsxMTYwLDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6YXRv
Yihjb25zdCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0K
IAogICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAgaWYgKCFiYXNlNjREZWNvZGUoZW5jb2RlZFN0
cmluZywgb3V0LCBCYXNlNjRGYWlsT25JbnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nKSkg
eworICAgIGlmICghYmFzZTY0RGVjb2RlKGVuY29kZWRTdHJpbmcsIG91dCwgQmFzZTY0VmFsaWRh
dGVQYWRkaW5nIHwgQmFzZTY0SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggYTM0YmY2Yzc5ZjViOTU4YjkxZDI3YjRmYjAxNWU5ODI3
ODRjOTVhOC4uNTFjMjY5MTJkMThlNGI1N2ZkNmQ4OTNlYzI0ZDgwNWY0MWU5MWI2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNo
ZWV0TG9jYXRpb25DaGFuZ2VkKCkKICAgICAgICAgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgPSB0
cnVlOwogCiAgICAgICAgIFZlY3RvcjxjaGFyPiBzdHlsZVNoZWV0QXNVVEY4OwotICAgICAgICBp
ZiAoYmFzZTY0RGVjb2RlKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3RyaW5nKCkuc3Vi
c3RyaW5nKDM1KSksIHN0eWxlU2hlZXRBc1VURjgsIEJhc2U2NElnbm9yZVdoaXRlc3BhY2UpKQor
ICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwuc3Ry
aW5nKCkuc3Vic3RyaW5nKDM1KSksIHN0eWxlU2hlZXRBc1VURjgsIEJhc2U2NElnbm9yZVNwYWNl
c0FuZE5ld0xpbmVzKSkKICAgICAgICAgICAgIG1fdXNlclN0eWxlU2hlZXQgPSBTdHJpbmc6OmZy
b21VVEY4KHN0eWxlU2hlZXRBc1VURjguZGF0YSgpLCBzdHlsZVNoZWV0QXNVVEY4LnNpemUoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMLmNwcApp
bmRleCAyMjk2MDBlODdmYTkwZGJjZmExM2JmZWRkMzVjMWVjNDk4ZTliOTAyLi45YzFmYjEyNjI1
MTc5NTY4NTViMjk0MGZjMzI1YmI4YWU4ZGEwMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBoYW5kbGVEYXRh
VVJMKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRp
ZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKIAogICAgICAgICBWZWN0b3I8Y2hh
cj4gb3V0OwotICAgICAgICBpZiAoYmFzZTY0RGVjb2RlKGRhdGEsIG91dCwgQmFzZTY0SWdub3Jl
V2hpdGVzcGFjZSkgJiYgb3V0LnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKGJhc2U2NERlY29k
ZShkYXRhLCBvdXQsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSAmJiBvdXQuc2l6ZSgp
ID4gMCkgewogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKG91
dC5zaXplKCkpOwogICAgICAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZURhdGEo
aGFuZGxlLCBvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpLCAwKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBm
YmI2YTgzMTI4NTUxMmI5MjJmNmE2Y2E2YmJkODAzMzBiNDQ1MWI5Li41ODk3M2JjNTAzOWViZjc0
MmI0ZjYxOGEzMjlmOWEwMGQwMWVmMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRp
YyB2b2lkIGRlY29kZUJhc2U2NChEZWNvZGVUYXNrJiB0YXNrKQogICAgIGlmICghYmFzZTY0VVJM
RGVjb2RlKHRhc2suZW5jb2RlZERhdGEudG9TdHJpbmdXaXRob3V0Q29weWluZygpLCBidWZmZXIp
KSB7CiAgICAgICAgIC8vIERpZG4ndCB3b3JrLCB0cnkgdW5lc2NhcGluZyBhbmQgZGVjb2Rpbmcg
YXMgYmFzZTY0LgogICAgICAgICBhdXRvIHVuZXNjYXBlZFN0cmluZyA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyh0YXNrLmVuY29kZWREYXRhLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Ci0g
ICAgICAgIGlmICghYmFzZTY0RGVjb2RlKHVuZXNjYXBlZFN0cmluZywgYnVmZmVyLCBCYXNlNjRJ
Z25vcmVXaGl0ZXNwYWNlKSkKKyAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUodW5lc2NhcGVkU3Ry
aW5nLCBidWZmZXIsIEJhc2U2NElnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYnVmZmVyLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5k
ZXggMzEyMGUyNmVlMTE4OGQzZTY2OWRjNGVhZjUxYzBiNjA0ZWY5NGUzNS4uMDlkMTBjNmMwNzdk
MmYxOWI3ZGIyNzM5YzFkZWQ1NmY5YjYwMzdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtMzEwLDcgKzMx
MCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKIAogICAgICAgICBpZiAoYmFzZTY0RW5jb2Rl
ZCkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IG91dDsKLSAgICAgICAgICAgIGlmICghYmFz
ZTY0RGVjb2RlKGNvbnRlbnRDb3B5LCBvdXQsIEJhc2U2NEZhaWxPbkludmFsaWRDaGFyYWN0ZXJP
ckV4Y2Vzc1BhZGRpbmcpKQorICAgICAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoY29udGVudENv
cHksIG91dCwgQmFzZTY0VmFsaWRhdGVQYWRkaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhQ29udGVudCA9IGFkb3B0TlMoW1tO
U0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6b3V0LmRhdGEoKSBsZW5ndGg6b3V0LnNpemUoKV0p
OwogICAgICAgICAgICAgW2RhdGFDb250ZW50IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2Fs
bHk6WUVTXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3Bl
Y3RvclByb3h5TWFjLm1tCmluZGV4IDBlN2ZkNmM2Mzg3ZjNjMWQxNzFjZGM3MDQ0NTk4ODYyM2I1
MTI1MTkuLmUxMjQ3MDM0YmE2NmMxZjNiNWQ4MDE3NmRjZmEyNjdjMzZlNjgwNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5t
bQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2
ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAKICAgICAgICAg
aWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBvdXQ7Ci0gICAg
ICAgICAgICBpZiAoIWJhc2U2NERlY29kZShjb250ZW50Q29weSwgb3V0LCBCYXNlNjRGYWlsT25J
bnZhbGlkQ2hhcmFjdGVyT3JFeGNlc3NQYWRkaW5nKSkKKyAgICAgICAgICAgIGlmICghYmFzZTY0
RGVjb2RlKGNvbnRlbnRDb3B5LCBvdXQsIEJhc2U2NFZhbGlkYXRlUGFkZGluZykpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YUNvbnRl
bnQgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm91dC5kYXRhKCkgbGVu
Z3RoOm91dC5zaXplKCldKTsKICAgICAgICAgICAgIFtkYXRhQ29udGVudCB3cml0ZVRvVVJMOmFj
dHVhbFVSTCBhdG9taWNhbGx5OllFU107CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTk4YWIwMTVmMDc4NzBmOTczNWQ4NGYy
NmI1NWM4NWJjZTQ4OWUyYy4uYThmODlhZDgxMDYwZThlNzQyMTgwNzExMzNjZGIwYjhkNmQxOTY3
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAxLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgd2luZG93LmF0b2IoKSBzaG91bGQgaWdub3JlIHNwYWNl
cyBpbiBpbnB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNTIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDM1NzgyMj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIFVwZGF0ZSB3aW5kb3cuYXRv
YigpIHRlc3QgdG8gY292ZXIgY2FzZXMgd2l0aCBzcGFjZXMgaW4KKyAgICAgICAgaW5wdXQuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLmh0bWw6CisKIDIwMTYtMDEtMjcgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IFNRTGl0
ZSBiYWNrZW5kIGRvZXNuJ3QgdXBkYXRlIGluZGV4IHJlY29yZHMgYXMgb2JqZWN0IHJlY29yZHMg
YXJlIGFkZGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2It
YnRvYS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9h
LWV4cGVjdGVkLnR4dAppbmRleCA0MzgwYTI1ZDY5ZThlMTY4YzIzNmJjYjcyYThiMmQ5OTRkZTk0
ZjQxLi41OWQzODkzYTZjNWUxOWU3MWJmNzNlMjgwZDUxZDUzNTE2ZTU4MDUyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9hLWV4cGVjdGVkLnR4dApAQCAt
MjYsOCArMjYsMTkgQEAgUEFTUyB3aW5kb3cuYXRvYigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyB3aW5kb3cuYXRvYigiIikgaXMgIiIKIFBB
U1Mgd2luZG93LmF0b2IobnVsbCkgaXMgIsKew6llIgogUEFTUyB3aW5kb3cuYXRvYih1bmRlZmlu
ZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhj
ZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5h
dG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkQ2hhcmFjdGVy
RXJyb3I6IERPTSBFeGNlcHRpb24gNS4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09IikgaXMgImEi
CitQQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgaXMgImEiCitQQVNTIHdpbmRvdy5hdG9i
KCJhYlx0Y2QiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93LmF0b2IoImFiXG5jZCIpIGlzICJpwrcd
IgorUEFTUyB3aW5kb3cuYXRvYigiYWJcZmNkIikgaXMgImnCtx0iCitQQVNTIHdpbmRvdy5hdG9i
KCJhYiBjZCIpIGlzICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiYWJcdFxuXGZcciBjZCIpIGlz
ICJpwrcdIgorUEFTUyB3aW5kb3cuYXRvYigiIFx0XG5cZlxyIGFiXHRcblxmXHIgY2RcdFxuXGZc
ciAiKSBpcyAiacK3HSIKK1BBU1Mgd2luZG93LmF0b2IoImFiXHRcblxmXHIgPVx0XG5cZlxyID1c
dFxuXGZcciAiKSBpcyAiaSIKK1BBU1Mgd2luZG93LmF0b2IoIiAgICAgICAgICAgICIpIGlzICIi
CitQQVNTIHdpbmRvdy5hdG9iKCIgYWJjZD09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52
YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCJh
YmNkPT09ICIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBE
T00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCJhYmNkID09PSIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogSW52YWxpZENoYXJhY3RlckVycm9yOiBET00gRXhjZXB0aW9uIDUuCiBQQVNT
IHdpbmRvdy5hdG9iKCI2ZWs9IikgaXMgIsOpw6kiCiBQQVNTIHdpbmRvdy5hdG9iKCI2ZWsiKSBp
cyAiw6nDqSIKIFBBU1Mgd2luZG93LmF0b2IoImdJRT0iKSBpcyAiwoDCgSIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EuaHRtbAppbmRleCA0MTQ0ZTFkMDZlM2NlN2NlOWFm
YWNkMmYxZTUzYzY0ZWE5MTFmYjkyLi4xZDA2NmM2NzZjYjU0OWVmMzdjNGEwYTdlNTVhNzlkMGI1
OTE0M2FkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvYXRvYi1idG9h
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS5odG1sCkBA
IC0zNiw4ICszNiwxOSBAQCBzaG91bGRUaHJvdygnd2luZG93LmF0b2IoKScsICciVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cyInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRvYigiIiknLCAn
IiInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRvYihudWxsKScsICciXHg5RcOpZSInKTsgLy8gR2V0
cyBjb252ZXJ0ZWQgdG8gIm51bGwiIHN0cmluZy4KIHNob3VsZFRocm93KCd3aW5kb3cuYXRvYih1
bmRlZmluZWQpJyk7Ci1zaG91bGRUaHJvdygnd2luZG93LmF0b2IoIiBZUT09IiknKTsKLXNob3Vs
ZFRocm93KCd3aW5kb3cuYXRvYigiWVE9PVxcdTAwMGEiKScpOworc2hvdWxkQmUoJ3dpbmRvdy5h
dG9iKCIgWVE9PSIpJywgJyJhIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJZUT09XFx1MDAw
YSIpJywgJyJhIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxcdGNkIiknLCAnImnCt1x4
MWQiJyk7CitzaG91bGRCZSgnd2luZG93LmF0b2IoImFiXFxuY2QiKScsICciacK3XHgxZCInKTsK
K3Nob3VsZEJlKCd3aW5kb3cuYXRvYigiYWJcXGZjZCIpJywgJyJpwrdceDFkIicpOworc2hvdWxk
QmUoJ3dpbmRvdy5hdG9iKCJhYiBjZCIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRv
dy5hdG9iKCJhYlxcdFxcblxcZlxcciBjZCIpJywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dp
bmRvdy5hdG9iKCIgXFx0XFxuXFxmXFxyIGFiXFx0XFxuXFxmXFxyIGNkXFx0XFxuXFxmXFxyICIp
JywgJyJpwrdceDFkIicpOworc2hvdWxkQmUoJ3dpbmRvdy5hdG9iKCJhYlxcdFxcblxcZlxcciA9
XFx0XFxuXFxmXFxyID1cXHRcXG5cXGZcXHIgIiknLCAnImkiJyk7CitzaG91bGRCZSgnd2luZG93
LmF0b2IoIiAgICAgICAgICAgICIpJywgJyIiJyk7CitzaG91bGRUaHJvdygnd2luZG93LmF0b2Io
IiBhYmNkPT09IiknKTsKK3Nob3VsZFRocm93KCd3aW5kb3cuYXRvYigiYWJjZD09PSAiKScpOwor
c2hvdWxkVGhyb3coJ3dpbmRvdy5hdG9iKCJhYmNkID09PSIpJyk7CiBzaG91bGRCZSgnd2luZG93
LmF0b2IoIjZlaz0iKScsICciw6nDqSInKTsKIHNob3VsZEJlKCd3aW5kb3cuYXRvYigiNmVrIikn
LCAnIsOpw6kiJyk7CiBzaG91bGRCZSgnd2luZG93LmF0b2IoImdJRT0iKScsICciXHUwMDgwXHUw
MDgxIicpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>