<?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>22957</bug_id>
          
          <creation_ts>2008-12-21 22:54:54 -0800</creation_ts>
          <short_desc>RenderPath clean-up for strokeContains</short_desc>
          <delta_ts>2009-01-21 23:57:08 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103157</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-12-21 22:54:54 -0800</bug_when>
    <thetext>Move the rest of the RenderPath*.cpp code out of svg to RenderPath and Path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103166</commentid>
    <comment_count>1</comment_count>
      <attachid>26199</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-12-22 03:52:41 -0800</bug_when>
    <thetext>Created attachment 26199
Move strokeContains back to RenderPath.cpp

This patch moves the functionality of strokeContains to RenderPath.cpp, Path and cleares many unneeded parts like CgSupport and platform dependent code like RenderPath*.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103298</commentid>
    <comment_count>2</comment_count>
      <attachid>26199</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-23 08:44:37 -0800</bug_when>
    <thetext>Comment on attachment 26199
Move strokeContains back to RenderPath.cpp

&gt; +        bool strokeContains(StrokeStyleApplier* applier, const FloatPoint&amp;) const;

Our style is to omit the argument name when the type makes it clear. Hence, no &quot;applier&quot; needed here.

&gt;          FloatRect strokeBoundingRect(StrokeStyleApplier* applier = 0);

Same here (not changed in this patch).

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106580</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-01-21 23:57:08 -0800</bug_when>
    <thetext>landed in r39805.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26199</attachid>
            <date>2008-12-22 03:52:41 -0800</date>
            <delta_ts>2008-12-23 08:44:37 -0800</delta_ts>
            <desc>Move strokeContains back to RenderPath.cpp</desc>
            <filename>renderpath-5.patch</filename>
            <type>text/plain</type>
            <size>28272</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTQzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMDgtMTItMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IHBsYXRmb3JtIGRlcGVuZGVudCBzdHJva2VDb250YWlucyBiYWNrIHRvIFJlbmRlclBhdGgsIFBh
dGggYW5kIGRlbGV0ZQorICAgICAgICB1bm5lZWRlZCBDb2RlIGluIHN2Zy4KKworICAgICAgICBS
ZW5kZXJQYXRoIGNsZWFuLXVwIGZvciBzdHJva2VDb250YWlucworICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU3XQorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0aDo6c3Ryb2tlQ29udGFpbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1Bh
dGhDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjpzdHJva2VDb250YWlucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhdGg6OnN0cm9rZUNvbnRhaW5zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0aC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQYXRoOjpzdHJva2VDb250YWlucyk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2NhaXJvL1JlbmRlclBhdGhDYWlyby5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2NnL0NnU3VwcG9ydC5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2NnL0NnU3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9jZy9SZW5kZXJQYXRoQ2cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9jZy9TVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHA6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2NnL1NWR1Jlc291cmNlTWFza2VyQ2cubW06CisgICAgICAgICogc3ZnL2dyYXBoaWNzL3F0
L1JlbmRlclBhdGhRdC5jcHA6IFJlbW92ZWQuCisKIDIwMDgtMTItMjIgIE5pa29sYXMgWmltbWVy
bWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgTm90
IHJldmlld2VkLiBUcnkgdG8gZml4IGNsZWFuIE1hYyBidWlsZHMsIHNldCByb2xlPXByaXZhdGUg
Zm9yIEZvcm1EYXRhQnVpbGRlci5oCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM5NDI3KQorKysgV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjgxNSw3ICsyODE1LDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nw
b3RMaWdodFNvdXJjZS5oCiAKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCi0JV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvY2Fpcm8vUmVuZGVyUGF0aENhaXJvLmNwcCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvY2Fpcm8vU1ZHUGFpbnRTZXJ2ZXJDYWlyby5jcHAgXAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NhaXJvL1NWR1BhaW50U2VydmVyUGF0dGVybkNhaXJvLmNwcCBcCiAJV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VGaWx0ZXJDYWlyby5jcHAgXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAz
OTQyNikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE3ODMsNyAr
MTc4Myw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICByZW5k
ZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAKIAogU09VUkNFUyArPSBcCi0gICAgICAgIHN2Zy9n
cmFwaGljcy9xdC9SZW5kZXJQYXRoUXQuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL3F0L1NW
R1BhaW50U2VydmVyUGF0dGVyblF0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9xdC9TVkdQ
YWludFNlcnZlclF0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9xdC9TVkdSZXNvdXJjZUZp
bHRlclF0LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDM5NDI2KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTU4ODQsNjYgKzE1ODg0LDYgQEAKIAkJCQkJTmFtZT0iY2ciDQog
CQkJCQk+DQogCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNz
XGNnXENnU3VwcG9ydC5jcHAiDQotCQkJCQkJPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
LQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQotCQkJCQkJCT4NCi0JCQkJCQkJPFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQotCQkJCQkJCS8+DQotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0J
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4z
MiINCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJCT4NCi0JCQkJCQkJ
PFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCS8+DQotCQkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCTwvRmlsZT4NCi0JCQkJCTxGaWxlDQotCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcY2dcQ2dTdXBwb3J0LmgiDQotCQkJCQkJ
Pg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xX
aW4zMiINCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJCT4NCi0JCQkJ
CQkJPFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCQkvPg0K
LQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQot
CQkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0N1
c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0K
LQkJCQkJPC9GaWxlPg0KLQkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xn
cmFwaGljc1xjZ1xSZW5kZXJQYXRoQ2cuY3BwIg0KLQkJCQkJCT4NCi0JCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIiDQotCQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm98V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+
DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJ
CQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8L0ZpbGU+DQotCQkJCQk8
RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdyYXBoaWNzXGNnXFNWR1BhaW50U2Vy
dmVyQ2cuY3BwIg0KIAkJCQkJCT4NCiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xNjE4
NCw0MiArMTYxMjQsNiBAQAogCQkJCQlOYW1lPSJjYWlybyINCiAJCQkJCT4NCiAJCQkJCTxGaWxl
DQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcZ3JhcGhpY3NcY2Fpcm9cUmVuZGVyUGF0aENh
aXJvLmNwcCINCi0JCQkJCQk+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5h
bWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJ
CQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0J
CQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5h
bHxXaW4zMiINCi0JCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQkJCT4NCi0J
CQkJCQkJPFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJCS8+
DQotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24N
Ci0JCQkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQot
CQkJCQk8L0ZpbGU+DQotCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXGdy
YXBoaWNzXGNhaXJvXFNWR1BhaW50U2VydmVyQ2Fpcm8uY3BwIg0KIAkJCQkJCT4NCiAJCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMzk0MjcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE4NSw5ICszMTg1LDYgQEAKIAkJ
QjIzN0M4QTgwRDM0NEQxMTAwMTNGNzA3IC8qIFNWR0ZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjM3QzhBNjBEMzQ0RDExMDAxM0Y3MDcg
LyogU1ZHRm9udERhdGEuaCAqLzsgfTsKIAkJQjI0MDU1NjUwQjVCRTY0MDAwMkEyOEMwIC8qIERP
TVNWR0VsZW1lbnRJbnN0YW5jZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjQwNTU2MzBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxl
bWVudEluc3RhbmNlSW50ZXJuYWwuaCAqLzsgfTsKIAkJQjI0MDU1NjYwQjVCRTY0MDAwMkEyOEMw
IC8qIERPTVNWR0VsZW1lbnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI0MDU1NjQwQjVCRTY0MDAwMkEyOEMwIC8q
IERPTVNWR0VsZW1lbnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oICovOyB9OwotCQlCMjU1OTkyQzBE
MDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODkwMEQwMEQ4QjgwMEJCODI1QyAvKiBDZ1N1cHBv
cnQuY3BwICovOyB9OwotCQlCMjU1OTkyRDBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTg5MTBE
MDBEOEI4MDBCQjgyNUMgLyogQ2dTdXBwb3J0LmggKi87IH07Ci0JCUIyNTU5OTJFMEQwMEQ4QkEw
MEJCODI1QyAvKiBSZW5kZXJQYXRoQ2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTIwRDAwRDhCODAwQkI4MjVDIC8qIFJlbmRlclBhdGhD
Zy5jcHAgKi87IH07CiAJCUIyNTU5OTJGMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdQYWludFNlcnZl
ckNnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NTU5ODkzMEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdQYWludFNlcnZlckNnLmNwcCAqLzsgfTsKIAkJ
QjI1NTk5MzEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5ODk1MEQw
MEQ4QjgwMEJCODI1QyAvKiBTVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAgKi87IH07CiAJCUIy
NTU5OTM1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTkwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi87IH07CkBAIC03ODc3LDkgKzc4NzQs
NiBAQAogCQlCMjM3QzhBNjBEMzQ0RDExMDAxM0Y3MDcgLyogU1ZHRm9udERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZvbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyNDA1NTYzMEI1QkU2NDAwMDJBMjhDMCAvKiBET01TVkdFbGVtZW50
SW5zdGFuY2VJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
U1ZHRWxlbWVudEluc3RhbmNlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjI0MDU1NjQwQjVCRTY0MDAwMkEyOEMwIC8qIERPTVNWR0VsZW1lbnRJbnN0YW5jZUxpc3RJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHRWxlbWVu
dEluc3RhbmNlTGlzdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIy
NTU5ODkwMEQwMEQ4QjgwMEJCODI1QyAvKiBDZ1N1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENnU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyNTU5ODkxMEQwMEQ4QjgwMEJCODI1QyAvKiBDZ1N1cHBvcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENnU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCMjU1OTg5MjBEMDBEOEI4MDBCQjgyNUMgLyogUmVuZGVyUGF0aENnLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJQYXRoQ2cuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5MzBEMDBEOEI4MDBCQjgyNUMg
LyogU1ZHUGFpbnRTZXJ2ZXJDZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHUGFpbnRTZXJ2ZXJDZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyNTU5ODk1MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdQYWludFNlcnZlclBhdHRlcm5DZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGFpbnRTZXJ2ZXJQYXR0
ZXJuQ2cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTg5OTBEMDBEOEI4
MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRlckNnLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTI2OTQsOSArMTI2ODgsNiBAQAogCQlCMjU1OTg4RjBEMDBEOEI4
MDBCQjgyNUMgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUIyNTU5ODkwMEQwMEQ4QjgwMEJCODI1QyAvKiBDZ1N1cHBvcnQuY3BwICovLAotCQkJ
CUIyNTU5ODkxMEQwMEQ4QjgwMEJCODI1QyAvKiBDZ1N1cHBvcnQuaCAqLywKLQkJCQlCMjU1OTg5
MjBEMDBEOEI4MDBCQjgyNUMgLyogUmVuZGVyUGF0aENnLmNwcCAqLywKIAkJCQlCMjU1OTg5MzBE
MDBEOEI4MDBCQjgyNUMgLyogU1ZHUGFpbnRTZXJ2ZXJDZy5jcHAgKi8sCiAJCQkJQjI1NTk4OTUw
RDAwRDhCODAwQkI4MjVDIC8qIFNWR1BhaW50U2VydmVyUGF0dGVybkNnLmNwcCAqLywKIAkJCQlC
MjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAqLywKQEAg
LTE0NDA1LDcgKzE0Mzk2LDYgQEAKIAkJCQlBNzc5NzkxNzBENkI5RDBDMDAzODUxQjkgLyogQ2Fu
dmFzUGl4ZWxBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFRUMyMDAwOUMyODc3NzAwQzUx
NUQxIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNF
RUMyMDEwOUMyODc3NzAwQzUxNUQxIC8qIENhbnZhc1N0eWxlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlCMjU1OTkyRDBEMDBEOEJBMDBCQjgyNUMgLyogQ2dTdXBwb3J0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTQxODVFRTBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1NTBCNkEwMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyNjBEMDA2QzFEMDBFRjZGMjYgLyogQ2hh
cmFjdGVyTmFtZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTY4MzUsNyArMTY4MjUsNiBAQAogCQkJ
CUE3Nzk3OTE2MEQ2QjlEMEMwMDM4NTFCOSAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzRUVDMUZGMDlDMjg3NzcwMEM1MTVEMSAvKiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFRUMyNzEwOUMzMjE4ODAwQzUxNUQx
IC8qIENhbnZhc1N0eWxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTJDMEQwMEQ4QkEw
MEJCODI1QyAvKiBDZ1N1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0MTg1RUYwQ0Q2
NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1NTBCNjlGMDk5REYwMjcwMDkwRDc4MSAvKiBDaGFyYWN0ZXJEYXRhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzMjZEQzBDMDlEQUQ1RDYwMEFGQzg0NyAvKiBDaGFyc2V0RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTE3OTIyLDcgKzE3OTExLDYgQEAKIAkJCQlBODcxREVEMDBBMTUz
MEM3MDBCMTJBNjggLyogUmVuZGVyUGFydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREVE
NjBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyUGFydE9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NTNDQTlGMDBBRUVDNjU3MDAyMzcyREMgLyogUmVuZGVyUGF0aC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlCMjU1OTkyRTBEMDBEOEJBMDBCQjgyNUMgLyogUmVuZGVyUGF0aENnLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4NzFERkUyMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBs
YWNlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4NDZENjBEQzY3QTM1MDAyNkMzMDkgLyog
UmVuZGVyUmVwbGljYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM1MkMxOTBCMUJCODlEMDBB
OTg2RDAgLyogUmVuZGVyU1ZHQmxvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaAkocmV2aXNpb24gMzk0MjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFBhdGgmIG9wZXJhdG9yPShjb25zdCBQYXRoJik7CiAKICAgICAg
ICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgV2luZFJ1bGUgcnVsZSA9IFJVTEVf
Tk9OWkVSTykgY29uc3Q7CisgICAgICAgIGJvb2wgc3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVB
cHBsaWVyKiBhcHBsaWVyLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgICAgIEZsb2F0
UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKICAgICAgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5k
aW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIgPSAwKTsKICAgICAgICAgCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCShyZXZp
c2lvbiAzOTQyNykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSwxNiBAQCBib29sIFBhdGg6OmNvbnRh
aW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvCiAgICAgcmV0dXJuIGNvbnRhaW5zOwogfQogCitib29s
IFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllciwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGFwcGxpZXIpOworICAgIGNh
aXJvX3QqIGNyID0gcGxhdGZvcm1QYXRoKCktPm1fY3I7CisgICAgR3JhcGhpY3NDb250ZXh0IGdj
KGNyKTsKKyAgICBhcHBsaWVyLT5zdHJva2VTdHlsZSgmZ2MpOworCisgICAgcmV0dXJuIGNhaXJv
X2luX3N0cm9rZShjciwgcG9pbnQueCgpLCBwb2ludC55KCkpOworfQorCiB2b2lkIFBhdGg6OmFw
cGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyRnVuY3Rpb24gZnVuY3Rpb24pIGNvbnN0CiB7CiAg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybVBhdGgoKS0+bV9jcjsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHJldmlzaW9uIDM5NDI3KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiAr
MTMwLDI1IEBAIGJvb2wgUGF0aDo6Y29udGFpbnMoY29uc3QgRmxvYXRQb2ludCAmcG8KICAgICBy
ZXR1cm4gcmV0OwogfQogCitib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBw
bGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGFwcGxpZXIpOworCisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBzY3JhdGNoQ29udGV4
dCgpOworCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBDR0NvbnRleHRC
ZWdpblBhdGgoY29udGV4dCk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwbGF0Zm9y
bVBhdGgoKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4dCk7CisgICAgYXBwbGll
ci0+c3Ryb2tlU3R5bGUoJmdjKTsKKworICAgIGJvb2wgaGl0U3VjY2VzcyA9IENHQ29udGV4dFBh
dGhDb250YWluc1BvaW50KGNvbnRleHQsIHBvaW50LCBrQ0dQYXRoU3Ryb2tlKTsKKyAgICBDR0Nv
bnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgIAorICAgIHJldHVybiBoaXRTdWNjZXNz
OworfQorCiB2b2lkIFBhdGg6OnRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAg
ICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNsYXRpb24gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2Uo
MSwgMCwgMCwgMSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAJKHJldmlzaW9uIDM5NDI3KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2
ICs4NCwyOCBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvCiAgICAg
cmV0dXJuIGNvbnRhaW5zOwogfQogCitib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0
eWxlQXBwbGllciogYXBwbGllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGFwcGxpZXIpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gdXNl
IGEgJ3NoYXJlZCBDb250ZXh0JyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IEltYWdlQnVmZmVy
CisgICAgLy8gb24gZWFjaCBjYWxsLgorICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IHNj
cmF0Y2hJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoSW50U2l6ZSgxLCAxKSwgZmFsc2UpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCogZ2MgPSBzY3JhdGNoSW1hZ2UtPmNvbnRleHQoKTsKKyAgICBR
UGFpbnRlclBhdGhTdHJva2VyIHN0cm9rZTsKKyAgICBhcHBsaWVyLT5zdHJva2VTdHlsZShnYyk7
CisKKyAgICBRUGVuIHBlbiA9IGdjLT5wZW4oKTsKKyAgICBzdHJva2Uuc2V0V2lkdGgocGVuLndp
ZHRoRigpKTsKKyAgICBzdHJva2Uuc2V0Q2FwU3R5bGUocGVuLmNhcFN0eWxlKCkpOworICAgIHN0
cm9rZS5zZXRKb2luU3R5bGUocGVuLmpvaW5TdHlsZSgpKTsKKyAgICBzdHJva2Uuc2V0TWl0ZXJM
aW1pdChwZW4ubWl0ZXJMaW1pdCgpKTsKKyAgICBzdHJva2Uuc2V0RGFzaFBhdHRlcm4ocGVuLmRh
c2hQYXR0ZXJuKCkpOworICAgIHN0cm9rZS5zZXREYXNoT2Zmc2V0KHBlbi5kYXNoT2Zmc2V0KCkp
OworCisgICAgcmV0dXJuIChzdHJva2UuY3JlYXRlU3Ryb2tlKCpwbGF0Zm9ybVBhdGgoKSkpLmNv
bnRhaW5zKHBvaW50KTsKK30KKwogdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplKQogewogICAgIFFNYXRyaXggbWF0cml4OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHAJKHJldmlzaW9uIDM5NDI3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTggQEAgYm9vbCBSZW5kZXJQYXRoOjpm
aWxsQ29udGFpbnMoY29uc3QgRmxvYQogICAgIHJldHVybiBtX3BhdGguY29udGFpbnMocG9pbnQs
IHN0eWxlKCktPnN2Z1N0eWxlKCktPmZpbGxSdWxlKCkpOwogfQogCitib29sIFJlbmRlclBhdGg6
OnN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzU3Ry
b2tlKSBjb25zdAoreworICAgIGlmIChtX3BhdGguaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAocmVxdWlyZXNTdHJva2UgJiYgIVNWR1BhaW50U2VydmVyOjpzdHJv
a2VQYWludFNlcnZlcihzdHlsZSgpLCB0aGlzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQm91bmRpbmdSZWN0U3Ryb2tlU3R5bGVBcHBsaWVyIHN0cm9rZVN0eWxlKHRoaXMsIHN0eWxl
KCkpOworICAgIHJldHVybiBtX3BhdGguc3Ryb2tlQ29udGFpbnMoJnN0cm9rZVN0eWxlLCBwb2lu
dCk7Cit9CisKIEZsb2F0UmVjdCBSZW5kZXJQYXRoOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRl
U3Ryb2tlKSBjb25zdAogewogICAgIGlmIChtX3BhdGguaXNFbXB0eSgpKQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vUmVuZGVyUGF0aENhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9SZW5kZXJQYXRoQ2Fpcm8uY3BwCShyZXZpc2lvbiAz
OTQyNykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1JlbmRlclBhdGhDYWlyby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUmVuZGVyUGF0aC5oIgotCi0jaW5jbHVkZSAiQ2Fpcm9QYXRoLmgiCi0jaW5jbHVkZSAiU1ZH
UGFpbnRTZXJ2ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ib29sIFJlbmRlclBhdGg6
OnN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzU3Ry
b2tlKSBjb25zdAotewotICAgIGlmIChyZXF1aXJlc1N0cm9rZSAmJiAhU1ZHUGFpbnRTZXJ2ZXI6
OnN0cm9rZVBhaW50U2VydmVyKHN0eWxlKCksIHRoaXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBjYWlyb190KiBjciA9IHBhdGgoKS5wbGF0Zm9ybVBhdGgoKS0+bV9jcjsKLQotICAg
IC8vIFRPRE86IHNldCBzdHJva2UgcHJvcGVydGllcwotICAgIHJldHVybiBjYWlyb19pbl9zdHJv
a2UoY3IsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKLX0KLQotfQpJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9jZy9DZ1N1cHBvcnQuY3BwCShyZXZpc2lvbiAzOTQyNikKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2NnL0NnU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiAgICAgICAgICAgICAgIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KLSAqICAgICAgICAgICAgICAgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZH
KQotI2luY2x1ZGUgIkNnU3VwcG9ydC5oIgotCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNl
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0j
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLSNp
bmNsdWRlICJTVkdQYWludFNlcnZlci5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCi0j
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DR0Nv
bnRleHRSZWYgc2NyYXRjaENvbnRleHQoKQotewotICAgIHN0YXRpYyBDR0NvbnRleHRSZWYgc2Ny
YXRjaCA9IDA7Ci0gICAgaWYgKCFzY3JhdGNoKSB7Ci0gICAgICAgIENGTXV0YWJsZURhdGFSZWYg
ZW1wdHkgPSBDRkRhdGFDcmVhdGVNdXRhYmxlKE5VTEwsIDApOwotICAgICAgICBDR0RhdGFDb25z
dW1lclJlZiBjb25zdW1lciA9IENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShlbXB0eSk7
Ci0gICAgICAgIHNjcmF0Y2ggPSBDR1BERkNvbnRleHRDcmVhdGUoY29uc3VtZXIsIE5VTEwsIE5V
TEwpOwotICAgICAgICBDR0RhdGFDb25zdW1lclJlbGVhc2UoY29uc3VtZXIpOwotICAgICAgICBD
RlJlbGVhc2UoZW1wdHkpOwotCi0gICAgICAgIENHRmxvYXQgYmxhY2tbNF0gPSB7MCwgMCwgMCwg
MX07Ci0gICAgICAgIENHQ29udGV4dFNldEZpbGxDb2xvcihzY3JhdGNoLCBibGFjayk7Ci0gICAg
ICAgIENHQ29udGV4dFNldFN0cm9rZUNvbG9yKHNjcmF0Y2gsIGJsYWNrKTsKLSAgICAgfQotICAg
IHJldHVybiBzY3JhdGNoOwotfQotCi1GbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goY29uc3Qg
UGF0aCYgcGF0aCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKLSB7Ci0gICAgLy8gdGhlIGJib3ggbWlnaHQgZ3JvdyBpZiB0aGUgcGF0aCBpcyBzdHJva2Vk
LgotICAgIC8vIGFuZCBDR1BhdGhHZXRCb3VuZGluZ0JveCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwg
c28gd2UnbGwgaGF2ZQotICAgIC8vIHRvIG1ha2UgYW4gYWx0ZXJuYXRpdmUgY2FsbC4uLgotIAot
ICAgIC8vIEZJWE1FOiBzaW5jZSB0aGlzIGlzIG1haW5seSB1c2VkIHRvIGRlY2lkZSB3aGF0IHRv
IHJlcGFpbnQsCi0gICAgLy8gcGVyaGFwcyBpdCB3b3VsZCBiZSBzdWZmaWNpZW50IHRvIGp1c3Qg
b3V0c2V0IHRoZSBmaWxsIGJib3ggYnkKLSAgICAvLyB0aGUgc3Ryb2tlIHdpZHRoIC0gdGhhdCBz
aG91bGQgYmUgd2F5IGNoZWFwZXIgYW5kIHNpbXBsZXIgdGhhbgotICAgIC8vIHdoYXQgd2UgZG8g
aGVyZS4KLSAKLSAgICBDR1BhdGhSZWYgY2dQYXRoID0gcGF0aC5wbGF0Zm9ybVBhdGgoKTsKLQot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gc2NyYXRjaENvbnRleHQoKTsKLSAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOwotCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQp
OwotICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgY2dQYXRoKTsKLQotICAgIEdyYXBoaWNz
Q29udGV4dCBnYyhjb250ZXh0KTsKLSAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KCZnYywg
c3R5bGUsIG9iamVjdCk7Ci0KLSAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0
aChjb250ZXh0KTsKLSAgICBpZiAoQ0dDb250ZXh0SXNQYXRoRW1wdHkoY29udGV4dCkpIHsKLSAg
ICAgICAgLy8gQ0dDb250ZXh0UmVwbGFjZVBhdGhXaXRoU3Ryb2tlZFBhdGggc2VlbXMgdG8gZmFp
bCB0byBjcmVhdGUgYSBwYXRoIHNvbWV0aW1lcywgdGhpcyBpcyBub3Qgd2VsbCB1bmRlcnN0b29k
LgotICAgICAgICAvLyByZXR1cm5pbmcgaGVyZSBwcmV2ZW50cyBDRyBmcm9tIGxvZ2dpbmcgdG8g
dGhlIGNvbnNvbGUgZnJvbSBDR0NvbnRleHRHZXRQYXRoQm91bmRpbmdCb3gKLSAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgp
OwotICAgIH0KLQotICAgIENHUmVjdCBib3ggPSBDR0NvbnRleHRHZXRQYXRoQm91bmRpbmdCb3go
Y29udGV4dCk7Ci0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLQotICAgIHJl
dHVybiBGbG9hdFJlY3QoYm94KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKLQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgJKHJldmlzaW9uIDM5NDI2KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvQ2dTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDZ1N1cHBvcnRfaAotI2Rl
ZmluZSBDZ1N1cHBvcnRfaAotCi0jaWYgRU5BQkxFKFNWRykKLQotI2luY2x1ZGUgPEFwcGxpY2F0
aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIHN0cnVjdCBDR1BhdGggKkNH
TXV0YWJsZVBhdGhSZWY7Ci0KLWNsYXNzIFBhdGg7Ci1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBS
ZW5kZXJTdHlsZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
LQotQ0dDb250ZXh0UmVmIHNjcmF0Y2hDb250ZXh0KCk7Ci1GbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goY29uc3QgUGF0aCYgcGF0aCwgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJPYmplY3Qq
KTsKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKLSNlbmRpZiAvLyAhQ2dTdXBwb3J0X2gK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1JlbmRlclBhdGhDZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvUmVuZGVyUGF0aENnLmNwcAkocmV2aXNpb24g
Mzk0MjcpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9SZW5kZXJQYXRoQ2cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgICAgICAgICAgKEMp
IDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KLSAqICAgICAgICAgICAg
ICAgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKLQotI2luY2x1
ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgotI2luY2x1ZGUg
IkNnU3VwcG9ydC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIlNW
R1BhaW50U2VydmVyLmgiCi0jaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJT
VkdTdHlsZWRFbGVtZW50LmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1ib29sIFJlbmRlclBhdGg6OnN0cm9rZUNvbnRhaW5zKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50LCBib29sIHJlcXVpcmVzU3Ryb2tlKSBjb25zdAotewotICAgIGlmIChw
YXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVxdWly
ZXNTdHJva2UgJiYgIVNWR1BhaW50U2VydmVyOjpzdHJva2VQYWludFNlcnZlcihzdHlsZSgpLCB0
aGlzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBjZ1Bh
dGggPSBwYXRoKCkucGxhdGZvcm1QYXRoKCk7Ci0gICAgCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBzY3JhdGNoQ29udGV4dCgpOwotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7
Ci0gICAgCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwotICAgIENHQ29udGV4dEFk
ZFBhdGgoY29udGV4dCwgY2dQYXRoKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0
KTsKLSAgICBhcHBseVN0cm9rZVN0eWxlVG9Db250ZXh0KCZnYywgc3R5bGUoKSwgdGhpcyk7Ci0K
LSAgICBib29sIGhpdFN1Y2Nlc3MgPSBDR0NvbnRleHRQYXRoQ29udGFpbnNQb2ludChjb250ZXh0
LCBwb2ludCwga0NHUGF0aFN0cm9rZSk7Ci0gICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250
ZXh0KTsKLSAgICAKLSAgICByZXR1cm4gaGl0U3VjY2VzczsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1BhaW50U2VydmVy
UGF0dGVybkNnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQ
YWludFNlcnZlclBhdHRlcm5DZy5jcHAJKHJldmlzaW9uIDM5NDI2KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuQ2cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYWludFNlcnZl
clBhdHRlcm4uaCIKIAotI2luY2x1ZGUgIkNnU3VwcG9ydC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZU1hc2tlckNn
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlTWFz
a2VyQ2cubW0JKHJldmlzaW9uIDM5NDI2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZH
UmVzb3VyY2VNYXNrZXJDZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lt
cG9ydCAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
Ci0jaW1wb3J0ICJDZ1N1cHBvcnQuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lt
cG9ydCAiSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNWR01hc2tFbGVtZW50LmgiCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9xdC9SZW5kZXJQYXRoUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1JlbmRlclBhdGhRdC5jcHAJKHJldmlzaW9uIDM5NDI3KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvcXQvUmVuZGVyUGF0aFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWMuc2VpZGVsQGtkZW1haWwubmV0PgotCi0gICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K
LSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCi0j
aW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXIuaCIKLQotI2luY2x1ZGUgPFFEZWJ1Zz4KLSNpbmNsdWRl
IDxRUGFpbnRlclBhdGhTdHJva2VyPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1ib29s
IFJlbmRlclBhdGg6OnN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBib29s
IHJlcXVpcmVzU3Ryb2tlKSBjb25zdAotewotICAgIGlmIChwYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVxdWlyZXNTdHJva2UgJiYgIVNWR1BhaW50
U2VydmVyOjpzdHJva2VQYWludFNlcnZlcihzdHlsZSgpLCB0aGlzKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQK
</data>
<flag name="review"
          id="12394"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>