<?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>174745</bug_id>
          
          <creation_ts>2017-07-21 21:09:13 -0700</creation_ts>
          <short_desc>More NeverDestroyed and related cleanup</short_desc>
          <delta_ts>2017-07-24 21:29:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1331271</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-21 21:09:13 -0700</bug_when>
    <thetext>More NeverDestroyed and rleated cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331272</commentid>
    <comment_count>1</comment_count>
      <attachid>316166</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-21 21:09:39 -0700</bug_when>
    <thetext>Created attachment 316166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331357</commentid>
    <comment_count>2</comment_count>
      <attachid>316197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-22 10:06:47 -0700</bug_when>
    <thetext>Created attachment 316197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331365</commentid>
    <comment_count>3</comment_count>
      <attachid>316201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-22 10:42:37 -0700</bug_when>
    <thetext>Created attachment 316201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331450</commentid>
    <comment_count>4</comment_count>
      <attachid>316233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-23 13:20:51 -0700</bug_when>
    <thetext>Created attachment 316233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331474</commentid>
    <comment_count>5</comment_count>
      <attachid>316240</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-23 14:57:32 -0700</bug_when>
    <thetext>Created attachment 316240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331624</commentid>
    <comment_count>6</comment_count>
      <attachid>316293</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-24 09:10:31 -0700</bug_when>
    <thetext>Created attachment 316293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331689</commentid>
    <comment_count>7</comment_count>
      <attachid>316293</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-07-24 11:43:20 -0700</bug_when>
    <thetext>Comment on attachment 316293
Patch

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

&gt; Source/WebCore/platform/mac/ThemeMac.mm:736
&gt;          case SquareButtonPart:

This indentation should also be updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331767</commentid>
    <comment_count>8</comment_count>
      <attachid>316293</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-24 15:49:14 -0700</bug_when>
    <thetext>Comment on attachment 316293
Patch

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

&gt;&gt; Source/WebCore/platform/mac/ThemeMac.mm:736
&gt;&gt;          case SquareButtonPart:
&gt; 
&gt; This indentation should also be updated.

Thanks for spotting that! I will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331770</commentid>
    <comment_count>9</comment_count>
      <attachid>316293</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-24 15:53:27 -0700</bug_when>
    <thetext>Comment on attachment 316293
Patch

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

&gt; Source/WebCore/platform/mac/ThemeMac.mm:751
&gt; +        // by definition constrained, since we select mini only for small cramped environments.

I should also add a closing parenthesis here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331869</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-07-24 21:29:14 -0700</bug_when>
    <thetext>Committed r219858: &lt;http://trac.webkit.org/changeset/219858&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316166</attachid>
            <date>2017-07-21 21:09:39 -0700</date>
            <delta_ts>2017-07-22 10:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170721210938.patch</filename>
            <type>text/plain</type>
            <size>101620</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MGFkOWZhMDVkNmE5
OTlhMDI4NmM3N2Y4Zjc3ODZhYWZlMjk5YS4uMmRhMDc0YjUxOTg3ZjQ2YmU4OTNjMjQyYjYzMDMz
MzJiZTkwYTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxNy0wNy0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmxlYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOgorICAg
ICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6UXVhbGlmaWVkTmFtZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZTo6aGFzUHJlZml4KToKKyAgICAgICAgKiBodG1sL0F1dG9maWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZExvY2FsTmFtZVRvU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1l
bnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50
TmFtZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEJlRXhwb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6dXBkYXRlRXhwb3NlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2du
aXplZFRhZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRy
b2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
OjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9s
Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUGFkZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjp+VGhlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OlRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEhhc0luYWN0aXZlQXBwZWFyYW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbHNDYW5IYXZlSW5hY3RpdmVBcHBl
YXJhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sc0Nhbkhh
dmVIb3ZlcmVkQXBwZWFyYW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
Y29udHJvbERyYXdzQm9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpj
b250cm9sRHJhd3NCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojpjb250cm9sRHJhd3NGb2N1c091dGxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnNlbGVjdGlvbkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojp0ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnN5c3RlbUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpz
eXN0ZW1Gb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjYXJldEJsaW5r
SW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRoZW1lQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZUNvY29hOjpUaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
ZW1lQ29jb2E6On5UaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9UaGVtZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFk
c0dsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhP
dmVyZmxvdzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpleHRl
bmRUbyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoT3ZlcmZsb3c6OkdseXBoT3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlU3Rh
cnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VEdXJhdGlvbktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OnNpbmdsZXRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RS
ZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OlRoZW1lSU9TKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lSU9TOjp+VGhlbWVJT1MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6VGhl
bWVNYWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6On5UaGVtZU1hYyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjppbmZsYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJvbEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjpjb250cm9sQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9s
UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QpOgorICAgICAgICAoLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VO
ZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
VGhlbWVXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVXUEU6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93cGUvVGhlbWVXUEUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lV1BFOjpUaGVtZVdQ
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZVdQRTo6flRoZW1lV1BFKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisKIDIwMTctMDctMTkgIE1hdHQgTGV3
aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMjE5NjQ2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDVmYmQ4ZmMxNjdmYzRm
Y2U4NGUxNDAyYTA2NjU2NmRlNjgyODQxOTQuLmMzMGFiM2FlMmE5Njk2ZDJiNDc2YmE4ZDYyMGIy
YTdmZjZlNzk1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxNy0wNy0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW9yZSBOZXZlckRlc3Ryb3llZCBhbmQgcmxlYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRo
KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVyKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJIaXN0
b3J5LmNwcDoKKyAgICAgICAgKHNoYXJlZEhpc3RvcnlTdG9yYWdlKToKKyAgICAgICAgKiBXZWJM
b2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAobWFpbkJ1bmRsZUxvY1N0cmluZ3MpOgor
ICAgICAgICAoZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KToKKyAgICAgICAgKGZyYW1ld29ya0xv
Y1N0cmluZ3MpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c3Rh
bmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKToKKwogMjAxNy0wNy0xOCAgTWF0dCBM
ZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMTk2MTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCBjNjBiMDVhN2Y1MDk5ZGU1YzYzYTc4OTVi
OGQzMDI0MzNlODM3NWJkLi5mNzEyMGZiNmZhNWQwNTk5ZTIyOGEzNDI1ODAwYzlhZDMyOWRhYjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmPEVsZW1lbnQ+IEpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYg
ZG8KIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1l
bnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKQogewogICAgIGlmIChhdXRvIGVsZW1lbnQgPSB0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1l
bnQoZG9jdW1lbnQsIG5hbWUubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAgIGlmIChuYW1lLnByZWZp
eCgpICE9IG51bGxBdG9tKCkpCisgICAgICAgIGlmICghbmFtZS5wcmVmaXgoKS5pc051bGwoKSkK
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldFByZWZpeChuYW1lLnByZWZpeCgpKTsKICAgICAgICAg
cmV0dXJuIGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggZmRiMmQ5NjhjNzdhYWFkZDc3MzA3NjUy
ZTljYTY3ZDQ4NmE4MTU3NS4uODczZGI5ZDdiMzU1NmVkMGE3NmVkMjM3YzhlMjAwZDk5MWY0MDY1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNjgz
LDE0ICs2ODMsMTggQEAgc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmUKIHsKICAgICBib29sIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOwogCi0gICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
Zm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBTZXR0aW5n
czo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKKyAgICBzd2l0Y2ggKGZyYW1lLnNldHRp
bmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUoKSkgewor
ICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T246CiAgICAgICAg
IHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IHRydWU7Ci0gICAgZWxzZSBpZiAoZnJhbWUuc2V0
dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlWYWx1ZSgpID09
IFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikKLSAgICAgICAgdXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0oSU9TKSB8fCBVU0UoTkVX
X1RIRU1FKQotICAgIGVsc2UKLSAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gcGxh
dGZvcm1UaGVtZSgpLT51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPZmY6CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6
U3lzdGVtOgorI2lmIFVTRShORVdfVEhFTUUpCisgICAgICAgIHVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbiA9IFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsKICNl
bmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm4gdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmgKaW5kZXggMDhmYTJiNjk0Y2YzNGM5Y2M4NTI5ODQ2M2EzMzQ5NmY3N2I1ZTdlZS4uMmYzOGMx
OTg0NTE4MGNhMTZlNGQxN2Y0ODRlZDQ0NDMzYjk5OTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlm
aWVkTmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwLDkgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdW5zaWdu
ZWQgY29tcHV0ZUhhc2goKSBjb25zdDsKIAotICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZXhp
c3RpbmdIYXNoOworICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZXhpc3RpbmdIYXNoIHsgMCB9
OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9wcmVmaXg7CiAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyBtX2xvY2FsTmFtZTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFt
ZXNwYWNlOwpAQCAtNTYsMTIgKzU0LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IGxvY2FsTmFtZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lSW1wbCwgbV9sb2NhbE5hbWUpOyB9CiAgICAgICAg
IHN0YXRpYyBwdHJkaWZmX3QgbmFtZXNwYWNlTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFF1YWxpZmllZE5hbWVJbXBsLCBtX25hbWVzcGFjZSk7IH0KLSNlbmRpZiAvLyBF
TkFCTEUoSklUKQorI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBRdWFsaWZpZWROYW1l
SW1wbChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQotICAgICAgICAgICAgOiBt
X2V4aXN0aW5nSGFzaCgwKQotICAgICAgICAgICAgLCBtX3ByZWZpeChwcmVmaXgpCisgICAgICAg
ICAgICA6IG1fcHJlZml4KHByZWZpeCkKICAgICAgICAgICAgICwgbV9sb2NhbE5hbWUobG9jYWxO
YW1lKQogICAgICAgICAgICAgLCBtX25hbWVzcGFjZShuYW1lc3BhY2VVUkkpCiAgICAgICAgIHsK
QEAgLTgxLDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPT0gb3RoZXIubV9pbXBsIHx8
IChsb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5hbWUoKSAmJiBuYW1lc3BhY2VVUkkoKSA9PSBv
dGhlci5uYW1lc3BhY2VVUkkoKSk7IH0KIAotICAgIGJvb2wgaGFzUHJlZml4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsLT5tX3ByZWZpeCAhPSBudWxsQXRvbSgpOyB9CisgICAgYm9vbCBoYXNQcmVm
aXgoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsLT5tX3ByZWZpeC5pc051bGwoKTsgfQogICAgIHZv
aWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KSB7ICp0aGlzID0gUXVhbGlm
aWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSgpLCBuYW1lc3BhY2VVUkkoKSk7IH0KIAogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5tX3ByZWZp
eDsgfQpAQCAtOTYsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgUXVhbGlmaWVkTmFtZUltcGwqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICNpZiBFTkFCTEUoSklUKQogICAg
IHN0YXRpYyBwdHJkaWZmX3QgaW1wbE1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihRdWFsaWZpZWROYW1lLCBtX2ltcGwpOyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyNl
bmRpZgogICAgIAogICAgIC8vIEluaXQgcm91dGluZSBmb3IgZ2xvYmFscwogICAgIHN0YXRpYyB2
b2lkIGluaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXggNWExYWFkMzQ2ZTIzNjNk
ZjQ5NTZhZTZkN2E3NDA5Y2ZmMDFhN2Y2Yy4uZTMxMzQxOTg0ODBlZGJmZjE4OThjYjE2NjlkYmZi
MmY1YmMyODgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRNTEZvcm1Db250cm9sRWxl
bWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmli
dXRlVmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjphdXRvY29tcGxldGVBdHRyKTsKIAogICAgIC8vIDEuIElmIHRoZSBlbGVtZW50IGhhcyBu
byBhdXRvY29tcGxldGUgYXR0cmlidXRlLCB0aGVuIGp1bXAgdG8gdGhlIHN0ZXAgbGFiZWxlZCBk
ZWZhdWx0LgotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSBudWxsQXRvbSgpKQorICAgIGlmIChh
dHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRMYWJlbCgpOwog
CiAgICAgLy8gMi4gTGV0IHRva2VucyBiZSB0aGUgcmVzdWx0IG9mIHNwbGl0dGluZyB0aGUgYXR0
cmlidXRlJ3MgdmFsdWUgb24gc3BhY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3Bw
CmluZGV4IGUzMDVjNDgyMjM2YjU0ZmY1MDg2NzhjYmQxMTgxOTFjMWQ2ZDIwNzYuLmNiZGZkZDNl
ZmNhYWRhZjhmYmY0MDBiNmMyNTQ4MGE0M2FlZDMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKQEAgLTExMSw2NiArMTExLDYgQEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1M
RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAgICAgcmV0dXJuIEhUTUxEb2N1bWVudFBhcnNlcjo6
Y3JlYXRlKCp0aGlzKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTG9jYWxOYW1lVG9TZXQoSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4qIHNldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCi17
Ci0gICAgc2V0LT5hZGQocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKLX0KLQotc3RhdGljIEhh
c2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBjcmVhdGVIdG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmli
dXRlc1NldCgpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGluIEhU
TUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2UtaW5zZW5zaXRpdmUK
LSAgICAvLyBNb3ppbGxhIHRyZWF0cyBhbGwgb3RoZXIgdmFsdWVzIGFzIGNhc2Utc2Vuc2l0aXZl
LCB0aHVzIHNvIGRvIHdlLgotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBhdHRyU2V0
ID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwotCi0gICAgYWRkTG9jYWxOYW1lVG9T
ZXQoYXR0clNldCwgYWNjZXB0X2NoYXJzZXRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBhY2NlcHRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBhbGln
bkF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFsaW5rQXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYXhpc0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRv
U2V0KGF0dHJTZXQsIGJnY29sb3JBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0
LCBjaGFyc2V0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY2hlY2tlZEF0
dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNsZWFyQXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29kZXR5cGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVU
b1NldChhdHRyU2V0LCBjb2xvckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQs
IGNvbXBhY3RBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBkZWNsYXJlQXR0
cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGVmZXJBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBkaXJBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBkaXNhYmxlZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGVu
Y3R5cGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBmYWNlQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZnJhbWVBdHRyKTsKLSAgICBhZGRMb2NhbE5h
bWVUb1NldChhdHRyU2V0LCBocmVmbGFuZ0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0
dHJTZXQsIGh0dHBfZXF1aXZBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBs
YW5nQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbGFuZ3VhZ2VBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBsaW5rQXR0cik7Ci0gICAgYWRkTG9jYWxO
YW1lVG9TZXQoYXR0clNldCwgbWVkaWFBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBtZXRob2RBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBtdWx0aXBs
ZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vaHJlZkF0dHIpOwotICAg
IGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vcmVzaXplQXR0cik7Ci0gICAgYWRkTG9jYWxO
YW1lVG9TZXQoYXR0clNldCwgbm9zaGFkZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0
dHJTZXQsIG5vd3JhcEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHJlYWRv
bmx5QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgcmVsQXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgcmV2QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9T
ZXQoYXR0clNldCwgcnVsZXNBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBz
Y29wZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNjcm9sbGluZ0F0dHIp
OwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNlbGVjdGVkQXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2hhcGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCB0YXJnZXRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB0
ZXh0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdHlwZUF0dHIpOwotICAg
IGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHZhbGlnbkF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIHZhbHVldHlwZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0
dHJTZXQsIHZsaW5rQXR0cik7Ci0KLSAgICByZXR1cm4gYXR0clNldDsKLX0KLQogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50LW5h
bWVkaXRlbQogc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQdHI8
RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CkBAIC0yMzUsOSArMTc1LDY0IEBAIHZvaWQg
SFRNTERvY3VtZW50OjpyZW1vdmVXaW5kb3dOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nSW1w
bCYgbmFtZSwgRWxlbWVudCYKIAogYm9vbCBIVE1MRG9jdW1lbnQ6OmlzQ2FzZVNlbnNpdGl2ZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHN0YXRp
YyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZXNTZXQgPSBjcmVhdGVIdG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldCgpOwotICAgIGJv
b2wgaXNQb3NzaWJsZUhUTUxBdHRyID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkgJiYgKGF0
dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gbnVsbEF0b20oKSk7Ci0gICAgcmV0dXJuICFp
c1Bvc3NpYmxlSFRNTEF0dHIgfHwgIWh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0LT5j
b250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgc3RhdGljIGNv
bnN0IGF1dG8gY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlU2V0ID0gbWFrZU5ldmVyRGVzdHJveWVk
KFtdIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzIGluIEhUTUwg
NC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2UtaW5zZW5zaXRpdmUKKyAg
ICAgICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVyIHZhbHVlcyBhcyBjYXNlLXNlbnNpdGl2
ZSwgdGh1cyBzbyBkbyB3ZS4KKyAgICAgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNv
bnN0IG5hbWVzW10gPSB7CisgICAgICAgICAgICAmYWNjZXB0X2NoYXJzZXRBdHRyLAorICAgICAg
ICAgICAgJmFjY2VwdEF0dHIsCisgICAgICAgICAgICAmYWxpZ25BdHRyLAorICAgICAgICAgICAg
JmFsaW5rQXR0ciwKKyAgICAgICAgICAgICZheGlzQXR0ciwKKyAgICAgICAgICAgICZiZ2NvbG9y
QXR0ciwKKyAgICAgICAgICAgICZjaGFyc2V0QXR0ciwKKyAgICAgICAgICAgICZjaGVja2VkQXR0
ciwKKyAgICAgICAgICAgICZjbGVhckF0dHIsCisgICAgICAgICAgICAmY29kZXR5cGVBdHRyLAor
ICAgICAgICAgICAgJmNvbG9yQXR0ciwKKyAgICAgICAgICAgICZjb21wYWN0QXR0ciwKKyAgICAg
ICAgICAgICZkZWNsYXJlQXR0ciwKKyAgICAgICAgICAgICZkZWZlckF0dHIsCisgICAgICAgICAg
ICAmZGlyQXR0ciwKKyAgICAgICAgICAgICZkaXNhYmxlZEF0dHIsCisgICAgICAgICAgICAmZW5j
dHlwZUF0dHIsCisgICAgICAgICAgICAmZmFjZUF0dHIsCisgICAgICAgICAgICAmZnJhbWVBdHRy
LAorICAgICAgICAgICAgJmhyZWZsYW5nQXR0ciwKKyAgICAgICAgICAgICZodHRwX2VxdWl2QXR0
ciwKKyAgICAgICAgICAgICZsYW5nQXR0ciwKKyAgICAgICAgICAgICZsYW5ndWFnZUF0dHIsCisg
ICAgICAgICAgICAmbGlua0F0dHIsCisgICAgICAgICAgICAmbWVkaWFBdHRyLAorICAgICAgICAg
ICAgJm1ldGhvZEF0dHIsCisgICAgICAgICAgICAmbXVsdGlwbGVBdHRyLAorICAgICAgICAgICAg
Jm5vaHJlZkF0dHIsCisgICAgICAgICAgICAmbm9yZXNpemVBdHRyLAorICAgICAgICAgICAgJm5v
c2hhZGVBdHRyLAorICAgICAgICAgICAgJm5vd3JhcEF0dHIsCisgICAgICAgICAgICAmcmVhZG9u
bHlBdHRyLAorICAgICAgICAgICAgJnJlbEF0dHIsCisgICAgICAgICAgICAmcmV2QXR0ciwKKyAg
ICAgICAgICAgICZydWxlc0F0dHIsCisgICAgICAgICAgICAmc2NvcGVBdHRyLAorICAgICAgICAg
ICAgJnNjcm9sbGluZ0F0dHIsCisgICAgICAgICAgICAmc2VsZWN0ZWRBdHRyLAorICAgICAgICAg
ICAgJnNoYXBlQXR0ciwKKyAgICAgICAgICAgICZ0YXJnZXRBdHRyLAorICAgICAgICAgICAgJnRl
eHRBdHRyLAorICAgICAgICAgICAgJnR5cGVBdHRyLAorICAgICAgICAgICAgJnZhbGlnbkF0dHIs
CisgICAgICAgICAgICAmdmFsdWV0eXBlQXR0ciwKKyAgICAgICAgICAgICZ2bGlua0F0dHIsCisg
ICAgICAgIH07CisgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBzZXQ7CisgICAgICAgIGZv
ciAoYXV0byogbmFtZSA6IG5hbWVzKQorICAgICAgICAgICAgc2V0LmFkZChuYW1lLT5sb2NhbE5h
bWUoKSk7CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfSgpKTsKKworICAgIGJvb2wgaXNQb3Nz
aWJsZUhUTUxBdHRyID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkgJiYgYXR0cmlidXRlTmFt
ZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKTsKKyAgICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0
ciB8fCAhY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlU2V0LmdldCgpLmNvbnRhaW5zKGF0dHJpYnV0
ZU5hbWUubG9jYWxOYW1lKCkpOwogfQogCiBib29sIEhUTUxEb2N1bWVudDo6aXNGcmFtZVNldCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uY3BwCmluZGV4IGVlNDNkZDI0NTFiMDMyMGZkNTc5NzhjNDg1NjFhYTBkMjQ3YjcwYjIu
LmI3YjdlMDUyNGZlYzE2NjIwZDJhMGU4Nzk0MWI2ODQ2MGNlYzUzMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoKSBjb25zdAogICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAogICAgIGJvb2wgb3duZXJJc0Zvcm1FbGVt
ZW50ID0gaXM8SFRNTEZvcm1FbGVtZW50Pihvd25lck5vZGUoKSk7Ci0gICAgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4gZm91bmRJbnB1dEVsZW1lbnRzOworICAgIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiBmb3VuZElucHV0RWxlbWVudHM7CiAKICAgICBmb3IgKGF1dG8mIGVsZW1lbnRQdHIgOiBm
b3JtQ29udHJvbEVsZW1lbnRzKCkpIHsKICAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50JiBh
c3NvY2lhdGVkRWxlbWVudCA9ICplbGVtZW50UHRyOwpAQCAtMTI4LDEzICsxMjgsMTMgQEAgdm9p
ZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBj
b25zdAogICAgICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBj
YWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAo
b3duZXJJc0Zvcm1FbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVu
dHMuYWRkKGlkLmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50
cy5hZGQoaWQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lID0gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCk7CiAgICAgICAgICAgICBpZiAoIW5h
bWUuaXNFbXB0eSgpICYmIGlkICE9IG5hbWUpIHsKICAgICAgICAgICAgICAgICBjYWNoZS0+YXBw
ZW5kVG9OYW1lQ2FjaGUobmFtZSwgZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKG93bmVy
SXNGb3JtRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFk
ZChuYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5h
ZGQobmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDIsMTAgKzE0
MiwxMCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1l
bnRDYWNoZSgpIGNvbnN0CiAgICAgICAgIGZvciAoYXV0byogZWxlbWVudFB0ciA6IGZvcm1JbWFn
ZUVsZW1lbnRzKCkpIHsKICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQgPSAq
ZWxlbWVudFB0cjsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbGVtZW50
LmdldElkQXR0cmlidXRlKCk7Ci0gICAgICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSAmJiAhZm91
bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkLmltcGwoKSkpCisgICAgICAgICAgICBpZiAoIWlk
LmlzRW1wdHkoKSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKGlkKSkKICAgICAgICAg
ICAgICAgICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVtZW50KTsKICAgICAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiBpZCAhPSBuYW1lICYmICFmb3VuZElu
cHV0RWxlbWVudHMuY29udGFpbnMobmFtZS5pbXBsKCkpKQorICAgICAgICAgICAgaWYgKCFuYW1l
LmlzRW1wdHkoKSAmJiBpZCAhPSBuYW1lICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMo
bmFtZSkpCiAgICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvTmFtZUNhY2hlKG5hbWUsIGVs
ZW1lbnQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNv
bGxlY3Rpb24uY3BwCmluZGV4IDZlMjAzYWVmYjQ1OGMyOTQzYTE4ZTk5NjUwMWQxODA1NTRmZmI0
N2UuLmQxMGMzN2ZiMjI4ODFjMTNjMzBmMDdjN2I5MzRmOTMyNzU0NmYxZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKQEAgLTQxLDQ1ICs0MSw0OSBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBib29sIFdpbmRvd05hbWVDb2xsZWN0aW9uOjpl
bGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxG
b3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCi0g
ICAgICAgIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxPYmplY3RF
bGVtZW50PihlbGVtZW50KTsKKyAgICByZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1l
bnQpCisgICAgICAgIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8
IGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQp
OwogfQogCiBib29sIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogewotICAgIC8v
IEZpbmQgb25seSBpbWFnZXMsIGZvcm1zLCBhcHBsZXRzLCBlbWJlZHMgYW5kIG9iamVjdHMgYnkg
bmFtZSwgYnV0IGFueXRoaW5nIGJ5IGlkCi0gICAgaWYgKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0
cmlidXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgp
ID09IG5hbWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBlbGVtZW50LmdldElk
QXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7CisgICAgLy8gRmluZCBvbmx5IGltYWdlcywgZm9y
bXMsIGFwcGxldHMsIGVtYmVkcyBhbmQgb2JqZWN0cyBieSBuYW1lLCBidXQgYW55dGhpbmcgYnkg
aWQuCisgICAgcmV0dXJuIChlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1l
bnQpICYmIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQorICAgICAg
ICB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkgPT0gbmFtZTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIGlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50TmFtZUNvbGxlY3Rpb24oY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKK3sKKyAgICByZXR1cm4gaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1l
bnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5pc0V4cG9zZWQoKTsK
IH0KIAogYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmSWRBdHRy
aWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIGZpeCBIVE1MSW1hZ2VFbGVtZW50IHRvIHVwZGF0ZSB0aGUgaGFzaCBtYXAgZm9yIHVz
IHdoZW4gbmFtZSBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4KLSAgICByZXR1cm4gaXM8SFRN
TEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVu
dCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVt
KCkpCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gZml4IEhUTUxJbWFnZUVsZW1lbnQgdG8gdXBk
YXRlIHRoZSBoYXNoIG1hcCBmb3IgdXMgd2hlbiB0aGUgbmFtZSBhdHRyaWJ1dGUgaXMgcmVtb3Zl
ZC4KKyAgICByZXR1cm4gaXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbihl
bGVtZW50KQorICAgICAgICB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKICAgICAg
ICAgfHwgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpICYmIGVsZW1lbnQuaGFzTmFtZSgp
KTsKIH0KIAogYm9vbCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFt
ZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGlz
PEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpCi0gICAgICAgIHx8IGlzPEhUTUxB
cHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQp
ICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgp
KQorICAgIHJldHVybiBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGVs
ZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQorICAgICAg
ICB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRm9y
bUVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVt
ZW50KQogICAgICAgICB8fCBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KTsKIH0KIAogYm9v
bCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBuYW1lKQogewogICAgIC8vIEZpbmQgaW1h
Z2VzLCBmb3JtcywgYXBwbGV0cywgZW1iZWRzLCBvYmplY3RzIGFuZCBpZnJhbWVzIGJ5IG5hbWUs
IGFwcGxldHMgYW5kIG9iamVjdCBieSBpZCwgYW5kIGltYWdlcyBieSBpZAotICAgIC8vIGJ1dCBv
bmx5IGlmIHRoZXkgaGF2ZSBhIG5hbWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxl
IG1hdGNoZXMgSUUpCi0gICAgaWYgKGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8
SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1l
bnQpKQotICAgICAgICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWU7Ci0gICAgaWYgKGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVsZW1l
bnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZTsKLSAgICBpZiAoaXM8SFRNTE9iamVj
dEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gKGVsZW1lbnQuZ2V0TmFtZUF0dHJp
YnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkg
PT0gbmFtZSkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFt
ZWRJdGVtKCk7Ci0gICAgaWYgKGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAg
ICByZXR1cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgKGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSAmJiBlbGVtZW50Lmhhc05hbWUo
KSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIC8vIGJ1dCBvbmx5IGlmIHRoZXkgaGF2ZSBhIG5h
bWUgYXR0cmlidXRlICh0aGlzIHZlcnkgc3RyYW5nZSBydWxlIG1hdGNoZXMgSUUpLgorICAgIHJl
dHVybiAoZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChlbGVtZW50KSAmJiBlbGVt
ZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSkKKyAgICAgICAgfHwgKGVsZW1l
bnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQuZ2V0SWRBdHRy
aWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggNDNhYmMwMmVkNzk0MjBiYzA2N2M1YzA5Y2FkZDJlNDZj
ZWFiOTNmYi4uY2YyMDY3ZGNkODIwYzMyZTAxZTQxNGVlZjJhYzMyZjI1ZDJhYTJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTYzLDggKzYzLDYgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIGlubGluZSBIVE1MT2JqZWN0RWxlbWVudDo6SFRN
TE9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
Y3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAg
IDogSFRNTFBsdWdJbkltYWdlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFy
c2VyKQogICAgICwgRm9ybUFzc29jaWF0ZWRFbGVtZW50KGZvcm0pCi0gICAgLCBtX2RvY05hbWVk
SXRlbSh0cnVlKQotICAgICwgbV91c2VGYWxsYmFja0NvbnRlbnQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGhhc1RhZ05hbWUob2JqZWN0VGFnKSk7CiB9CkBAIC0zMzcsOCArMzM1LDggQEAgdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9p
bnQpCiAKIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogewotICAgIHVwZGF0ZURvY05hbWVkSXRlbSgpOwotICAgIGlmIChp
c0Nvbm5lY3RlZCgpICYmICF1c2VGYWxsYmFja0NvbnRlbnQoKSkgeworICAgIHVwZGF0ZUV4cG9z
ZWRTdGF0ZSgpOworICAgIGlmIChpc0Nvbm5lY3RlZCgpICYmICFtX3VzZUZhbGxiYWNrQ29udGVu
dCkgewogICAgICAgICBzZXROZWVkc1dpZGdldFVwZGF0ZSh0cnVlKTsKICAgICAgICAgaW52YWxp
ZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwogICAgIH0KQEAgLTM1Nyw3ICszNTUsNyBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIEhUTUxPYmplY3RFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiAK
IHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVudCgpCiB7Ci0gICAg
aWYgKHVzZUZhbGxiYWNrQ29udGVudCgpKQorICAgIGlmIChtX3VzZUZhbGxiYWNrQ29udGVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKQEAgLTM4NSw3
MyArMzgzLDgxIEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVu
dCgpCiAgICAgZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiB9CiAKLS8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBhbGwgY2FsbGVycyBhcmUgYWxtb3N0IGNlcnRhaW5s
eSB3cm9uZy4KLXN0YXRpYyBib29sIGlzUmVjb2duaXplZFRhZ05hbWUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwcmV2ZW50c1BhcmVudE9iamVjdEZy
b21FeHBvc3VyZShjb25zdCBFbGVtZW50JiBjaGlsZCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYXV0
byB0YWdMaXN0ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4gbWFwOworICAgIHN0YXRpYyBjb25zdCBhdXRvIG1vc3RLbm93blRhZ3Mg
PSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICBIYXNoU2V0PFF1YWxpZmllZE5hbWU+
IHNldDsKICAgICAgICAgYXV0byogdGFncyA9IEhUTUxOYW1lczo6Z2V0SFRNTFRhZ3MoKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MTmFtZXM6OkhUTUxUYWdzQ291bnQ7IGkr
KykgewotICAgICAgICAgICAgaWYgKCp0YWdzW2ldID09IGJnc291bmRUYWcKLSAgICAgICAgICAg
ICAgICB8fCAqdGFnc1tpXSA9PSBjb21tYW5kVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3Nb
aV0gPT0gZGV0YWlsc1RhZwotICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGZpZ2NhcHRp
b25UYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tpXSA9PSBmaWd1cmVUYWcKLSAgICAgICAg
ICAgICAgICB8fCAqdGFnc1tpXSA9PSBzdW1tYXJ5VGFnCi0gICAgICAgICAgICAgICAgfHwgKnRh
Z3NbaV0gPT0gdHJhY2tUYWcpIHsKLSAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB3ZSBo
YXZlIGF0b21zIGZvciB0aGVzZSB0YWdzLCB3ZSBkb24ndCB3YW50IHRvCi0gICAgICAgICAgICAg
ICAgLy8gdHJlYXQgdGhlbSBhcyAicmVjb2duaXplZCB0YWdzIiBmb3IgdGhlIHB1cnBvc2Ugb2Yg
cGFyc2luZwotICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCBjaGFuZ2VzIGhvdyB3ZSBw
YXJzZSBkb2N1bWVudHMuCisgICAgICAgICAgICBhdXRvJiB0YWcgPSAqdGFnc1tpXTsKKyAgICAg
ICAgICAgIC8vIE9ubHkgdGhlIHBhcmFtIGVsZW1lbnQgd2FzIGV4cGxpY2l0bHkgbWVudGlvbmVk
IGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gcnVsZQorICAgICAgICAgICAgLy8gd2Ugd2VyZSB0
cnlpbmcgdG8gaW1wbGVtZW50LCBidXQgdGhlc2UgYXJlIG90aGVyIGtub3duIEhUTUwgZWxlbWVu
dHMgdGhhdCB3ZQorICAgICAgICAgICAgLy8gaGF2ZSBkZWNpZGVkLCBvdmVyIHRoZSB5ZWFycywg
dG8gdHJlYXQgYXMgY2hpbGRyZW4gdGhhdCBkbyBub3QgcHJldmVudCBvYmplY3QKKyAgICAgICAg
ICAgIC8vIG5hbWVzIGZyb20gYmVpbmcgZXhwb3NlZC4KKyAgICAgICAgICAgIGlmICh0YWcgPT0g
Ymdzb3VuZFRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBjb21tYW5kVGFnCisgICAgICAg
ICAgICAgICAgfHwgdGFnID09IGRldGFpbHNUYWcKKyAgICAgICAgICAgICAgICB8fCB0YWcgPT0g
ZmlnY2FwdGlvblRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBmaWd1cmVUYWcKKyAgICAg
ICAgICAgICAgICB8fCB0YWcgPT0gcGFyYW1UYWcKKyAgICAgICAgICAgICAgICB8fCB0YWcgPT0g
c3VtbWFyeVRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSB0cmFja1RhZykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hcC5hZGQodGFn
c1tpXS0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgICAgIHNldC5hZGQodGFnKTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbWFwOworICAgICAgICByZXR1cm4gc2V0OwogICAgIH0o
KSk7Ci0gICAgcmV0dXJuIHRhZ0xpc3QuZ2V0KCkuY29udGFpbnModGFnTmFtZS5sb2NhbE5hbWUo
KS5pbXBsKCkpOworICAgIHJldHVybiBtb3N0S25vd25UYWdzLmdldCgpLmNvbnRhaW5zKGNoaWxk
LnRhZ1FOYW1lKCkpOwogfQogCi12b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVEb2NOYW1l
ZEl0ZW0oKQorc3RhdGljIGlubGluZSBib29sIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9z
dXJlKGNvbnN0IE5vZGUmIGNoaWxkKQogewotICAgIC8vIFRoZSBydWxlIGlzICI8b2JqZWN0PiBl
bGVtZW50cyB3aXRoIG5vIGNoaWxkcmVuIG90aGVyIHRoYW4KLSAgICAvLyA8cGFyYW0+IGVsZW1l
bnRzLCB1bmtub3duIGVsZW1lbnRzIGFuZCB3aGl0ZXNwYWNlIGNhbiBiZQotICAgIC8vIGZvdW5k
IGJ5IG5hbWUgaW4gYSBkb2N1bWVudCwgYW5kIG90aGVyIDxvYmplY3Q+IGVsZW1lbnRzIGNhbm5v
dC4iCi0gICAgYm9vbCB3YXNOYW1lZEl0ZW0gPSBtX2RvY05hbWVkSXRlbTsKLSAgICBib29sIGlz
TmFtZWRJdGVtID0gdHJ1ZTsKLSAgICBOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKLSAgICB3
aGlsZSAoY2hpbGQgJiYgaXNOYW1lZEl0ZW0pIHsKLSAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpj
aGlsZCkpIHsKLSAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50
PigqY2hpbGQpOwotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBvZiBpc1JlY29nbml6ZWRUYWdO
YW1lIGlzIGFsbW9zdCBjZXJ0YWlubHkgd3JvbmcgaGVyZS4KLSAgICAgICAgICAgIGlmIChpc1Jl
Y29nbml6ZWRUYWdOYW1lKGVsZW1lbnQudGFnUU5hbWUoKSkgJiYgIWVsZW1lbnQuaGFzVGFnTmFt
ZShwYXJhbVRhZykpCi0gICAgICAgICAgICAgICAgaXNOYW1lZEl0ZW0gPSBmYWxzZTsKLSAgICAg
ICAgfSBlbHNlIGlmIChpczxUZXh0PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICBpZiAoIWRvd25j
YXN0PFRleHQ+KCpjaGlsZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpKQotICAgICAgICAgICAg
ICAgIGlzTmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaXNO
YW1lZEl0ZW0gPSBmYWxzZTsKLSAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsK
KyAgICBpZiAoaXM8RWxlbWVudD4oY2hpbGQpKQorICAgICAgICByZXR1cm4gcHJldmVudHNQYXJl
bnRPYmplY3RGcm9tRXhwb3N1cmUoZG93bmNhc3Q8RWxlbWVudD4oY2hpbGQpKTsKKyAgICBpZiAo
aXM8VGV4dD4oY2hpbGQpKQorICAgICAgICByZXR1cm4gIWRvd25jYXN0PFRleHQ+KGNoaWxkKS5j
b250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBzaG91bGRCZUV4cG9zZWQoY29uc3QgSFRNTE9iamVjdEVsZW1lbnQmIGVsZW1l
bnQpCit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlZG9uZSB0byB1c2UgdGhlIGNv
bmNlcHQgb2YgYW4gZXhwb3NlZCBvYmplY3QgZWxlbWVudCwKKyAgICAvLyBhcyBkb2N1bWVudGVk
IGluIHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2VjdGlvbiBkZXNjcmliaW5nIERPTSB0cmVlIGFj
Y2Vzc29ycy4KKworICAgIC8vIFRoZSBydWxlIHdlIHRyeSB0byBpbXBsZW1lbnQgaGVyZSwgZnJv
bSBvbGRlciBIVE1MIHNwZWNpZmljYXRpb25zLCBpcyAib2JqZWN0IGVsZW1lbnRzCisgICAgLy8g
d2l0aCBubyBjaGlsZHJlbiBvdGhlciB0aGFuIHBhcmFtIGVsZW1lbnRzLCB1bmtub3duIGVsZW1l
bnRzIGFuZCB3aGl0ZXNwYWNlIGNhbiBiZSBmb3VuZAorICAgIC8vIGJ5IG5hbWUgaW4gYSBkb2N1
bWVudCwgYW5kIG90aGVyIG9iamVjdCBlbGVtZW50cyBjYW5ub3QiLgorCisgICAgZm9yIChhdXRv
KiBjaGlsZCA9IGVsZW1lbnQuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAocHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1
cmUoKmNoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKGlz
TmFtZWRJdGVtICE9IHdhc05hbWVkSXRlbSAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93
VHJlZSgpICYmIGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgSFRNTERv
Y3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQo
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0
ZUV4cG9zZWRTdGF0ZSgpCit7CisgICAgYm9vbCB3YXNFeHBvc2VkID0gc3RkOjpleGNoYW5nZSht
X2lzRXhwb3NlZCwgc2hvdWxkQmVFeHBvc2VkKCp0aGlzKSk7CisKKyAgICBpZiAobV9pc0V4cG9z
ZWQgIT0gd2FzRXhwb3NlZCAmJiBpc0Nvbm5lY3RlZCgpICYmICFpc0luU2hhZG93VHJlZSgpICYm
IGlzPEhUTUxEb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQg
PSBkb3duY2FzdDxIVE1MRG9jdW1lbnQ+KHRoaXMtPmRvY3VtZW50KCkpOwogCi0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaWQgPSBnZXRJZEF0dHJpYnV0ZSgpOworICAgICAgICBhdXRvJiBp
ZCA9IGdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNOYW1lZEl0ZW0pCisgICAgICAgICAgICBpZiAobV9pc0V4cG9zZWQpCiAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRG9jdW1lbnROYW1lZEl0ZW0oKmlkLmltcGwoKSwg
KnRoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92
ZURvY3VtZW50TmFtZWRJdGVtKCppZC5pbXBsKCksICp0aGlzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGdldE5hbWVBdHRyaWJ1dGUoKTsKKyAgICAg
ICAgYXV0byYgbmFtZSA9IGdldE5hbWVBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFuYW1lLmlz
RW1wdHkoKSAmJiBpZCAhPSBuYW1lKSB7Ci0gICAgICAgICAgICBpZiAoaXNOYW1lZEl0ZW0pCisg
ICAgICAgICAgICBpZiAobV9pc0V4cG9zZWQpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRk
RG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9jdW1lbnROYW1lZEl0ZW0oKm5hbWUu
aW1wbCgpLCAqdGhpcyk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9kb2NOYW1lZEl0ZW0gPSBp
c05hbWVkSXRlbTsKIH0KIAogYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBw
bGV0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAppbmRleCA2
Y2QxNDA1NDc1M2VlZjA3NGIwMWYyZTRmOTQyMjc3MjlhZGEzYWZkLi5lYzA4OTI3YmU2NmZlZTM0
ODA3NTRkM2NmODY5YjBjMWE4MjM4Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxP
YmplY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRN
TEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogICAgIHZpcnR1YWwgfkhUTUxP
YmplY3RFbGVtZW50KCk7CiAKLSAgICBib29sIGlzRG9jTmFtZWRJdGVtKCkgY29uc3QgeyByZXR1
cm4gbV9kb2NOYW1lZEl0ZW07IH0KKyAgICBib29sIGlzRXhwb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFeHBvc2VkOyB9CiAgICAgYm9vbCBjb250YWluc0phdmFBcHBsZXQoKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzRmFsbGJhY2tDb250ZW50KCkgY29uc3Q7CkBAIC03OSw3ICs3OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoQ3JlYXRlUGx1Z2lu
cykgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKKyAgICB2b2lkIHVwZGF0
ZUV4cG9zZWRTdGF0ZSgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v
dCBkZWFsIHdpdGggdXJsIG9yIHNlcnZpY2VUeXBlCiAgICAgLy8gc28gdGhhdCB3ZSBjYW4gYmV0
dGVyIHNoYXJlIGNvZGUgYmV0d2VlbiA8b2JqZWN0PiBhbmQgPGVtYmVkPi4KQEAgLTEwMyw4ICsx
MDMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNv
bnN0IGZpbmFsOwogCi0gICAgYm9vbCBtX2RvY05hbWVkSXRlbSA6IDE7Ci0gICAgYm9vbCBtX3Vz
ZUZhbGxiYWNrQ29udGVudCA6IDE7CisgICAgYm9vbCBtX2lzRXhwb3NlZCB7IHRydWUgfTsKKyAg
ICBib29sIG1fdXNlRmFsbGJhY2tDb250ZW50IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAppbmRleCAxOTM0YjM1NjUzMjUx
ZTM4M2Y0ODg1OWMxMTcyMDdlNjJjZjg5NGRiLi43ZTRkMzczZDU0Y2QxZDU2MzQ3ODNmMzEyYzkw
ZjkyZGQyMTY3ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDMzICsyNyw3MyBA
QAogI2luY2x1ZGUgIlRoZW1lLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJMZW5ndGhCb3guaCIKKyNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAoraW50IFRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250
cm9sUGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RkOjpvcHRpb25hbDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZTo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
K30KKworTGVuZ3RoU2l6ZSBUaGVtZTo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHpvb21lZFNpemU7Cit9CisKK0xlbmd0aFNpemUgVGhlbWU6Om1pbmltdW1D
b250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCkgY29uc3QK
K3sKKyAgICByZXR1cm4geyB7IDAsIEZpeGVkIH0sIHsgMCwgRml4ZWQgfSB9OworfQorCitib29s
IFRoZW1lOjpjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0KSBjb25zdAor
eworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBUaGVtZTo6cGFpbnQoQ29udHJvbFBhcnQs
IENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCwgU2Nyb2xsVmlldyosIGZsb2F0LCBmbG9hdCkKK3sKK30KKwordm9pZCBUaGVtZTo6aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9h
dFJlY3QmLCBmbG9hdCkgY29uc3QKK3sKK30KKworYm9vbCBUaGVtZTo6dXNlclByZWZlcnNSZWR1
Y2VkTW90aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIExlbmd0aEJveCBU
aGVtZTo6Y29udHJvbEJvcmRlcihDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCkgY29uc3QKIHsKICAgICBzd2l0Y2gg
KHBhcnQpIHsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKLSAgICAgICAgY2FzZSBNZW51
bGlzdFBhcnQ6Ci0gICAgICAgIGNhc2UgU2VhcmNoRmllbGRQYXJ0OgotICAgICAgICBjYXNlIENo
ZWNrYm94UGFydDoKLSAgICAgICAgY2FzZSBSYWRpb1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4g
TGVuZ3RoQm94KDApOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHpvb21l
ZEJveDsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgorICAgIGNhc2UgTWVudWxpc3RQYXJ0Ogor
ICAgIGNhc2UgU2VhcmNoRmllbGRQYXJ0OgorICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgorICAgIGNh
c2UgUmFkaW9QYXJ0OgorICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDApOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiB6b29tZWRCb3g7CiAgICAgfQogfQogCiBMZW5ndGhCb3ggVGhlbWU6
OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0KSBjb25zdAogewogICAgIHN3aXRjaCAocGFy
dCkgewotICAgICAgICBjYXNlIE1lbnVsaXN0UGFydDoKLSAgICAgICAgY2FzZSBNZW51bGlzdEJ1
dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgotICAgICAgICBjYXNlIFJhZGlv
UGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCk7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gem9vbWVkQm94OworICAgIGNhc2UgTWVudWxpc3RQYXJ0Ogor
ICAgIGNhc2UgTWVudWxpc3RCdXR0b25QYXJ0OgorICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgorICAg
IGNhc2UgUmFkaW9QYXJ0OgorICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDApOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiB6b29tZWRCb3g7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGhlbWUuaAppbmRleCA5NDAyOWQ3NzEyZjI1MTFhYmRhODkxM2I5NjkyOWYxMGIwNzdhZmJmLi41
OGQ4MDk4YzNlM2YwMjdjODFhMWFiMDY2NmI2YTI3ZTBiNjZlODY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMTA1ICsyMyw2OSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRl
ZiBUaGVtZV9oCi0jZGVmaW5lIFRoZW1lX2gKKyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29s
b3IuaCIKLSNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCi0jaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKLSNpbmNsdWRlICJMZW5ndGhCb3guaCIKLSNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5j
bHVkZSAiVGhlbWVUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udHJvbFN0
YXRlczsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZvbnRDYXNjYWRlOworY2xhc3MgRm9udENh
c2NhZGVEZXNjcmlwdGlvbjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKK2NsYXNzIExlbmd0aEJv
eDsKIGNsYXNzIFNjcm9sbFZpZXc7CiAKLS8vIFVubGlrZSBvdGhlciBwbGF0Zm9ybSBjbGFzc2Vz
LCBUaGVtZSBkb2VzIGV4dGVuc2l2ZWx5IHVzZSB2aXJ0dWFsIGZ1bmN0aW9ucy4gIFRoaXMgZGVz
aWduIGFsbG93cyBhIHBsYXRmb3JtIHRvIHN3aXRjaCBiZXR3ZWVuIG11bHRpcGxlIHRoZW1lcyBh
dCBydW50aW1lLgorc3RydWN0IExlbmd0aFNpemU7CisKIGNsYXNzIFRoZW1lIHsKIHB1YmxpYzoK
LSAgICBUaGVtZSgpIHsgfQotICAgIHZpcnR1YWwgflRoZW1lKCkgeyB9CisgICAgc3RhdGljIFRo
ZW1lJiBzaW5nbGV0b24oKTsKIAotICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxp
bmUgcG9zaXRpb24gYWRqdXN0bWVudCBmb3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2lsbCBv
bmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQorICAgIC8vIEEgZnVuY3Rpb24gdG8gb2J0YWluIHRo
ZSBiYXNlbGluZSBwb3NpdGlvbiBhZGp1c3RtZW50IGZvciBhICJsZWFmIiBjb250cm9sLiBUaGlz
IHdpbGwgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAgLy8gcG9zaXRpb24gY2Fubm90IGJlIGRl
dGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxkIGNvbnRlbnQuIENoZWNrYm94ZXMgYW5kIHJhZGlv
IGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCi0gICAgLy8gY29udHJvbHMgdGhhdCBuZWVkIHRvIGRv
IHRoaXMuICBUaGUgYWRqdXN0bWVudCBpcyBhbiBvZmZzZXQgdGhhdCBhZGRzIHRvIHRoZSBiYXNl
bGluZSwgZS5nLiwgbWFyZ2luVG9wKCkgKyBoZWlnaHQoKSArIHxvZmZzZXR8LgorICAgIC8vIGNv
bnRyb2xzIHRoYXQgbmVlZCB0byBkbyB0aGlzLiBUaGUgYWRqdXN0bWVudCBpcyBhbiBvZmZzZXQg
dGhhdCBhZGRzIHRvIHRoZSBiYXNlbGluZSwgZS5nLiwgbWFyZ2luVG9wKCkgKyBoZWlnaHQoKSAr
IHxvZmZzZXR8LgogICAgIC8vIFRoZSBvZmZzZXQgaXMgbm90IHpvb21lZC4KLSAgICB2aXJ0dWFs
IGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRy
b2xQYXJ0KSBjb25zdDsKIAotICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgY29udHJvbCBj
aGFuZ2VzIGl0cyBhcHBlYXJhbmNlIHdoZW4gdGhlIHdpbmRvdyBpcyBpbmFjdGl2ZS4KLSAgICB2
aXJ0dWFsIGJvb2wgY29udHJvbEhhc0luYWN0aXZlQXBwZWFyYW5jZShDb250cm9sUGFydCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAKLSAgICAvLyBHZW5lcmFsIG1ldGhvZHMgZm9yIHdo
ZXRoZXIgb3Igbm90IGFueSBvZiB0aGUgY29udHJvbHMgaW4gdGhlIHRoZW1lIGNoYW5nZSBhcHBl
YXJhbmNlIHdoZW4gdGhlIHdpbmRvdyBpcyBpbmFjdGl2ZSBvcgotICAgIC8vIHdoZW4gaG92ZXJl
ZCBvdmVyLgotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sc0NhbkhhdmVJbmFjdGl2ZUFwcGVhcmFu
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sc0Nh
bkhhdmVIb3ZlcmVkQXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAv
LyBVc2VkIGJ5IFJlbmRlclRoZW1lOjppc0NvbnRyb2xTdHlsZWQgdG8gZmlndXJlIG91dCBpZiB0
aGUgbmF0aXZlIGxvb2sgYW5kIGZlZWwgc2hvdWxkIGJlIHR1cm5lZCBvZmYuCi0gICAgdmlydHVh
bCBib29sIGNvbnRyb2xEcmF3c0JvcmRlcihDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sRHJhd3NCYWNrZ3JvdW5kKENvbnRyb2xQYXJ0
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0Zv
Y3VzT3V0bGluZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgLy8g
TWV0aG9kcyBmb3Igb2J0YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGNvbG9ycy4KLSAgICB2aXJ0
dWFsIENvbG9yIHNlbGVjdGlvbkNvbG9yKENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVz
JiwgU2VsZWN0aW9uUGFydCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQotICAgIHZpcnR1YWwg
Q29sb3IgdGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQotICAgIAotICAgIC8vIENTUyBzeXN0ZW0gY29sb3JzIGFuZCBmb250cwotICAgIHZpcnR1YWwg
Q29sb3Igc3lzdGVtQ29sb3IoVGhlbWVDb2xvcikgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQot
ICAgIHZpcnR1YWwgRm9udENhc2NhZGUgc3lzdGVtRm9udChUaGVtZUZvbnQsIEZvbnREZXNjcmlw
dGlvbiYpIGNvbnN0IHsgcmV0dXJuIEZvbnRDYXNjYWRlKCk7IH0KLSAgICAKLSAgICAvLyBIb3cg
ZmFzdCB0aGUgY2FyZXQgYmxpbmtzIGluIHRleHQgZmllbGRzLgotICAgIHZpcnR1YWwgU2Vjb25k
cyBjYXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiA1MDBfbXM7IH0KLQotICAgIC8v
IE5vdGlmaWNhdGlvbiB3aGVuIHRoZSB0aGVtZSBoYXMgY2hhbmdlZAotICAgIHZpcnR1YWwgdm9p
ZCB0aGVtZUNoYW5nZWQoKSB7IH0KLQotICAgIC8vIE1ldGhvZHMgdXNlZCB0byBhZGp1c3QgdGhl
IFJlbmRlclN0eWxlcyBvZiBjb250cm9scy4KLSAgICAKICAgICAvLyBUaGUgZm9udCBkZXNjcmlw
dGlvbiByZXN1bHQgc2hvdWxkIGhhdmUgYSB6b29tZWQgZm9udCBzaXplLgotICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9s
UGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9Ci0gICAgCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250
Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OworCiAgICAgLy8gVGhlIHNpemUgaGVy
ZSBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMgYWxyZWFkeS4gSWYgYSBuZXcgc2l6ZSBpcyByZXR1
cm5lZCwgaXQgYWxzbyBuZWVkcyB0byBiZSBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCi0gICAgdmly
dHVhbCBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IC8qem9vbUZhY3RvciovKSBj
b25zdCB7IHJldHVybiB6b29tZWRTaXplOyB9Ci0gICAgCi0gICAgLy8gUmV0dXJucyB0aGUgbWlu
aW11bSBzaXplIGZvciBhIGNvbnRyb2wgaW4gem9vbWVkIGNvb3JkaW5hdGVzLiAgCi0gICAgdmly
dHVhbCBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4geyB7IDAsIEZp
eGVkIH0sIHsgMCwgRml4ZWQgfSB9OyB9CisgICAgdmlydHVhbCBMZW5ndGhTaXplIGNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUg
bWluaW11bSBzaXplIGZvciBhIGNvbnRyb2wgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgorICAgIHZp
cnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CiAgICAgCiAgICAgLy8gQWxsb3dz
IHRoZSB0aGVtZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIHBhZGRpbmcvYm9yZGVyLgogICAgIHZp
cnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKICAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sQm9yZGVyKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdDsKLSAgICAKKwogICAgIC8vIFdoZXRoZXIgb3Igbm90IHdoaXRlc3BhY2U6IHBy
ZSBzaG91bGQgYmUgZm9yY2VkIG9uIGFsd2F5cy4KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJl
cXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFy
dCkgY29uc3Q7CiAKICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJl
Y3QgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250
cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxv
YXQgLypkZXZpY2VTY2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0
b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKTsKIAogICAgIC8vIFNvbWUgY29udHJvbHMgbWF5IHNwaWxsIG91dCBvZiB0aGVpciBj
b250YWluZXJzIChlLmcuLCB0aGUgY2hlY2sgb24gYW4gT1MgWCBjaGVja2JveCkuICBXaGVuIHRo
ZXNlIGNvbnRyb2xzIHJlcGFpbnQsCiAgICAgLy8gdGhlIHRoZW1lIG5lZWRzIHRvIGNvbW11bmlj
YXRlIHRoaXMgaW5mbGF0ZWQgcmVjdCB0byB0aGUgZW5naW5lIHNvIHRoYXQgaXQgY2FuIGludmFs
aWRhdGUgdGhlIHdob2xlIGNvbnRyb2wuCiAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIGluIGlzIGlu
IHpvb21lZCBjb29yZGluYXRlcywgc28gdGhlIGluZmxhdGlvbiBzaG91bGQgdGFrZSB0aGF0IGlu
dG8gYWNjb3VudCBhbmQgbWFrZSBzdXJlIHRoZSBpbmZsYXRpb24KICAgICAvLyBhbW91bnQgaXMg
YWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCi0gICAgdmlydHVhbCB2b2lkIGluZmxhdGVD
b250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRS
ZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQorICAg
IHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3Qg
Q29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7CiAKLSAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25jZSwgZnJvbSBSZW5kZXJUaGVtZTo6YWRqdXN0
RGVmYXVsdFN0eWxlU2hlZXQoKSwgdG8gbGV0IGVhY2ggcGxhdGZvcm0gYWRqdXN0Ci0gICAgLy8g
dGhlIGRlZmF1bHQgQ1NTIHJ1bGVzIGluIGh0bWwuY3NzLgotICAgIHN0YXRpYyBTdHJpbmcgZGVm
YXVsdFN0eWxlU2hlZXQoKTsKK3Byb3RlY3RlZDoKKyAgICBUaGVtZSgpID0gZGVmYXVsdDsKKyAg
ICB2aXJ0dWFsIH5UaGVtZSgpIHsgfQogCiBwcml2YXRlOgotICAgIG11dGFibGUgQ29sb3IgbV9h
Y3RpdmVTZWxlY3Rpb25Db2xvcjsKLSAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVTZWxlY3Rp
b25Db2xvcjsKKyAgICBUaGVtZShjb25zdCBUaGVtZSYpID0gZGVsZXRlOworICAgIHZvaWQgb3Bl
cmF0b3I9KGNvbnN0IFRoZW1lJikgPSBkZWxldGU7CiB9OwogCi0vLyBGdW5jdGlvbiB0byBvYnRh
aW4gdGhlIHRoZW1lLiAgVGhpcyBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgcGxhdGZvcm0tc3BlY2lm
aWMgc3ViY2xhc3Nlcy4KLVRoZW1lKiBwbGF0Zm9ybVRoZW1lKCk7Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIFRoZW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuaAppbmRleCBkYzUxODQ3MGQ2Y2I1NmFiNzU0NjExMjFlMGJlM2E0ZGI3
Mjc3YWQ0Li5lYjU5OGUzNDQxOTVjYzBhMDU2MTM0NDQ0ZDI0N2FiMjliODcwMTA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCkBAIC0yMywyMSArMjMsMTUg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBUaGVtZUNvY29hX2gKLSNkZWZpbmUg
VGhlbWVDb2NvYV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRoZW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGhlbWVDb2NvYSA6IHB1YmxpYyBUaGVtZSB7Ci1wdWJs
aWM6Ci0gICAgVGhlbWVDb2NvYSgpIHsgfQotICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0K
LQotICAgIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Citwcml2YXRlOgorICAgIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBUaGVtZUNvY29hX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVt
ZUNvY29hLm1tCmluZGV4IDQ4YjJlNWU0YjUyN2VhMWRhMDRkOTMyYTM3ODA0YzBjYjU3Y2UwNmMu
Ljg2MTUwZTVhOGFlMzdiY2FhY2UxNDJlMTJhZjhhZDAzMDk1YjljZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlRoZW1lQ29jb2EuaCIKIAorI2ltcG9ydCAiRm9udENhc2Nh
ZGUuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCA8ZGxmY24uaD4KIApA
QCAtNTEsNiArNTIsNyBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9Cb3goR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwogfQogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKKwogc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlKCkKIHsKICAgICBz
dGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCmluZGV4IGI4YmQyMWE1ZTg2
NjIyNjI0ZDNjZDdhOWRjODM1MmMyNGUyNDU4NGIuLjNjOGRkNzNmZWVkMWYzMDExNmUxY2MzNDM3
ZjdkZTQyNjRmZTRhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCkBAIC0yMTAsOCArMjEwLDggQEAgZ2Jvb2xlYW4g
R2FtZXBhZHNHbGliOjppc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqIGRldmljZSkKIAogdm9p
ZCBzYW1wbGVHYW1lcGFkcyhHYW1lcGFkTGlzdCogaW50bykKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoR2FtZXBhZHNHbGliLCBnYW1lcGFkc0dsaWIsIChpbnRvLT5sZW5n
dGgoKSkpOwotICAgIGdhbWVwYWRzR2xpYi51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R2FtZXBhZHNHbGliPiBnYW1lcGFkc0dsaWIoaW50by0+bGVu
Z3RoKCk7CisgICAgZ2FtZXBhZHNHbGliLmdldCgpLnVwZGF0ZUdhbWVwYWRMaXN0KGludG8pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZDdjOWQ0MjRhMmJmYTIyNjE2NjA0YmFk
NDU4ZjZmYmI0MjI4NzJkZC4uNDUxZTBlNTFhM2JiZTM0ZGUxNGRmODQyZDU5N2FmODYwODI5YjU0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2
aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxl
ckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzQs
MTUgKzM0LDE2IEBACiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKLSNpZiBV
U0UoQ0FJUk8pCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLSNlbmRpZgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgVVNFKENBSVJPKQorI2lu
Y2x1ZGUgPGNhaXJvLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5h
bWVzcGFjZSBVbmljb2RlOwogCkBAIC01MCwzNCArNTEsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250
cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJik7
CiAKK3N0YXRpYyB2b2lkIGFkZChIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNldCwgY29uc3QgY2hh
ciogbmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyPiB1bmljb2RlTmFtZSkKK3sKKyAg
ICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAgIHNldC5hZGQoQXRvbWlj
U3RyaW5nIHsgbmFtZSwgbmFtZUxlbmd0aCwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCB9KTsKKyAgICB1bnNpZ25lZCB1bmljb2RlTmFtZUxlbmd0aCA9IHVuaWNvZGVOYW1lLnNp
emUoKTsKKyAgICBzZXQuYWRkKEF0b21pY1N0cmluZyB7IHVuaWNvZGVOYW1lLmJlZ2luKCksIHVu
aWNvZGVOYW1lTGVuZ3RoIH0pOworfQorCiBzdGF0aWMgYm9vbCB1c2VCYWNrc2xhc2hBc1llblNp
Z25Gb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7CiAgICAgaWYgKGZhbWls
eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdGF0aWMgSGFzaFNldDxB
dG9taWNTdHJpbmc+KiBzZXQ7Ci0gICAgaWYgKCFzZXQpIHsKLSAgICAgICAgc2V0ID0gbmV3IEhh
c2hTZXQ8QXRvbWljU3RyaW5nPjsKLSAgICAgICAgc2V0LT5hZGQoIk1TIFBHb3RoaWMiKTsKLSAg
ICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywgMHgw
MDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07Ci0gICAgICAgIHNl
dC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TUEdvdGhpYywgV1RGX0FSUkFZX0xFTkdU
SCh1bmljb2RlTmFtZU1TUEdvdGhpYykpKTsKLQotICAgICAgICBzZXQtPmFkZCgiTVMgUE1pbmNo
byIpOwotICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TUE1pbmNob1tdID0gezB4RkYyRCwgMHhG
RjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUR9OwotICAgICAgICBzZXQtPmFkZChB
dG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIFdURl9BUlJBWV9MRU5HVEgodW5pY29k
ZU5hbWVNU1BNaW5jaG8pKSk7Ci0KLSAgICAgICAgc2V0LT5hZGQoIk1TIEdvdGhpYyIpOwotICAg
ICAgICBVQ2hhciB1bmljb2RlTmFtZU1TR290aGljW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAy
MCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKLSAgICAgICAgc2V0LT5hZGQoQXRv
bWljU3RyaW5nKHVuaWNvZGVOYW1lTVNHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5h
bWVNU0dvdGhpYykpKTsKLQotICAgICAgICBzZXQtPmFkZCgiTVMgTWluY2hvIik7Ci0gICAgICAg
IFVDaGFyIHVuaWNvZGVOYW1lTVNNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAw
eDY2MEUsIDB4NjcxRH07Ci0gICAgICAgIHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFt
ZU1TTWluY2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNNaW5jaG8pKSk7Ci0KLSAg
ICAgICAgc2V0LT5hZGQoIk1laXJ5byIpOwotICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1laXJ5
b1tdID0gezB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQX07Ci0gICAgICAgIHNldC0+YWRk
KEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1laXJ5bywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2Rl
TmFtZU1laXJ5bykpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNldC0+Y29udGFpbnMoZmFtaWx5KTsK
KyAgICBzdGF0aWMgY29uc3QgYXV0byBzZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
ICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2V0OworICAgICAgICBhZGQoc2V0LCAiTVMgUEdv
dGhpYyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywg
MHgzMEMzLCAweDMwQUYgfSk7CisgICAgICAgIGFkZChzZXQsICJNUyBQTWluY2hvIiwgeyAweEZG
MkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEIH0pOworICAgICAgICBh
ZGQoc2V0LCAiTVMgR290aGljIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDMwQjQsIDB4
MzBCNywgMHgzMEMzLCAweDMwQUYgfSk7CisgICAgICAgIGFkZChzZXQsICJNUyBNaW5jaG8iLCB7
IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4NjYwRSwgMHg2NzFEIH0pOworICAgICAgICBhZGQo
c2V0LCAiTWVpcnlvIiwgeyAweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUEgfSk7CisgICAg
ICAgIHJldHVybiBzZXQ7CisgICAgfSgpKTsKKyAgICByZXR1cm4gc2V0LmdldCgpLmNvbnRhaW5z
KGZhbWlseSk7CiB9CiAKIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2Rl
UGF0aCA9IEF1dG87CkBAIC04OCwxMSArODMsNiBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9u
dENhc2NhZGU6OnNfY29kZVBhdGggPSBBdXRvOwogCiBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUo
KQogICAgIDogbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwgbV9sZXR0ZXJTcGFjaW5nKDAp
Ci0gICAgLCBtX3dvcmRTcGFjaW5nKDApCi0gICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9s
KGZhbHNlKQotICAgICwgbV9lbmFibGVLZXJuaW5nKGZhbHNlKQotICAgICwgbV9yZXF1aXJlc1No
YXBpbmcoZmFsc2UpCiB7CiB9CiAKQEAgLTExMSw5ICsxMDEsNiBAQCBGb250Q2FzY2FkZTo6Rm9u
dENhc2NhZGUoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZmQsIGZsb2F0IGxldHRlclNw
YWNpbmcsCiBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
Zm9udERhdGEsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9vdGhpbmdNb2RlKQogICAgIDogbV9m
b250cyhGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGVGb3JQbGF0Zm9ybUZvbnQoZm9udERhdGEpKQog
ICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwgbV9sZXR0ZXJTcGFjaW5nKDApCi0g
ICAgLCBtX3dvcmRTcGFjaW5nKDApCi0gICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKGZh
bHNlKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGNvbXB1dGVFbmFibGVLZXJuaW5nKCkpCiAgICAg
LCBtX3JlcXVpcmVzU2hhcGluZyhjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCkpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA3NzFjNmZi
ZTZjMjRiOGE0NmYyZDBiYTY1MjQ5ZTA1MWZhNjFlMjhlLi4zY2QyMTQ0MjdjYzljYTM5Y2I0ZjU1
MWVmM2FjZjJhYzE2YWUzYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAw
NywgMjAxMCwgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKQEAgLTIyLDE1ICsyMiwxMyBAQAogICoKICAqLwogCi0jaWZuZGVmIEZvbnRDYXNjYWRlX2gK
LSNkZWZpbmUgRm9udENhc2NhZGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEYXNoQXJy
YXkuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGVGb250cy5oIgog
I2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRl
ICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00NCwxMyArNDIsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0UG9pbnQ7Ci1jbGFzcyBGbG9hdFJl
Y3Q7Ci1jbGFzcyBGb250RGF0YTsKLWNsYXNzIEZvbnRNZXRyaWNzOwotY2xhc3MgRm9udFBsYXRm
b3JtRGF0YTsKLWNsYXNzIEZvbnRTZWxlY3RvcjsKLWNsYXNzIEdseXBoQnVmZmVyOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogY2xhc3MgTGF5b3V0UmVjdDsKIGNsYXNzIFJlbmRlclRleHQ7CkBA
IC02MCwyMSArNTEsMTIgQEAgY2xhc3MgVGV4dFJ1bjsKIHN0cnVjdCBHbHlwaERhdGE7CiAKIHN0
cnVjdCBHbHlwaE92ZXJmbG93IHsKLSAgICBHbHlwaE92ZXJmbG93KCkKLSAgICAgICAgOiBsZWZ0
KDApCi0gICAgICAgICwgcmlnaHQoMCkKLSAgICAgICAgLCB0b3AoMCkKLSAgICAgICAgLCBib3R0
b20oMCkKLSAgICAgICAgLCBjb21wdXRlQm91bmRzKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBpbmxpbmUgYm9vbCBpc0VtcHR5KCkKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICFsZWZ0ICYmICFyaWdodCAmJiAhdG9wICYmICFib3R0b207CiAgICAg
fQogCi0gICAgaW5saW5lIHZvaWQgZXh0ZW5kVG8oY29uc3QgR2x5cGhPdmVyZmxvdyYgb3RoZXIp
CisgICAgdm9pZCBleHRlbmRUbyhjb25zdCBHbHlwaE92ZXJmbG93JiBvdGhlcikKICAgICB7CiAg
ICAgICAgIGxlZnQgPSBzdGQ6Om1heChsZWZ0LCBvdGhlci5sZWZ0KTsKICAgICAgICAgcmlnaHQg
PSBzdGQ6Om1heChyaWdodCwgb3RoZXIucmlnaHQpOwpAQCAtODQsMTQgKzY2LDE1IEBAIHN0cnVj
dCBHbHlwaE92ZXJmbG93IHsKIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHbHlwaE92ZXJm
bG93JiBvdGhlcikKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBQcm9iYWJseSBzaG91bGQgbmFt
ZSB0aGlzIHJhdGhlciB0aGFuIG1ha2luZyBpdCB0aGUgIT0gb3BlcmF0b3Igc2luY2UgaXQgaWdu
b3JlcyB0aGUgdmFsdWUgb2YgY29tcHV0ZUJvdW5kcy4KICAgICAgICAgcmV0dXJuIGxlZnQgIT0g
b3RoZXIubGVmdCB8fCByaWdodCAhPSBvdGhlci5yaWdodCB8fCB0b3AgIT0gb3RoZXIudG9wIHx8
IGJvdHRvbSAhPSBvdGhlci5ib3R0b207CiAgICAgfQogCi0gICAgaW50IGxlZnQ7Ci0gICAgaW50
IHJpZ2h0OwotICAgIGludCB0b3A7Ci0gICAgaW50IGJvdHRvbTsKLSAgICBib29sIGNvbXB1dGVC
b3VuZHM7CisgICAgaW50IGxlZnQgeyAwIH07CisgICAgaW50IHJpZ2h0IHsgMCB9OworICAgIGlu
dCB0b3AgeyAwIH07CisgICAgaW50IGJvdHRvbSB7IDAgfTsKKyAgICBib29sIGNvbXB1dGVCb3Vu
ZHMgeyBmYWxzZSB9OwogfTsKIAogY2xhc3MgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKQEAgLTMy
NSwxMSArMzA4LDExIEBAIHByaXZhdGU6CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBtX2Zv
bnREZXNjcmlwdGlvbjsKICAgICBtdXRhYmxlIFJlZlB0cjxGb250Q2FzY2FkZUZvbnRzPiBtX2Zv
bnRzOwogICAgIFdlYWtQdHJGYWN0b3J5PEZvbnRDYXNjYWRlPiBtX3dlYWtQdHJGYWN0b3J5Owot
ICAgIGZsb2F0IG1fbGV0dGVyU3BhY2luZzsKLSAgICBmbG9hdCBtX3dvcmRTcGFjaW5nOwotICAg
IG11dGFibGUgYm9vbCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sOwotICAgIG11dGFibGUgdW5z
aWduZWQgbV9lbmFibGVLZXJuaW5nIDogMTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlw
dGlvbi4KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcmVxdWlyZXNTaGFwaW5nIDogMTsgLy8gQ29t
cHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KKyAgICBmbG9hdCBtX2xldHRlclNwYWNpbmcg
eyAwIH07CisgICAgZmxvYXQgbV93b3JkU3BhY2luZyB7IDAgfTsKKyAgICBtdXRhYmxlIGJvb2wg
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1f
ZW5hYmxlS2VybmluZyB7IGZhbHNlIH07IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRp
b24uCisgICAgbXV0YWJsZSBib29sIG1fcmVxdWlyZXNTaGFwaW5nIHsgZmFsc2UgfTsgLy8gQ29t
cHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KIH07CiAKIHZvaWQgaW52YWxpZGF0ZUZvbnRD
YXNjYWRlQ2FjaGUoKTsKQEAgLTM3MCw1ICszNTMsMyBAQCBpbmxpbmUgZmxvYXQgRm9udENhc2Nh
ZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIHVuc2lnbmVkIHRhYlNpemUsIGZsb2F0IHBv
cwogfQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYTMwMGUw
ZjFiODg0NWU3MjQzMjM2OTNjMDNlNTdkZDE2YTIzYzQ4My4uMGFmMzMwMjg0MDZjZTdlOTUzMjRl
OGI3ZjNjNGM4YzExN2U3MDVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC01MSw3
ICs1MSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc3JjUmVj
dC54KCksIC1zcmNSZWN0LnkoKSk7CiAKLSAgICBwbGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZElt
YWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigpLmRy
YXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkRHJhdzsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwpA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogICAgICAgICByZXR1cm47
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7Ci0gICAgcGxhdGZvcm1UaGVtZSgpLT5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGdy
YXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVp
Z2h0KCkpKTsKKyAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBn
cmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhl
aWdodCgpKSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4
dC4KICAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYjRmYWQwNzkxYTAwYWRiMmM1M2RmNTc3MmI1MDNm
ZjliZjMxZDM1ZC4uZjhlZjRkNWJlNDRhNzVhYmEyNGU3NjM1Mjk2ZjkyMWIxNmU4MWJjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCkBAIC0yNjUsMjIgKzI2NSwxOSBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBt
ZXRhZGF0YUtleU5hbWVzKCkKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRp
bWVkTWV0YWRhdGFHcm91cC5oIGV4cG9ydGVkIHRoaXMga2V5Lgogc3RhdGljIENGU3RyaW5nUmVm
IENNVGltZVJhbmdlU3RhcnRLZXkoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChDRlN0cmluZ1JlZiwga2V5LCAoQ0ZTVFIoInN0YXJ0IikpKTsKLSAgICByZXR1cm4ga2V5
OworICAgIHJldHVybiBDRlNUUigic3RhcnQiKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGJldHRlciBpZiBBVkNGVGltZWRNZXRhZGF0YUdyb3VwLmggZXhwb3J0ZWQgdGhpcyBrZXkuCiBz
dGF0aWMgQ0ZTdHJpbmdSZWYgQ01UaW1lUmFuZ2VEdXJhdGlvbktleSgpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENGU3RyaW5nUmVmLCBrZXksIChDRlNUUigiZHVyYXRp
b24iKSkpOwotICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJuIENGU1RSKCJkdXJhdGlvbiIpOwog
fQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlmIEFWQ0YgZXhwb3J0ZWQgdGhpcyBu
b3RpZmljYXRpb24gbmFtZS4KIHN0YXRpYyBDRlN0cmluZ1JlZiBDQUNGQ29udGV4dE5lZWRzRmx1
c2hOb3RpZmljYXRpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChD
RlN0cmluZ1JlZiwgbmFtZSwgKENGU1RSKCJrQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0
aW9uIikpKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4gQ0ZTVFIoImtDQUNGQ29udGV4
dE5lZWRzRmx1c2hOb3RpZmljYXRpb24iKTsKIH0KIAogLy8gRGVmaW5lIEFWQ0Ygb2JqZWN0IGFj
Y2Vzc29ycyBhcyBpbmxpbmUgZnVuY3Rpb25zIGhlcmUgaW5zdGVhZCBvZiBpbiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRiBzbyB3ZSBkb24ndCBoYXZlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2Vz
Rmx1c2hlci5jcHAKaW5kZXggMGRiODhjODViY2Q4YTA2ODM0MjE1OGNhM2Q3MTc5ZmM1YTQ2OTcw
ZS4uNDEzYzkwYmRkNTZhZGM5ZjEzNzc5NmE0N2VjNzNmZTg1NDQyMDkxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXll
ckNoYW5nZXNGbHVzaGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJh
Y3RDQUNGTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZWRFeGNlcHRpb25IYW5k
bGVyU3VwcHJlc3Nvci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM3
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMYXllckNoYW5nZXNGbHVzaGVyJiBM
YXllckNoYW5nZXNGbHVzaGVyOjpzaW5nbGV0b24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChMYXllckNoYW5nZXNGbHVzaGVyLCBmbHVzaGVyLCAoKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPExheWVyQ2hhbmdlc0ZsdXNoZXI+IGZsdXNoZXI7CiAgICAgcmV0
dXJuIGZsdXNoZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKaW5kZXggODA4ODMwYjhiODU3YmQyODZi
ODNmZThkNDRjNDZhOTQxNzA5N2EzNS4uN2JlN2YyYTZhZjJhMWE5MzBkNTg1ZGM0OTNjMTE4ZTlj
NzNjZWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VTb3VyY2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMzkgKzQ2LDM3IEBAIFN0cmluZyBNSU1FVHlw
ZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFN0cmluZyBwcmVmZXJy
ZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAg
IGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICBpZiAodHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBTdHJp
bmdNYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZ01hcCwgVVRJ
TWFwLCAoKSk7Ci0gICAgaWYgKFVUSU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVVRJTWFwLmFk
ZCgicHVibGljLmh0bWwiLCAiaHRtbCIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMuanBl
ZyIsICJqcGVnIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5qcGVnLTIwMDAiLCAianAy
Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5wbGFpbi10ZXh0IiwgInR4dCIpOwotICAg
ICAgICBVVElNYXAuYWRkKCJwdWJsaWMucG5nIiwgInBuZyIpOwotICAgICAgICBVVElNYXAuYWRk
KCJwdWJsaWMudGlmZiIsICJ0aWZmIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy54Yml0
bWFwLWltYWdlIiwgInhibSIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMueG1sIiwgInht
bCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYWRvYmUuaWxsdXN0cmF0b3IuYWktaW1hZ2Ui
LCAiYWkiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBkZiIsICJwZGYiKTsKLSAg
ICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBob3Rvc2hvcC1pbWFnZSIsICJwc2QiKTsKLSAg
ICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBvc3RzY3JpcHQiLCAicHMiKTsKLSAgICAgICAg
VVRJTWFwLmFkZCgiY29tLmFwcGxlLmljbnMiLCAiaWNucyIpOwotICAgICAgICBVVElNYXAuYWRk
KCJjb20uYXBwbGUubWFjcGFpbnQtaW1hZ2UiLCAicG50ZyIpOwotICAgICAgICBVVElNYXAuYWRk
KCJjb20uYXBwbGUucGljdCIsICJwaWN0Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hcHBs
ZS5xdWlja3RpbWUtaW1hZ2UiLCAicXRpZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYXBw
bGUud2ViYXJjaGl2ZSIsICJ3ZWJhcmNoaXZlIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5j
b21wdXNlcnZlLmdpZiIsICJnaWYiKTsgICAgICAgIAotICAgICAgICBVVElNYXAuYWRkKCJjb20u
aWxtLm9wZW5leHItaW1hZ2UiLCAiZXhyIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5rb2Rh
ay5mbGFzaHBpeC1pbWFnZSIsICJmcHgiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLm1pY3Jv
c29mdC5ibXAiLCAiYm1wIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5taWNyb3NvZnQuaWNv
IiwgImljbyIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubmV0c2NhcGUuamF2YXNjcmlwdC1z
b3VyY2UiLCAianMiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLnNnaS5zZ2ktaW1hZ2UiLCAi
c2dpIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS50cnVldmlzaW9uLnRnYS1pbWFnZSIsICJ0
Z2EiKTsKLSAgICB9Ci0gICAgcmV0dXJuIFVUSU1hcC5nZXQodHlwZSk7CisgICAgc3RhdGljIGNv
bnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgICAgICB7ICJwdWJsaWMuaHRtbCIsICJo
dG1sIiB9LAorICAgICAgICB7ICJwdWJsaWMuanBlZyIsICJqcGVnIiB9LAorICAgICAgICB7ICJw
dWJsaWMuanBlZy0yMDAwIiwgImpwMiIgfSwKKyAgICAgICAgeyAicHVibGljLnBsYWluLXRleHQi
LCAidHh0IiB9LAorICAgICAgICB7ICJwdWJsaWMucG5nIiwgInBuZyIgfSwKKyAgICAgICAgeyAi
cHVibGljLnRpZmYiLCAidGlmZiIgfSwKKyAgICAgICAgeyAicHVibGljLnhiaXRtYXAtaW1hZ2Ui
LCAieGJtIiB9LAorICAgICAgICB7ICJwdWJsaWMueG1sIiwgInhtbCIgfSwKKyAgICAgICAgeyAi
Y29tLmFkb2JlLmlsbHVzdHJhdG9yLmFpLWltYWdlIiwgImFpIiB9LAorICAgICAgICB7ICJjb20u
YWRvYmUucGRmIiwgInBkZiIgfSwKKyAgICAgICAgeyAiY29tLmFkb2JlLnBob3Rvc2hvcC1pbWFn
ZSIsICJwc2QiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5wb3N0c2NyaXB0IiwgInBzIiB9LAor
ICAgICAgICB7ICJjb20uYXBwbGUuaWNucyIsICJpY25zIiB9LAorICAgICAgICB7ICJjb20uYXBw
bGUubWFjcGFpbnQtaW1hZ2UiLCAicG50ZyIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLnBpY3Qi
LCAicGljdCIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLnF1aWNrdGltZS1pbWFnZSIsICJxdGlm
IiB9LAorICAgICAgICB7ICJjb20uYXBwbGUud2ViYXJjaGl2ZSIsICJ3ZWJhcmNoaXZlIiB9LAor
ICAgICAgICB7ICJjb20uY29tcHVzZXJ2ZS5naWYiLCAiZ2lmIiB9LAorICAgICAgICB7ICJjb20u
aWxtLm9wZW5leHItaW1hZ2UiLCAiZXhyIiB9LAorICAgICAgICB7ICJjb20ua29kYWsuZmxhc2hw
aXgtaW1hZ2UiLCAiZnB4IiB9LAorICAgICAgICB7ICJjb20ubWljcm9zb2Z0LmJtcCIsICJibXAi
IH0sCisgICAgICAgIHsgImNvbS5taWNyb3NvZnQuaWNvIiwgImljbyIgfSwKKyAgICAgICAgeyAi
Y29tLm5ldHNjYXBlLmphdmFzY3JpcHQtc291cmNlIiwgImpzIiB9LAorICAgICAgICB7ICJjb20u
c2dpLnNnaS1pbWFnZSIsICJzZ2kiIH0sCisgICAgICAgIHsgImNvbS50cnVldmlzaW9uLnRnYS1p
bWFnZSIsICJ0Z2EiIH0sCisgICAgfSk7CisgICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCmluZGV4IDgzZmYyN2Vh
NTI1NjIyOGE4ZDU3NWJhZWYxN2M2NzU2NTZjMjE3YTQuLmZjZGRhODQ3OGJhNjM5MGE0YmZlM2I0
YTMxOTE5NGU3YTFjZTMxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApAQCAtNzQsOCArNzQsOCBA
QCB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxGYWNlQ2FjaGVFbnRyeT4sIFdURjo6
SW50SGFzaDx1aW50NjRfdD4sIFdURjo6VQogCiBzdGF0aWMgSGFyZkJ1enpGYWNlQ2FjaGUqIGhh
cmZCdXp6RmFjZUNhY2hlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
SGFyZkJ1enpGYWNlQ2FjaGUsIHNfaGFyZkJ1enpGYWNlQ2FjaGUsICgpKTsKLSAgICByZXR1cm4g
JnNfaGFyZkJ1enpGYWNlQ2FjaGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhcmZCdXp6
RmFjZUNhY2hlPiBzX2hhcmZCdXp6RmFjZUNhY2hlOworICAgIHJldHVybiAmc19oYXJmQnV6ekZh
Y2VDYWNoZS5nZXQoKTsKIH0KIAogSGFyZkJ1enpGYWNlOjpIYXJmQnV6ekZhY2UoRm9udFBsYXRm
b3JtRGF0YSogcGxhdGZvcm1EYXRhLCB1aW50NjRfdCB1bmlxdWVJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXgg
NzgxYjZmODAzOGRjZGZlMjdjMzYxMzgzNzQ2YWFhZmNmMDcyZWE2OS4uYWNmZTc5ZTZhYjQyNjdh
NWU1YjI2NzE1YmI3MzBlN2Q2OGFjZWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTM0MCw4ICszNDAsOSBA
QCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbgogCiBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVz
b3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZhbGxi
YWNrRm9udE5hbWUsICgpKTsKLSAgICBpZiAoIWZhbGxiYWNrRm9udE5hbWUuaXNFbXB0eSgpKQor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGZhbGxiYWNrRm9udE5hbWU7
CisKKyAgICBpZiAoIWZhbGxiYWNrRm9udE5hbWUuZ2V0KCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gKmZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnROYW1lKTsK
IAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUg
dXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCkBAIC0zNjAsNyAr
MzYxLDcgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICBSZWZQdHI8Rm9udD4gc2ltcGxl
Rm9udDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJh
Y2tGb250cyk7ICsraSkgewogICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnRGb3JGYW1pbHko
Zm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnRzW2ldKSkgewotICAgICAgICAgICAgZmFsbGJh
Y2tGb250TmFtZSA9IGZhbGxiYWNrRm9udHNbaV07CisgICAgICAgICAgICBmYWxsYmFja0ZvbnRO
YW1lLmdldCgpID0gZmFsbGJhY2tGb250c1tpXTsKICAgICAgICAgICAgIHJldHVybiAqc2ltcGxl
Rm9udDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9UaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
LmgKaW5kZXggMzc3YjgyMjZlNGFmODEzZGY5ZWY1MGU2MjE3MDQyNTlkNDhhOTgyOS4uNzBiNjFh
YmFhZjlkMGQ0YzMxNDdhZjdkZmI0ZjliNmY4N2Q4MjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1RoZW1lSU9TLmgKQEAgLTIzLDIxICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2lmbmRlZiBUaGVtZUlPU19oCi0jZGVmaW5lIFRoZW1lSU9TX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiVGhlbWVDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFRoZW1lSU9TIDogcHVibGljIFRoZW1lQ29jb2EgewotcHVibGljOgotICAgIFRoZW1lSU9T
KCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVJT1MoKSB7IH0KLQotICAgIGJvb2wgdXNlclByZWZl
cnNSZWR1Y2VkTW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CitjbGFzcyBUaGVtZUlPUyBmaW5hbCA6
IHB1YmxpYyBUaGVtZUNvY29hIHsKK3ByaXZhdGU6CisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVj
ZWRNb3Rpb24oKSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIFRoZW1lSU9TX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9UaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5t
bQppbmRleCAwNzIwZDY0NmQ5NTAyMDI2YjIyNGJjMDZmNWVkZDljNGVjMDdkNWRlLi4zMTUwMmNi
YWEwMTRjZDA2NTdmYjc3ZGQ1ZWVmOTY5N2I0MWY0Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1RoZW1lSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlRoZW1lSU9TLmgiCiAKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9y
dCAiU2Nyb2xsVmlldy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNz
aWJpbGl0eUlzUmVkdWNlTW90aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKQEAgLTM5LDEy
ICszNiwxMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LS8vIEZJWE1FOiBJbXBsZW1lbnQgYmVmb3JlIGVuYWJsaW5nIFVTRShORVdfVEhFTUUpLgotCi1U
aGVtZSogcGxhdGZvcm1UaGVtZSgpCitUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCiB7Ci0gICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1lSU9TPiB0aGVtZUlPUzsKLSAgICByZXR1cm4gJnRo
ZW1lSU9TLmdldCgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZUlPUz4gdGhlbWU7
CisgICAgcmV0dXJuIHRoZW1lOwogfQogCiBib29sIFRoZW1lSU9TOjp1c2VyUHJlZmVyc1JlZHVj
ZWRNb3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRl
eCBiMzQ2YTY1ZWQwMTZhNDgwNzkxMDRlOTNlMjg1ODRhNjJiMGNhZjNjLi4xNjdjZjQwNmNiYjA0
YjhkYjBlN2FkNmZhODQyODk2YzYyM2JjMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw0NiArMjMsMzYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5k
ZWYgVGhlbWVNYWNfaAotI2RlZmluZSBUaGVtZU1hY19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIlRoZW1lQ29jb2EuaCIKIAotQGludGVyZmFjZSBOU0ZvbnQoV2ViQ29yZVRoZW1lKQotLSAo
TlNTdHJpbmcqKXdlYkNvcmVGYW1pbHlOYW1lOwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFRoZW1lTWFjIDogcHVibGljIFRoZW1lQ29jb2EgewotICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworY2xhc3MgVGhlbWVNYWMgZmluYWwgOiBwdWJsaWMgVGhlbWVDb2NvYSB7
CiBwdWJsaWM6Ci0gICAgVGhlbWVNYWMoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZU1hYygpIHsg
fQotICAgIAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gRklYTUU6IE9uY2UgUmVuZGVyVGhlbWVNYWMgaXMgY29u
dmVydGVkIG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhpcyBjYW4gYmUgaW50ZXJuYWwgdG8gVGhl
bWVNYWMuCisgICAgc3RhdGljIE5TVmlldyAqZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyosIGNvbnN0
IENvbnRyb2xTdGF0ZXMmLCBib29sIHVzZVVucGFyZW50ZWRWaWV3ID0gZmFsc2UpOworICAgIHN0
YXRpYyB2b2lkIHNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHN0
YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcgKiwgYm9vbCAvKiBk
cmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVzZUlt
YWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIAotICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJy
aWRlOwotICAgIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOworcHJpdmF0
ZToKKyAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0
IGZpbmFsOwogCi0gICAgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICBMZW5ndGhCb3ggY29udHJvbEJvcmRlcihDb250cm9s
UGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgY29udHJvbFJl
cXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCBwYXJ0KSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9CisgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6
ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CisgICAgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJv
bFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVz
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IpIG92ZXJyaWRlOwotICAgIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBh
cnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdCBvdmVycmlkZTsKKyAgICBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQs
IGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpv
b21GYWN0b3IpIGNvbnN0IGZpbmFsOworICAgIExlbmd0aEJveCBjb250cm9sQm9yZGVyKENvbnRy
b2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgdXNlclByZWZlcnNSZWR1
Y2VkTW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVX
aGl0ZVNwYWNlKENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHBhcnQgPT0g
UHVzaEJ1dHRvblBhcnQ7IH0KIAotICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlz
IGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRv
IFRoZW1lTWFjLgotICAgIHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBj
b25zdCBDb250cm9sU3RhdGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKLSAg
ICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAg
ICBzdGF0aWMgYm9vbCBkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8q
IGRyYXdCdXR0b25DZWxsICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNl
SW1hZ2VCdWZmZXIgKi8sIGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKKyAgICB2b2lk
IHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIGZpbmFsOworICAgIHZvaWQgaW5m
bGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBG
bG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgdXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZU1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KaW5kZXggMmUxYjJjYjY3ZTBkYTYyMTE1YjBhZDgyNThkNzE1N2MxOWE0
NzA3Mi4uMGU1OTU4YjViZWRiNDc2Nzk4Nzk0YWFlMmI5NThmNWIzN2YzZWJjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMyw3ICsx
Myw3IEBACiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCiAgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKICAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgpAQCAtMjcsOCArMjcsMTAgQEAKICNp
bXBvcnQgIlRoZW1lTWFjLmgiCiAKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQg
IkNvbnRyb2xTdGF0ZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAi
SW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxlbmd0aFNpemUuaCIKICNpbXBvcnQgIkxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiTlNCdXR0b25DZWxsU1BJLmgiCiAjaW1w
b3J0ICJTY3JvbGxWaWV3LmgiCkBAIC00NCw2ICs0Niw5IEBAIHN0YXRpYyBCT09MIHRoZW1lV2lu
ZG93SGFzS2V5QXBwZWFyYW5jZTsKIEBpbnRlcmZhY2UgV2ViQ29yZVRoZW1lV2luZG93IDogTlNX
aW5kb3cKIEBlbmQKIAorQGludGVyZmFjZSBXZWJDb3JlVGhlbWVWaWV3IDogTlNDb250cm9sCitA
ZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlVGhlbWVXaW5kb3cKIAogLSAoQk9PTCloYXNL
ZXlBcHBlYXJhbmNlCkBAIC01OCw5ICs2Myw2IEBAIC0gKEJPT0wpaXNLZXlXaW5kb3cKIAogQGVu
ZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVUaGVtZVZpZXcgOiBOU0NvbnRyb2wKLUBlbmQKLQogQGlt
cGxlbWVudGF0aW9uIFdlYkNvcmVUaGVtZVZpZXcKIAogLSAoTlNXaW5kb3cgKil3aW5kb3cKQEAg
LTEwOCwxOCArMTEwLDYgQEAgLSAodm9pZClhZGRTdWJ2aWV3OihOU1ZpZXcqKXN1YnZpZXcKIAog
QGVuZAogCi1AaW1wbGVtZW50YXRpb24gTlNGb250IChXZWJDb3JlVGhlbWUpCi0KLS0gKE5TU3Ry
aW5nKil3ZWJDb3JlRmFtaWx5TmFtZQotewotICAgIGlmIChbW3NlbGYgZmFtaWx5TmFtZV0gaGFz
UHJlZml4OkAiLiJdKQotICAgICAgICByZXR1cm4gW3NlbGYgZm9udE5hbWVdOwotCi0gICAgcmV0
dXJuIFtzZWxmIGZhbWlseU5hbWVdOwotfQotCi1AZW5kCi0KIC8vIEZJWE1FOiBEZWZhdWx0IGJ1
dHRvbnMgcmVhbGx5IHNob3VsZCBiZSBtb3JlIGxpa2UgcHVzaCBidXR0b25zIGFuZCBub3QgbGlr
ZSBidXR0b25zLgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzEsMTAgKzEyMSwxMCBAQCBl
bnVtIHsKICAgICBsZWZ0TWFyZ2luCiB9OwogCi1UaGVtZSogcGxhdGZvcm1UaGVtZSgpCitUaGVt
ZSYgVGhlbWU6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1l
TWFjPiB0aGVtZU1hYzsKLSAgICByZXR1cm4gJnRoZW1lTWFjLmdldCgpOworICAgIHJldHVybiB0
aGVtZU1hYzsKIH0KIAogLy8gSGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IGEgYnVuY2ggb2YgZGlm
ZmVyZW50IGNvbnRyb2wgcGFydHMuCkBAIC0yNDEsOCArMjMxLDggQEAgc3RhdGljIFRoZW1lRHJh
d1N0YXRlIGNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdTdGF0ZShUaGVtZUJ1dHRvbktp
bmQga2luZCwKIAogc3RhdGljIEZsb2F0UmVjdCBpbmZsYXRlUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHpvb21lZFJlY3QsIGNvbnN0IEludFNpemUmIHpvb21lZFNpemUsIGNvbnN0IGludCogbWFyZ2lu
cywgZmxvYXQgem9vbUZhY3RvcikKIHsKLSAgICAvLyBPbmx5IGRvIHRoZSBpbmZsYXRpb24gaWYg
dGhlIGF2YWlsYWJsZSB3aWR0aC9oZWlnaHQgYXJlIHRvbyBzbWFsbC4gIE90aGVyd2lzZSB0cnkg
dG8KLSAgICAvLyBmaXQgdGhlIGdsb3cvY2hlY2sgc3BhY2UgaW50byB0aGUgYXZhaWxhYmxlIGJv
eCdzIHdpZHRoL2hlaWdodC4KKyAgICAvLyBPbmx5IGRvIHRoZSBpbmZsYXRpb24gaWYgdGhlIGF2
YWlsYWJsZSB3aWR0aC9oZWlnaHQgYXJlIHRvbyBzbWFsbC4KKyAgICAvLyBPdGhlcndpc2UgdHJ5
IHRvIGZpdCB0aGUgZ2xvdy9jaGVjayBzcGFjZSBpbnRvIHRoZSBhdmFpbGFibGUgYm94J3Mgd2lk
dGgvaGVpZ2h0LgogICAgIGludCB3aWR0aERlbHRhID0gem9vbWVkUmVjdC53aWR0aCgpIC0gKHpv
b21lZFNpemUud2lkdGgoKSArIG1hcmdpbnNbbGVmdE1hcmdpbl0gKiB6b29tRmFjdG9yICsgbWFy
Z2luc1tyaWdodE1hcmdpbl0gKiB6b29tRmFjdG9yKTsKICAgICBpbnQgaGVpZ2h0RGVsdGEgPSB6
b29tZWRSZWN0LmhlaWdodCgpIC0gKHpvb21lZFNpemUuaGVpZ2h0KCkgKyBtYXJnaW5zW3RvcE1h
cmdpbl0gKiB6b29tRmFjdG9yICsgbWFyZ2luc1tib3R0b21NYXJnaW5dICogem9vbUZhY3Rvcik7
CiAgICAgRmxvYXRSZWN0IHJlc3VsdCh6b29tZWRSZWN0KTsKQEAgLTY4OSwzNyArNjc5LDM3IEBA
IGludCBUaGVtZU1hYzo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQgcGFy
dCkgY29uc3QKIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6
OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdAogewogICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBj
YXNlIFB1c2hCdXR0b25QYXJ0OiB7Ci0gICAgICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29s
dXRlU2l6ZSh0cnVlKTsKLQotICAgICAgICAgICAgTlNGb250KiBuc0ZvbnQgPSBbTlNGb250IHN5
c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOmNvbnRy
b2xTaXplRm9yRm9udChmb250KV1dOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9u
ZUZhbWlseShBdG9taWNTdHJpbmcoIi1hcHBsZS1zeXN0ZW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0
ZWRTaXplKFtuc0ZvbnQgcG9pbnRTaXplXSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZh
Y3Rvcik7Ci0gICAgICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9uOwotICAgICAgICB9Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVGhlbWU6OmNvbnRyb2xGb250KHBh
cnQsIGZvbnQsIHpvb21GYWN0b3IpOworICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKKyAgICAg
ICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKworICAgICAgICBOU0ZvbnQqIG5z
Rm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9y
Q29udHJvbFNpemU6Y29udHJvbFNpemVGb3JGb250KGZvbnQpXV07CisgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoQXRvbWljU3RyaW5nKCItYXBwbGUtc3lzdGVtIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0Q29tcHV0ZWRTaXplKFtuc0ZvbnQgcG9pbnRTaXplXSAqIHpvb21GYWN0b3IpOworICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShbbnNGb250IHBvaW50U2l6ZV0gKiB6
b29tRmFjdG9yKTsKKyAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbjsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKIExlbmd0
aFNpemUgVGhlbWVNYWM6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdAogewogICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBjYXNlIENoZWNrYm94
UGFydDoKLSAgICAgICAgICAgIHJldHVybiBjaGVja2JveFNpemUoZm9udCwgem9vbWVkU2l6ZSwg
em9vbUZhY3Rvcik7Ci0gICAgICAgIGNhc2UgUmFkaW9QYXJ0OgotICAgICAgICAgICAgcmV0dXJu
IHJhZGlvU2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKLSAgICAgICAgY2FzZSBQ
dXNoQnV0dG9uUGFydDoKLSAgICAgICAgICAgIC8vIEhlaWdodCBpcyByZXNldCB0byBhdXRvIHNv
IHRoYXQgc3BlY2lmaWVkIGhlaWdodHMgY2FuIGJlIGlnbm9yZWQuCi0gICAgICAgICAgICByZXR1
cm4gc2l6ZUZyb21Gb250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0
b3IsIGJ1dHRvblNpemVzKCkpOwotICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICBpZiAoIXpvb21lZFNpemUud2lkdGguaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAh
em9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRyaW5zaWNPckF1dG8oKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gem9vbWVkU2l6ZTsKLSAgICAgICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNp
emUoc3RlcHBlckNvbnRyb2xTaXplRm9yRm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rv
ciwgc3RlcHBlclNpemVzKCkpOwotICAgICAgICBkZWZhdWx0OgorICAgIGNhc2UgQ2hlY2tib3hQ
YXJ0OgorICAgICAgICByZXR1cm4gY2hlY2tib3hTaXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21G
YWN0b3IpOworICAgIGNhc2UgUmFkaW9QYXJ0OgorICAgICAgICByZXR1cm4gcmFkaW9TaXplKGZv
bnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOworICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6Cisg
ICAgICAgIC8vIEhlaWdodCBpcyByZXNldCB0byBhdXRvIHNvIHRoYXQgc3BlY2lmaWVkIGhlaWdo
dHMgY2FuIGJlIGlnbm9yZWQuCisgICAgICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgeyB6
b29tZWRTaXplLndpZHRoLCB7IH0gfSwgem9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7CisgICAg
Y2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgorICAgICAgICBpZiAoIXpvb21lZFNpemUud2lkdGgu
aXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhem9vbWVkU2l6ZS5oZWlnaHQuaXNJbnRyaW5zaWNPckF1
dG8oKSkKICAgICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOworICAgICAgICByZXR1cm4gc2l6
ZUZyb21OU0NvbnRyb2xTaXplKHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoZm9udCksIHpvb21l
ZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gem9vbWVkU2l6ZTsKICAgICB9CiB9CiAKQEAgLTc0NCwyOCArNzM0LDI4IEBAIExl
bmd0aEJveCBUaGVtZU1hYzo6Y29udHJvbEJvcmRlcihDb250cm9sUGFydCBwYXJ0LCBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCwgY29uCiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNh
c2UgU3F1YXJlQnV0dG9uUGFydDoKLSAgICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKLSAg
ICAgICAgY2FzZSBCdXR0b25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwLCB6
b29tZWRCb3gucmlnaHQoKS52YWx1ZSgpLCAwLCB6b29tZWRCb3gubGVmdCgpLnZhbHVlKCkpOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sQm9yZGVy
KHBhcnQsIGZvbnQsIHpvb21lZEJveCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBEZWZhdWx0QnV0
dG9uUGFydDoKKyAgICBjYXNlIEJ1dHRvblBhcnQ6CisgICAgICAgIHJldHVybiBMZW5ndGhCb3go
MCwgem9vbWVkQm94LnJpZ2h0KCkudmFsdWUoKSwgMCwgem9vbWVkQm94LmxlZnQoKS52YWx1ZSgp
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gVGhlbWU6OmNvbnRyb2xCb3JkZXIocGFy
dCwgZm9udCwgem9vbWVkQm94LCB6b29tRmFjdG9yKTsKICAgICB9CiB9CiAKIExlbmd0aEJveCBU
aGVtZU1hYzo6Y29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdAogewogICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0
OiB7Ci0gICAgICAgICAgICAvLyBKdXN0IHVzZSA4cHguICBBcHBLaXQgd2FudHMgdG8gdXNlIDEx
cHggZm9yIG1pbmkgYnV0dG9ucywgYnV0IHRoYXQgcGFkZGluZyBpcyBqdXN0IHRvbyBsYXJnZQot
ICAgICAgICAgICAgLy8gZm9yIHJlYWwtd29ybGQgV2ViIHNpdGVzIChjcmVhdGluZyBhIGh1Z2Ug
bmVjZXNzYXJ5IG1pbmltdW0gd2lkdGggZm9yIGJ1dHRvbnMgd2hvc2Ugc3BhY2UgaXMKLSAgICAg
ICAgICAgIC8vIGJ5IGRlZmluaXRpb24gY29uc3RyYWluZWQsIHNpbmNlIHdlIHNlbGVjdCBtaW5p
IG9ubHkgZm9yIHNtYWxsIGNyYW1wZWQgZW52aXJvbm1lbnRzLgotICAgICAgICAgICAgLy8gVGhp
cyBhbHNvIGd1YXJhbnRlZXMgdGhlIEhUTUwgPGJ1dHRvbj4gd2lsbCBtYXRjaCBvdXIgcmVuZGVy
aW5nIGJ5IGRlZmF1bHQsIHNpbmNlIHdlJ3JlIHVzaW5nIGEgY29uc2lzdGVudAotICAgICAgICAg
ICAgLy8gcGFkZGluZy4KLSAgICAgICAgICAgIGNvbnN0IGludCBwYWRkaW5nID0gOCAqIHpvb21G
YWN0b3I7Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDIsIHBhZGRpbmcsIDMsIHBhZGRp
bmcpOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVGhl
bWU6OmNvbnRyb2xQYWRkaW5nKHBhcnQsIGZvbnQsIHpvb21lZEJveCwgem9vbUZhY3Rvcik7Cisg
ICAgY2FzZSBQdXNoQnV0dG9uUGFydDogeworICAgICAgICAvLyBKdXN0IHVzZSA4cHguIEFwcEtp
dCB3YW50cyB0byB1c2UgMTFweCBmb3IgbWluaSBidXR0b25zLCBidXQgdGhhdCBwYWRkaW5nIGlz
IGp1c3QgdG9vIGxhcmdlCisgICAgICAgIC8vIGZvciByZWFsLXdvcmxkIFdlYiBzaXRlcyAoY3Jl
YXRpbmcgYSBodWdlIG5lY2Vzc2FyeSBtaW5pbXVtIHdpZHRoIGZvciBidXR0b25zIHdob3NlIHNw
YWNlIGlzCisgICAgICAgIC8vIGJ5IGRlZmluaXRpb24gY29uc3RyYWluZWQsIHNpbmNlIHdlIHNl
bGVjdCBtaW5pIG9ubHkgZm9yIHNtYWxsIGNyYW1wZWQgZW52aXJvbm1lbnRzLgorICAgICAgICAv
LyBUaGlzIGFsc28gZ3VhcmFudGVlcyB0aGUgSFRNTCA8YnV0dG9uPiB3aWxsIG1hdGNoIG91ciBy
ZW5kZXJpbmcgYnkgZGVmYXVsdCwgc2luY2Ugd2UncmUgdXNpbmcgYSBjb25zaXN0ZW50CisgICAg
ICAgIC8vIHBhZGRpbmcuCisgICAgICAgIGNvbnN0IGludCBwYWRkaW5nID0gOCAqIHpvb21GYWN0
b3I7CisgICAgICAgIHJldHVybiBMZW5ndGhCb3goMiwgcGFkZGluZywgMywgcGFkZGluZyk7Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJvbFBhZGRpbmco
cGFydCwgZm9udCwgem9vbWVkQm94LCB6b29tRmFjdG9yKTsKICAgICB9CiB9CiAKQEAgLTc3Niw3
ICs3NjYsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9s
UGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAgIHN3aXRjaCAocGFydCkgewog
ICAgICAgICBjYXNlIENoZWNrYm94UGFydDogewogICAgICAgICAgICAgLy8gV2UgaW5mbGF0ZSB0
aGUgcmVjdCBhcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgcGFkZGluZyBpbmNsdWRlZCBpbiB0aGUg
Y2VsbCB0byBhY2NvbW1vZGF0ZSB0aGUgY2hlY2tib3gKLSAgICAgICAgICAgIC8vIHNoYWRvdyIg
YW5kIHRoZSBjaGVjay4gIFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRz
IG9mIHRoZSBjb250cm9sIGluIFdlYktpdC4KKyAgICAgICAgICAgIC8vIHNoYWRvdyIgYW5kIHRo
ZSBjaGVjay4gV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhl
IGNvbnRyb2wgaW4gV2ViS2l0LgogICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hhcmVkQ2hl
Y2tib3hDZWxsKHN0YXRlcywgem9vbVJlY3RTaXplLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAg
IE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAgICAg
ICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBjaGVja2JveFNpemVzKClbY29udHJvbFNpemVdOwpA
QCAtNzg3LDcgKzc3Nyw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBSYWRpb1BhcnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJl
Y3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwg
dG8gYWNjb21tb2RhdGUgdGhlIHJhZGlvIGJ1dHRvbgotICAgICAgICAgICAgLy8gc2hhZG93Ii4g
IFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9s
IGluIFdlYktpdC4KKyAgICAgICAgICAgIC8vIHNoYWRvdyIuIFdlIGRvbid0IGNvbnNpZGVyIHRo
aXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9sIGluIFdlYktpdC4KICAgICAgICAg
ICAgIE5TQ2VsbCAqY2VsbCA9IHNoYXJlZFJhZGlvQ2VsbChzdGF0ZXMsIHpvb21SZWN0U2l6ZSwg
em9vbUZhY3Rvcik7CiAgICAgICAgICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2Nl
bGwgY29udHJvbFNpemVdOwogICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gcmFkaW9T
aXplcygpW2NvbnRyb2xTaXplXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAppbmRleCBmZjUyYjdkMzkxNjNk
NWQ5Zjg0MTQ2NDMwYmMzZTg1NjYyZmQ3ZDY1Li5lMDBkZTk2NjVhMGEwM2RmZTgxY2FjZTAyMjZl
NTQ5ODkwZjU2MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRp
YyB1aW50MzJfdCBtYWdpY051bWJlcigpCiAKIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbigp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZXh0
ZW5zaW9uLCAoQVNDSUlMaXRlcmFsKCIuZG93bmxvYWQiKSkpOworICAgIHN0YXRpYyBjb25zdCBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGV4dGVuc2lvbiB7IEFTQ0lJTGl0ZXJhbCB7ICIuZG93bmxv
YWQiIH0gfTsKICAgICByZXR1cm4gZXh0ZW5zaW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IGY4ZTU2
YjZlZTQ0ZTk4MjQ2OTMwODE5NDY2NDUyMWYxZTg2MTA4MmUuLjJkZGMzNzBiOWMyMmJjZTBiNTNm
YjY0YmMwMzE4ZDBiNWZkYjY4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCkBAIC0yOTksMTMgKzI5OSwxMiBAQCB2
b2lkIG1hcmt1cFRvQ0ZIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwLCBjb25zdCBTdHJpbmcmIHNy
Y1VSTCwgVmVjdG9yPGNoYXI+JiByZQogCiB2b2lkIHJlcGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dz
U3R5bGVOZXdsaW5lcyhTdHJpbmcmIHN0cikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCB3aW5kb3dzTmV3bGluZSwgKEFTQ0lJTGl0ZXJhbCgiXHJcbiIpKSk7
CiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgc3RyLmxlbmd0aCgpOyArK2luZGV4KSB7CiAgICAgICAgIGlmIChzdHJbaW5kZXhd
ICE9ICdcbicgfHwgKGluZGV4ID4gMCAmJiBzdHJbaW5kZXggLSAxXSA9PSAnXHInKSkKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyW2luZGV4XSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQod2luZG93c05ld2xpbmUpOworICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoIlxyXG4iKTsKICAgICB9CiAgICAgc3RyID0gcmVzdWx0LnRvU3RyaW5nKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5k
ZXggMDc3MjM3NmVkYjZjN2M0NzhlOWJkODgzMDgzZmI1MTEzNDZhZWRiZS4uZWNmOWU5MDhkZDcw
NDllMTIwZTFlYzBhMWY2OTYyZDU4NzYyMDZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFVMT05HTE9ORyBrU2Vjb25kc0Zyb21GaWxlVGlt
ZVRvVGltZXQgPSAxMTY0NDQ3MzYwMDsKQEAgLTI1NywyMSArMjU2LDIxIEBAIFN0cmluZyBkaXJl
Y3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIFN0cmluZyBidW5kbGVOYW1l
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBuYW1lLCAo
QVNDSUlMaXRlcmFsKCJXZWJLaXQiKSkpOworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IG5hbWUgPSBbXSB7CisgICAgICAgIFN0cmluZyBuYW1lIHsgQVNDSUlMaXRlcmFs
IHsgIldlYktpdCIgfSB9OwogCiAjaWYgVVNFKENGKQotICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkOwotCi0gICAgaWYgKCFpbml0aWFsaXplZCkgewotICAgICAgICBpbml0aWFsaXplZCA9IHRy
dWU7Ci0KLSAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1
bmRsZSgpKQotICAgICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxlID0gQ0ZC
dW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxlRXhlY3V0
YWJsZUtleSkpCisgICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSkgeworICAgICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5kbGVFeGVjdXRhYmxl
ID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwga0NGQnVuZGxl
RXhlY3V0YWJsZUtleSkpIHsKICAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYnVuZGxl
RXhlY3V0YWJsZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKICAgICAgICAgICAgICAgICAgICAg
bmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGJ1bmRsZUV4ZWN1dGFibGUpOwot
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogI2VuZGlmCiAKKyAgICAgICAgcmV0dXJu
IG5hbWU7CisgICAgfSgpOworCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKQEAgLTI4Myw4ICsyODIs
NyBAQCBzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIp
CiAgICAgYnVmZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwogICAgIFN0cmluZyBk
aXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiAKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb21wYW55TmFtZURpcmVjdG9yeSwgKEFT
Q0lJTGl0ZXJhbCgiQXBwbGUgQ29tcHV0ZXJcXCIpKSk7Ci0gICAgZGlyZWN0b3J5ID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgY29tcGFueU5hbWVEaXJlY3RvcnkgKyBidW5k
bGVOYW1lKCkpOworICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJl
Y3RvcnksICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7CiAgICAgaWYgKCFtYWtl
QWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNwcAppbmRleCBkNWFkOTc3M2Q4NDEy
OWYyZTAzNGI1YTM2ZmZjMWNmNjIxMWFlZGFiLi43MjdlNGZlY2I2YzEzMzVmNmNmNzMwYzdiZThm
YWJlZGQxY2MwY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhl
bWVXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAK
QEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRoZW1lKiBwbGF0
Zm9ybVRoZW1lKCkKK1RoZW1lJiBUaGVtZVdQRTo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGhlbWVXUEU+IHRoZW1lOwotICAgIHJldHVybiAmdGhlbWUuZ2V0KCk7
CisgICAgcmV0dXJuIHRoZW1lOwogfQogCiBMZW5ndGhTaXplIFRoZW1lV1BFOjpjb250cm9sU2l6
ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUsIGNvbnN0
IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5oCmluZGV4IDczOWY1YzFlMWNhYWJmNGM0MDQzNDM1
ZjQ5N2Y4OWU2OTEzNGIwM2YuLmI1MjRjNDg5N2M1YWZkOGIwMDkxNzg4OTA0MmQ0MzNhZjMzYjMz
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5oCkBAIC0yOSwxNiArMjks
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZVdQRSA6IHB1YmxpYyBU
aGVtZSB7Ci1wdWJsaWM6Ci0gICAgVGhlbWVXUEUoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZVdQ
RSgpIHsgfQotCi0gICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQpIGNvbnN0IG92ZXJyaWRlOwor
Y2xhc3MgVGhlbWVXUEUgZmluYWwgOiBwdWJsaWMgVGhlbWUgeworcHJpdmF0ZToKKyAgICBMZW5n
dGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IExlbmd0aFNpemUmLCBmbG9hdCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHBhaW50KENvbnRy
b2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwgZmxvYXQpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCwgU2Nyb2xsVmlldyosIGZsb2F0LCBmbG9hdCkgZmluYWw7CiAK
LXByaXZhdGU6CiAgICAgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0ZXMmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCk7CiAgICAgdm9pZCBwYWludFJhZGlv
KENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCk7CiAgICAgdm9pZCBwYWludEJ1dHRvbihDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKaW5kZXggMjgxMjY0ZGQ4YjhjODFjM2I3ODFlZTQyZmEwMDlmMzEyYTllZDY1
MS4uNjc4MTVlODczMTM0NWY1MjNkZWMwNjZiNjA1NDZkY2Y1YTNkMzc3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xLDcgKzEsNSBAQAogLyoKLSAqIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0aGVtZSBpbXBsZW1lbnRhdGlvbiBmb3IgZm9ybSBjb250
cm9scyBpbiBXZWJDb3JlLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDEwLCAyMDEyLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTU5
LDcgKzU3LDkgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjZW5kaWYKIAotLy8g
VGhlIG1ldGhvZHMgaW4gdGhpcyBmaWxlIGFyZSBzaGFyZWQgYnkgYWxsIHRoZW1lcyBvbiBldmVy
eSBwbGF0Zm9ybS4KKyNpZiBVU0UoTkVXX1RIRU1FKQorI2luY2x1ZGUgIlRoZW1lLmgiCisjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Miw5ICs3Miw2IEBAIHN0YXRpYyBDb2xv
ciYgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKQogfQogCiBSZW5kZXJUaGVtZTo6UmVuZGVyVGhlbWUo
KQotI2lmIFVTRShORVdfVEhFTUUpCi0gICAgOiBtX3RoZW1lKHBsYXRmb3JtVGhlbWUoKSkKLSNl
bmRpZgogewogfQogCkBAIC0xMjIsNyArMTE5LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAog
ICAgIGNhc2UgQnV0dG9uUGFydDogewogICAgICAgICAvLyBCb3JkZXIKICAgICAgICAgTGVuZ3Ro
Qm94IGJvcmRlckJveChzdHlsZS5ib3JkZXJUb3BXaWR0aCgpLCBzdHlsZS5ib3JkZXJSaWdodFdp
ZHRoKCksIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCksIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgp
KTsKLSAgICAgICAgYm9yZGVyQm94ID0gbV90aGVtZS0+Y29udHJvbEJvcmRlcihwYXJ0LCBzdHls
ZS5mb250Q2FzY2FkZSgpLCBib3JkZXJCb3gsIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CisgICAg
ICAgIGJvcmRlckJveCA9IFRoZW1lOjpzaW5nbGV0b24oKS5jb250cm9sQm9yZGVyKHBhcnQsIHN0
eWxlLmZvbnRDYXNjYWRlKCksIGJvcmRlckJveCwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAg
ICAgICAgaWYgKGJvcmRlckJveC50b3AoKS52YWx1ZSgpICE9IHN0YXRpY19jYXN0PGludD4oc3R5
bGUuYm9yZGVyVG9wV2lkdGgoKSkpIHsKICAgICAgICAgICAgIGlmIChib3JkZXJCb3gudG9wKCku
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBzdHlsZS5zZXRCb3JkZXJUb3BXaWR0aChib3JkZXJC
b3gudG9wKCkudmFsdWUoKSk7CkBAIC0xNTEsMzIgKzE0OCwzMiBAQCB2b2lkIFJlbmRlclRoZW1l
OjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYg
c3R5bGUsCiAgICAgICAgIH0KIAogICAgICAgICAvLyBQYWRkaW5nCi0gICAgICAgIExlbmd0aEJv
eCBwYWRkaW5nQm94ID0gbV90aGVtZS0+Y29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENh
c2NhZGUoKSwgc3R5bGUucGFkZGluZ0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAg
ICAgICBMZW5ndGhCb3ggcGFkZGluZ0JveCA9IFRoZW1lOjpzaW5nbGV0b24oKS5jb250cm9sUGFk
ZGluZyhwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5wYWRkaW5nQm94KCksIHN0eWxl
LmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGlmIChwYWRkaW5nQm94ICE9IHN0eWxlLnBhZGRp
bmdCb3goKSkKICAgICAgICAgICAgIHN0eWxlLnNldFBhZGRpbmdCb3goV1RGTW92ZShwYWRkaW5n
Qm94KSk7CiAKICAgICAgICAgLy8gV2hpdGVzcGFjZQotICAgICAgICBpZiAobV90aGVtZS0+Y29u
dHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShwYXJ0KSkKKyAgICAgICAgaWYgKFRoZW1lOjpzaW5n
bGV0b24oKS5jb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQogICAgICAgICAgICAg
c3R5bGUuc2V0V2hpdGVTcGFjZShQUkUpOwotICAgICAgICAgICAgCisKICAgICAgICAgLy8gV2lk
dGggLyBIZWlnaHQKICAgICAgICAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgaGVyZSBhcmUgYWZm
ZWN0ZWQgYnkgdGhlIHpvb20uCiAgICAgICAgIC8vIEZJWE1FOiBDaGVjayBpcyBmbGF3ZWQsIHNp
bmNlIGl0IGRvZXNuJ3QgdGFrZSBtaW4td2lkdGgvbWF4LXdpZHRoIGludG8gYWNjb3VudC4KLSAg
ICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9IG1fdGhlbWUtPmNvbnRyb2xTaXplKHBhcnQs
IHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUuaGVpZ2h0KCkgfSwg
c3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZSA9
IFRoZW1lOjpzaW5nbGV0b24oKS5jb250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgp
LCB7IHN0eWxlLndpZHRoKCksIHN0eWxlLmhlaWdodCgpIH0sIHN0eWxlLmVmZmVjdGl2ZVpvb20o
KSk7CiAgICAgICAgIGlmIChjb250cm9sU2l6ZS53aWR0aCAhPSBzdHlsZS53aWR0aCgpKQogICAg
ICAgICAgICAgc3R5bGUuc2V0V2lkdGgoV1RGTW92ZShjb250cm9sU2l6ZS53aWR0aCkpOwogICAg
ICAgICBpZiAoY29udHJvbFNpemUuaGVpZ2h0ICE9IHN0eWxlLmhlaWdodCgpKQogICAgICAgICAg
ICAgc3R5bGUuc2V0SGVpZ2h0KFdURk1vdmUoY29udHJvbFNpemUuaGVpZ2h0KSk7CiAKICAgICAg
ICAgLy8gTWluLVdpZHRoIC8gTWluLUhlaWdodAotICAgICAgICBMZW5ndGhTaXplIG1pbkNvbnRy
b2xTaXplID0gbV90aGVtZS0+bWluaW11bUNvbnRyb2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNj
YWRlKCksIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIExlbmd0aFNpemUgbWluQ29u
dHJvbFNpemUgPSBUaGVtZTo6c2luZ2xldG9uKCkubWluaW11bUNvbnRyb2xTaXplKHBhcnQsIHN0
eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGlmICht
aW5Db250cm9sU2l6ZS53aWR0aCAhPSBzdHlsZS5taW5XaWR0aCgpKQogICAgICAgICAgICAgc3R5
bGUuc2V0TWluV2lkdGgoV1RGTW92ZShtaW5Db250cm9sU2l6ZS53aWR0aCkpOwogICAgICAgICBp
ZiAobWluQ29udHJvbFNpemUuaGVpZ2h0ICE9IHN0eWxlLm1pbkhlaWdodCgpKQogICAgICAgICAg
ICAgc3R5bGUuc2V0TWluSGVpZ2h0KFdURk1vdmUobWluQ29udHJvbFNpemUuaGVpZ2h0KSk7CiAK
ICAgICAgICAgLy8gRm9udAotICAgICAgICBpZiAoYXV0byB0aGVtZUZvbnQgPSBtX3RoZW1lLT5j
b250cm9sRm9udChwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29t
KCkpKSB7CisgICAgICAgIGlmIChhdXRvIHRoZW1lRm9udCA9IFRoZW1lOjpzaW5nbGV0b24oKS5j
b250cm9sRm9udChwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29t
KCkpKSB7CiAgICAgICAgICAgICAvLyBJZiBvdmVycmlkaW5nIHRoZSBzcGVjaWZpZWQgZm9udCB3
aXRoIHRoZSB0aGVtZSBmb250LCBhbHNvIG92ZXJyaWRlIHRoZSBsaW5lIGhlaWdodCB3aXRoIHRo
ZSBzdGFuZGFyZCBsaW5lIGhlaWdodC4KICAgICAgICAgICAgIHN0eWxlLnNldExpbmVIZWlnaHQo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKHN0eWxl
LnNldEZvbnREZXNjcmlwdGlvbih0aGVtZUZvbnQudmFsdWUoKSkpCkBAIC0zMDYsNyArMzAzLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoY29uc3QgUmVuZGVyQm94JiBib3gsIENvbnRyb2xT
dGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnMKICAgICBjYXNlIEJ1dHRvblBhcnQ6CiAgICAgY2Fz
ZSBJbm5lclNwaW5CdXR0b25QYXJ0OgogICAgICAgICB1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVu
ZGVyZXIoYm94LCBjb250cm9sU3RhdGVzKTsKLSAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwg
Y29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVj
dCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CisgICAgICAgIFRoZW1lOjpzaW5n
bGV0b24oKS5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBk
ZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gu
dmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAt
Njg2LDcgKzY4Myw3IEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0CiBpbnQgUmVuZGVyVGhlbWU6OmJhc2Vs
aW5lUG9zaXRpb24oY29uc3QgUmVuZGVyQm94JiBib3gpIGNvbnN0CiB7CiAjaWYgVVNFKE5FV19U
SEVNRSkKLSAgICByZXR1cm4gYm94LmhlaWdodCgpICsgYm94Lm1hcmdpblRvcCgpICsgbV90aGVt
ZS0+YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAq
IGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKKyAgICByZXR1cm4gYm94LmhlaWdodCgpICsg
Ym94Lm1hcmdpblRvcCgpICsgVGhlbWU6OnNpbmdsZXRvbigpLmJhc2VsaW5lUG9zaXRpb25BZGp1
c3RtZW50KGJveC5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgKiBib3guc3R5bGUoKS5lZmZlY3RpdmVa
b29tKCk7CiAjZWxzZQogICAgIHJldHVybiBib3guaGVpZ2h0KCkgKyBib3gubWFyZ2luVG9wKCk7
CiAjZW5kaWYKQEAgLTczMCw3ICs3MjcsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RSZXBh
aW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBGbG9hdFJlY3QmIHJlYwogewog
I2lmIFVTRShORVdfVEhFTUUpCiAgICAgQ29udHJvbFN0YXRlcyBzdGF0ZXMoZXh0cmFjdENvbnRy
b2xTdGF0ZXNGb3JSZW5kZXJlcihyZW5kZXJlcikpOwotICAgIG1fdGhlbWUtPmluZmxhdGVDb250
cm9sUGFpbnRSZWN0KHJlbmRlcmVyLnN0eWxlKCkuYXBwZWFyYW5jZSgpLCBzdGF0ZXMsIHJlY3Qs
IHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICBUaGVtZTo6c2luZ2xldG9u
KCkuaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QocmVuZGVyZXIuc3R5bGUoKS5hcHBlYXJhbmNlKCks
IHN0YXRlcywgcmVjdCwgcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOwogICAgIFVOVVNFRF9QQVJBTShyZWN0KTsKQEAg
LTk0NSw2ICs5NDIsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbgogfQogCiAjaWYgRU5BQkxF
KE1FVEVSX0VMRU1FTlQpCisKIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1ldGVyU3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7
CiAgICAgc3R5bGUuc2V0Qm94U2hhZG93KG51bGxwdHIpOwpAQCAtOTY0LDcgKzk2Miw4IEBAIGJv
b2wgUmVuZGVyVGhlbWU6OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYKKwor
I2VuZGlmIC8vIE1FVEVSX0VMRU1FTlQKIAogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0Q2Fwc0xv
Y2tJbmRpY2F0b3JTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVt
ZW50KikgY29uc3QKIHsKQEAgLTk3Niw2ICs5NzUsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
CiB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB2b2lkIFJlbmRlclRoZW1l
OjphZGp1c3RBdHRhY2htZW50U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgY29u
c3QgRWxlbWVudCopIGNvbnN0CiB7CiB9CkBAIC05ODQsOSArOTg0LDExIEBAIGJvb2wgUmVuZGVy
VGhlbWU6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBJCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShEQVRBTElTVF9FTEVNRU5UKQorCiBMYXlvdXRVbml0IFJlbmRlclRoZW1lOjpzbGlkZXJU
aWNrU25hcHBpbmdUaHJlc2hvbGQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpAQCAtMTA2OSw2
ICsxMDcxLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6cGFpbnRTbGlkZXJUaWNrcyhjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUmVjdCh0aWNrUmVjdCk7CiAgICAgfQogfQorCiAjZW5kaWYKIAogU2Vjb25k
cyBSZW5kZXJUaGVtZTo6YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5k
ZXJQcm9ncmVzcyYpIGNvbnN0CkBAIC0xMjg1LDEwICsxMjg4LDEyIEBAIENvbG9yIFJlbmRlclRo
ZW1lOjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QKIH0K
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKIENvbG9yIFJlbmRlclRoZW1lOjp0YXBIaWdo
bGlnaHRDb2xvcigpCiB7CiAgICAgcmV0dXJuIHNpbmdsZXRvbigpLnBsYXRmb3JtVGFwSGlnaGxp
Z2h0Q29sb3IoKTsKIH0KKwogI2VuZGlmCiAKIC8vIFZhbHVlIGNob3NlbiBieSBvYnNlcnZhdGlv
bi4gVGhpcyBjYW4gYmUgdHdlYWtlZC4KQEAgLTEzMTUsOSArMTMyMCw5IEBAIENvbG9yIFJlbmRl
clRoZW1lOjpkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBD
b2xvciYgYmFja2dyCiAgICAgcmV0dXJuIGRpc2FibGVkQ29sb3I7CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJiBjKQordm9pZCBSZW5k
ZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewot
ICAgIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkgPSBjOworICAgIGN1c3RvbUZvY3VzUmluZ0NvbG9y
KCkgPSBjb2xvcjsKIH0KIAogQ29sb3IgUmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKCkKQEAg
LTEzNDksMTMgKzEzNTQsMTQgQEAgU3RyaW5nIFJlbmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JX
aWR0aChjb25zdCBGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnRDYXMKIH0KIAogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisKIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJl
IGRyYXduIG9uIGEgc2VtaS10cmFuc3BhcmVudCBvdmVybGF5LAogICAgIC8vIG1ha2luZyBpdCBt
b3JlIHRyYW5zcGFyZW50IHRoYW4gaXRzIGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ29sb3I+IGRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciA9
IENvbG9yKDAsIDAsIDAsIDEwMik7Ci0gICAgcmV0dXJuIGRlZmF1bHRUYXBIaWdobGlnaHRDb2xv
cjsKKyAgICByZXR1cm4gQ29sb3IoMCwgMCwgMCwgMTAyKSk7CiB9CisKICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmlu
ZGV4IGM3MjgwMWRkZjAzNWFmM2Y2ZTYyZTAzOTY3NWNjN2ZiYWRkNjg1MWMuLmEyOGJhYWNhN2Q1
MDcyZGI2YjY0NjUwNjRlZmI1Mzc0ZTlkM2UyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oCkBAIC0yNCwxMiArMjQsNyBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgog
I2luY2x1ZGUgIlBvcHVwTWVudVN0eWxlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKLQot
I2lmIFVTRShORVdfVEhFTUUpCi0jaW5jbHVkZSAiVGhlbWUuaCIKLSNlbHNlCiAjaW5jbHVkZSAi
VGhlbWVUeXBlcy5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDA0LDEw
ICszOTksNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLQotI2lmIFVTRShORVdfVEhFTUUpCi0g
ICAgVGhlbWUqIG1fdGhlbWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZS4KLSNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAwYmY4YjU5MGQyZDI3Mzhl
ODVhMmVmNzUwODQ5MGNmN2U5YzdjZDYxLi5iMGU2MDZlOTQzMzUzNjBmYzg4MzQyNjM3OTEzYzZh
NWRiZmZiMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcApAQCAtMzAsMjYgKzMwLDI5IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAj
ZW5kaWYKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PFBsdWdpblBhY2thZ2U+ID4gUGx1Z2luUGFja2FnZUJ5TmFtZU1hcDsKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCisKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
aW11bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4OwogCiBzdGF0aWMg
Ym9vbCBnUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVJc0VuYWJsZWQ7CiAKIFN0cmluZyYg
cGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjYWNoZVBhdGgsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjYWNoZVBhdGg7CiAgICAgcmV0dXJuIGNhY2hlUGF0aDsKIH0K
KwogI2VuZGlmCiAKIFBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFk
U2NoZWR1bGVyLmNwcAppbmRleCAxMjAxMmUwMmZlN2RhYmIwOTBiMWM3MmIyOTZiODVmOTkzZjAz
Nzc2Li5kYTEzMTQ3N2U2NDlkOWIwOWJjNDQ3ZmM1MmY1Y2I3NjFmMWVlZTVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRo
cmVhZFNjaGVkdWxlci5jcHAKQEAgLTMwLDggKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyJiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpz
Y2hlZHVsZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLCBzY2hlZHVsZXIsICgpKTsKLQorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyPiBzY2hlZHVsZXI7CiAgICAgcmV0dXJu
IHNjaGVkdWxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMzFh
MDhlODU3Mjg0NGQ2ZDZmN2EzYmMyOTBiZjgyNTI3ZjgyNGMzYS4uM2E5OGM2ZjY2MDY3MWZkYzBi
ODI5Yzk4MjhjOGE5MmMwY2NmMDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJhdGVnaWVzLCAo
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxh
dGZvcm1TdHJhdGVnaWVzOwogfQogCiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3Jt
U3RyYXRlZ2llcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IGFh
ZTk5ZWI1MjI5MTk0MDA2MjU3OTljNWI3MGQyMTZiMjM3OGM1NWYuLjIyYjA4NDZhOTA2Yjc4Mjg2
NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCkBAIC0yMzYsOSArMjM2LDkgQEAgVUxPTkcgV2ViSGlzdG9yeTo6UmVsZWFzZSgpCiAK
IC8vIElXZWJIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGlubGluZSBDT01QdHI8V2ViSGlzdG9y
eT4mIHNoYXJlZEhpc3RvcnlTdG9yYWdlKCkKK3N0YXRpYyBDT01QdHI8V2ViSGlzdG9yeT4mIHNo
YXJlZEhpc3RvcnlTdG9yYWdlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoQ09NUHRyPFdlYkhpc3Rvcnk+LCBzaGFyZWRIaXN0b3J5LCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPENPTVB0cjxXZWJIaXN0b3J5Pj4gc2hhcmVkSGlzdG9yeTsKICAgICByZXR1
cm4gc2hhcmVkSGlzdG9yeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggOGZmMGVmY2M4YTU4NmFlMTNjODI5ODZjN2Rl
ZDBkMDQyOTVmYWMwZi4uYjc1NzM5MTU5ZmVmZDIxZWQ2ZmEzMzY4ODgwYTE5YjliYzE0MjFlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
Y3BwCkBAIC00NywyNSArNDcsMjUgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTG9jYWxpemVk
U3RyaW5nKj4gTG9jYWxpemVkU3RyaW5nTWFwOwogCiBzdGF0aWMgTG9jayYgbWFpbkJ1bmRsZUxv
Y1N0cmluZ3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExv
Y2ssIG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExvY2s+IG11dGV4Owog
ICAgIHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCYgbWFpbkJ1
bmRsZUxvY1N0cmluZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChM
b2NhbGl6ZWRTdHJpbmdNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxM
b2NhbGl6ZWRTdHJpbmdNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCiBzdGF0aWMgTG9j
ayYgZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoTG9jaywgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
TG9jaz4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCiBzdGF0aWMgTG9jYWxpemVkU3Ry
aW5nTWFwIGZyYW1ld29ya0xvY1N0cmluZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChMb2NhbGl6ZWRTdHJpbmdNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxMb2NhbGl6ZWRTdHJpbmdNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDQ0NjM5OGI1OWE1ODcxNjIwM2Rk
MmRkM2Y5MzViZmMxYWQyZGM4MzEuLjU5YTdlZmY5MzMyN2M0Yzk3NzgxMjllN2VlYmZlYzA4MDU4
ODFkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0yMjcsMTcgKzIyNywx
OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2lu
ZyBKU0M6OkpTTG9jazsKIAorc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCk7CisK
K3N0YXRpYyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXkgPSBDRlNUUigi
V2ViS2l0TG9jYWxDYWNoZSIpOworCiBzdGF0aWMgSE1PRFVMRSBhY2Nlc3NpYmlsaXR5TGliOwor
CiBzdGF0aWMgSGFzaFNldDxXZWJWaWV3Kj4mIHBlbmRpbmdEZWxldGVCYWNraW5nU3RvcmVTZXQo
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlZpZXcqPj4gcGVuZGlu
Z0RlbGV0ZUJhY2tpbmdTdG9yZVNldDsKICAgICByZXR1cm4gcGVuZGluZ0RlbGV0ZUJhY2tpbmdT
dG9yZVNldDsKIH0KIAotc3RhdGljIENGU3RyaW5nUmVmIFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0
c0tleSA9IENGU1RSKCJXZWJLaXRMb2NhbENhY2hlIik7Ci0KLXN0YXRpYyBTdHJpbmcgd2ViS2l0
VmVyc2lvblN0cmluZygpOwotCiBXZWJWaWV3KiBraXQoUGFnZSogcGFnZSkKIHsKICAgICBpZiAo
IXBhZ2UpCkBAIC0xNTU3LDEwICsxNTU4LDggQEAgYm9vbCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogU3RyaW5nIFdl
YlZpZXc6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcm
IGFwcGxpY2F0aW9uTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBvc1ZlcnNpb24sICh3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5nKCkpKTsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB3ZWJLaXRWZXJzaW9uLCAod2Vi
S2l0VmVyc2lvblN0cmluZygpKSk7Ci0KLSAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81
LjAgKCIsIG9zVmVyc2lvbiwgIikgQXBwbGVXZWJLaXQvIiwgd2ViS2l0VmVyc2lvbiwgIiAoS0hU
TUwsIGxpa2UgR2Vja28pIiwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBh
cHBsaWNhdGlvbk5hbWUpOworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHByZWZpeCA9IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCB3aW5kb3dzVmVyc2lvbkZvclVB
U3RyaW5nKCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb25TdHJpbmcoKSwgIiAoS0hU
TUwsIGxpa2UgR2Vja28pIik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LmdldCgpLCBh
cHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiAiICIsIGFwcGxpY2F0aW9uTmFtZSk7CiB9
CiAKIFBhZ2UqIFdlYlZpZXc6OnBhZ2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlODgwMWIyNDJmYzg3YmE3MWRjZTNiMmJmNWJjOTNlMTU5
YWFlZWYuLjc0OWQwNTIxZTNlM2FjMjgyNDZiNTZhMjE0OWUwZDhjYzZiMTQyZGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNy0wNy0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW9yZSBOZXZlckRlc3Ryb3llZCBhbmQgcmxlYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0phdmFTY3Jp
cHRUaHJlYWRpbmcuY3BwOgorICAgICAgICAoamF2YVNjcmlwdFRocmVhZHNNdXRleCk6CisgICAg
ICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisKIDIwMTctMDctMTkgIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIGxpbnQtdGVzdC1leHBlY3RhdGlvbnMgc2hv
dWxkIGJlIHJ1biBkdXJpbmcgc3R5bGUgY2hlY2tpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
SmF2YVNjcmlwdFRocmVhZGluZy5jcHAKaW5kZXggMmVhZmJiZWJmYjViYjk5ZGIxNmJlNGE2NDBm
ZjU0ZDMwNmYxODVmOS4uYjcwODJiYTAwZjQ5NjJhZTczNTMyYzdjMTNiMzgzNzhkMThiNjAzNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTQ3
LDE0ICs0NywxNCBAQCBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRocmVhZHNH
cm91cDsKIAogc3RhdGljIExvY2smIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBzdGF0aWNNdXRleCwgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBzdGF0aWNNdXRleDsKICAgICByZXR1cm4gc3Rh
dGljTXV0ZXg7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VGhyZWFkPj4gVGhyZWFkU2V0
Owogc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAgIERFUFJFQ0FU
RURfREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRUaHJlYWRz
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZFNldD4gc3RhdGljSmF2YVNj
cmlwdFRocmVhZHM7CiAgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9j
aygpKTsKICAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316197</attachid>
            <date>2017-07-22 10:06:47 -0700</date>
            <delta_ts>2017-07-22 10:42:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170722100647.patch</filename>
            <type>text/plain</type>
            <size>111376</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjNGVkOGRmYjI3Y2Ni
MjljZmY5YTc3N2Q1ZDRmNzgxNGI3MGYzNi4uYmJhYjczNjdkYzJmZDY5MjU3MzdjYzcyNzNjYWQ5
ZWUwNzA3OWVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxNy0wNy0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmxlYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOgorICAg
ICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6UXVhbGlmaWVkTmFtZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZTo6aGFzUHJlZml4KToKKyAgICAgICAgKiBodG1sL0F1dG9maWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZExvY2FsTmFtZVRvU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1l
bnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50
TmFtZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEJlRXhwb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6dXBkYXRlRXhwb3NlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2du
aXplZFRhZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRy
b2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
OjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9s
Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUGFkZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjp+VGhlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OlRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEhhc0luYWN0aXZlQXBwZWFyYW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbHNDYW5IYXZlSW5hY3RpdmVBcHBl
YXJhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sc0Nhbkhh
dmVIb3ZlcmVkQXBwZWFyYW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
Y29udHJvbERyYXdzQm9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpj
b250cm9sRHJhd3NCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojpjb250cm9sRHJhd3NGb2N1c091dGxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnNlbGVjdGlvbkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojp0ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnN5c3RlbUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpz
eXN0ZW1Gb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjYXJldEJsaW5r
SW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRoZW1lQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZUNvY29hOjpUaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
ZW1lQ29jb2E6On5UaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9UaGVtZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFk
c0dsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhP
dmVyZmxvdzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpleHRl
bmRUbyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoT3ZlcmZsb3c6OkdseXBoT3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlU3Rh
cnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VEdXJhdGlvbktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OnNpbmdsZXRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RS
ZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OlRoZW1lSU9TKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lSU9TOjp+VGhlbWVJT1MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6VGhl
bWVNYWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6On5UaGVtZU1hYyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjppbmZsYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJvbEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjpjb250cm9sQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9s
UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QpOgorICAgICAgICAoLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VO
ZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
VGhlbWVXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVXUEU6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93cGUvVGhlbWVXUEUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lV1BFOjpUaGVtZVdQ
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZVdQRTo6flRoZW1lV1BFKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisKIDIwMTctMDctMTQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJdCBzaG91bGQgYmUgZWFzeSB0byBk
ZWNpZGUgaG93IFdlYktpdCB5aWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBk
NThiYTI0YWZhYTAzODA4M2VlODc1ZTcxNThhMjc2Y2MzZjk3MzIyLi44ZjlmOTIwZmJkZmVkN2Vl
YzA5MzRlODRiNjk1YjY5M2RmYjQ5NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTctMDctMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95ZWQgYW5kIHJsZWF0ZWQgY2xlYW51cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBlcnNpc3RlbnRQbHVnaW5NZXRh
ZGF0YUNhY2hlUGF0aCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNj
aGVkdWxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChzaGFyZWRIaXN0b3J5U3RvcmFnZSk6Cisg
ICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAgKG1haW5CdW5kbGVM
b2NTdHJpbmdzKToKKyAgICAgICAgKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCk6CisgICAgICAg
IChmcmFtZXdvcmtMb2NTdHJpbmdzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisKIDIwMTct
MDctMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBt
b3JlIHJlZmVyZW5jZXMgaW4gZXZlbnQgZGlzcGF0Y2ggY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXgg
YzYwYjA1YTdmNTA5OWRlNWM2M2E3ODk1YjhkMzAyNDMzZTgzNzViZC4uZjcxMjBmYjZmYTVkMDU5
OWUyMjhhMzQyNTgwMGM5YWQzMjlkYWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1l
bnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiBSZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAoYXV0byBlbGVtZW50ID0g
dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRvY3VtZW50LCBuYW1lLmxvY2FsTmFtZSgpKSkg
ewotICAgICAgICBpZiAobmFtZS5wcmVmaXgoKSAhPSBudWxsQXRvbSgpKQorICAgICAgICBpZiAo
IW5hbWUucHJlZml4KCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBlbGVtZW50LT5zZXRQcmVmaXgo
bmFtZS5wcmVmaXgoKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4
IGZkYjJkOTY4Yzc3YWFhZGQ3NzMwNzY1MmU5Y2E2N2Q0ODZhODE1NzUuLjg3M2RiOWQ3YjM1NTZl
ZDBhNzZlZDIzN2M4ZTIwMGQ5OTFmNDA2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAKQEAgLTY4MywxNCArNjgzLDE4IEBAIHN0YXRpYyBib29sIHByZWZl
cnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0
aENvbnZlCiB7CiAgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBmYWxzZTsKIAot
ICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNz
aWJpbGl0eVZhbHVlKCkgPT0gU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T24p
CisgICAgc3dpdGNoIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
QWNjZXNzaWJpbGl0eVZhbHVlKCkpIHsKKyAgICBjYXNlIFNldHRpbmdzOjpGb3JjZWRBY2Nlc3Np
YmlsaXR5VmFsdWU6Ok9uOgogICAgICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSB0cnVl
OwotICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rp
b25BY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZh
bHVlOjpPZmYpCi0gICAgICAgIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOwotI2lm
IFBMQVRGT1JNKElPUykgfHwgVVNFKE5FV19USEVNRSkKLSAgICBlbHNlCi0gICAgICAgIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IHBsYXRmb3JtVGhlbWUoKS0+dXNlclByZWZlcnNSZWR1Y2Vk
TW90aW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldHRpbmdzOjpG
b3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RIRU1FKQorICAg
ICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBUaGVtZTo6c2luZ2xldG9uKCkudXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKCk7CiAjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDA4ZmEyYjY5NGNmMzRjOWNjODUyOTg0
NjNhMzM0OTZmNzdiNWU3ZWUuLjJmMzhjMTk4NDUxODBjYTE2ZTRkMTdmNDg0ZWQ0NDQzM2I5OTky
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw5ICsyMCw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ1LDcgQEAg
cHVibGljOgogCiAgICAgICAgIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3Q7CiAKLSAgICAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX2V4aXN0aW5nSGFzaDsKKyAgICAgICAgbXV0YWJsZSB1bnNp
Z25lZCBtX2V4aXN0aW5nSGFzaCB7IDAgfTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1f
cHJlZml4OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKQEAgLTU2LDEyICs1NCwxMSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBsb2NhbE5hbWVN
ZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUXVhbGlmaWVkTmFtZUltcGws
IG1fbG9jYWxOYW1lKTsgfQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG5hbWVzcGFjZU1lbW9y
eU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lSW1wbCwgbV9u
YW1lc3BhY2UpOyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyNlbmRpZgogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgs
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSSkKLSAgICAgICAgICAgIDogbV9leGlzdGluZ0hhc2goMCkKLSAgICAgICAgICAgICwg
bV9wcmVmaXgocHJlZml4KQorICAgICAgICAgICAgOiBtX3ByZWZpeChwcmVmaXgpCiAgICAgICAg
ICAgICAsIG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkKICAgICAgICAgICAgICwgbV9uYW1lc3BhY2Uo
bmFtZXNwYWNlVVJJKQogICAgICAgICB7CkBAIC04MSw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pbXBsID09IG90aGVyLm1faW1wbCB8fCAobG9jYWxOYW1lKCkgPT0gb3RoZXIubG9jYWxOYW1l
KCkgJiYgbmFtZXNwYWNlVVJJKCkgPT0gb3RoZXIubmFtZXNwYWNlVVJJKCkpOyB9CiAKLSAgICBi
b29sIGhhc1ByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXggIT0gbnVsbEF0
b20oKTsgfQorICAgIGJvb2wgaGFzUHJlZml4KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbC0+bV9w
cmVmaXguaXNOdWxsKCk7IH0KICAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCkgeyAqdGhpcyA9IFF1YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUoKSwgbmFt
ZXNwYWNlVVJJKCkpOyB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXg7IH0KQEAgLTk2LDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIFF1YWxpZmllZE5hbWVJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgp
OyB9CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IGltcGxNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUXVhbGlmaWVkTmFtZSwgbV9pbXBsKTsgfQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYKICAgICAKICAgICAvLyBJbml0IHJvdXRpbmUg
Zm9yIGdsb2JhbHMKICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwu
Y3BwCmluZGV4IDVhMWFhZDM0NmUyMzYzZGY0OTU2YWU2ZDdhNzQwOWNmZjAxYTdmNmMuLmUzMTM0
MTk4NDgwZWRiZmYxODk4Y2IxNjY5ZGJmYjJmNWJjMjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Zp
bGwuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3Jl
YXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0cik7CiAKICAgICAv
LyAxLiBJZiB0aGUgZWxlbWVudCBoYXMgbm8gYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSwgdGhlbiBq
dW1wIHRvIHRoZSBzdGVwIGxhYmVsZWQgZGVmYXVsdC4KLSAgICBpZiAoYXR0cmlidXRlVmFsdWUg
PT0gbnVsbEF0b20oKSkKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBkZWZhdWx0TGFiZWwoKTsKIAogICAgIC8vIDIuIExldCB0b2tlbnMgYmUgdGhlIHJl
c3VsdCBvZiBzcGxpdHRpbmcgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIG9uIHNwYWNlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBlMzA1YzQ4MjIzNmI1NGZmNTA4Njc4Y2Jk
MTE4MTkxYzFkNmQyMDc2Li5jYmRmZGQzZWZjYWFkYWY4ZmJmNDAwYjZjMjU0ODBhNDNhZWQzMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMTEsNjYgKzExMSw2IEBA
IFJlZjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogICAgIHJl
dHVybiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKLXN0YXRpYyB2b2lk
IGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZXQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHFOYW1lKQotewotICAgIHNldC0+YWRkKHFOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7Ci19Ci0KLXN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogY3JlYXRl
SHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQoKQotewotICAgIC8vIFRoaXMgaXMgdGhl
IGxpc3Qgb2YgYXR0cmlidXRlcyBpbiBIVE1MIDQuMDEgd2l0aCB2YWx1ZXMgbWFya2VkIGFzICJb
Q0ldIiBvciBjYXNlLWluc2Vuc2l0aXZlCi0gICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVy
IHZhbHVlcyBhcyBjYXNlLXNlbnNpdGl2ZSwgdGh1cyBzbyBkbyB3ZS4KLSAgICBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiogYXR0clNldCA9IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PjsKLQotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFjY2VwdF9jaGFyc2V0QXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYWNjZXB0QXR0cik7Ci0gICAgYWRkTG9j
YWxOYW1lVG9TZXQoYXR0clNldCwgYWxpZ25BdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBhbGlua0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGF4aXNB
dHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBiZ2NvbG9yQXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY2hhcnNldEF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIGNoZWNrZWRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBjbGVhckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNvZGV0eXBl
QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29sb3JBdHRyKTsKLSAgICBh
ZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBjb21wYWN0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1l
VG9TZXQoYXR0clNldCwgZGVjbGFyZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJT
ZXQsIGRlZmVyQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGlyQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGlzYWJsZWRBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBlbmN0eXBlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9T
ZXQoYXR0clNldCwgZmFjZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGZy
YW1lQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgaHJlZmxhbmdBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBodHRwX2VxdWl2QXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbGFuZ0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIGxhbmd1YWdlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
bGlua0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG1lZGlhQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbWV0aG9kQXR0cik7Ci0gICAgYWRkTG9jYWxO
YW1lVG9TZXQoYXR0clNldCwgbXVsdGlwbGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBub2hyZWZBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBub3Jl
c2l6ZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vc2hhZGVBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBub3dyYXBBdHRyKTsKLSAgICBhZGRMb2Nh
bE5hbWVUb1NldChhdHRyU2V0LCByZWFkb25seUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIHJlbEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHJldkF0
dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHJ1bGVzQXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2NvcGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCBzY3JvbGxpbmdBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0
LCBzZWxlY3RlZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNoYXBlQXR0
cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdGFyZ2V0QXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdGV4dEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIHR5cGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2YWxp
Z25BdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2YWx1ZXR5cGVBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2bGlua0F0dHIpOwotCi0gICAgcmV0dXJu
IGF0dHJTZXQ7Ci19Ci0KIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0KIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewpA
QCAtMjM1LDkgKzE3NSw2NCBAQCB2b2lkIEhUTUxEb2N1bWVudDo6cmVtb3ZlV2luZG93TmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmCiAKIGJvb2wgSFRNTERv
Y3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGh0
bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0ID0gY3JlYXRlSHRtbENhc2VJbnNlbnNpdGl2
ZUF0dHJpYnV0ZXNTZXQoKTsKLSAgICBib29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1
dGVOYW1lLmhhc1ByZWZpeCgpICYmIChhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpID09IG51
bGxBdG9tKCkpOwotICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFodG1sQ2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KS5pbXBsKCkpOworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxp
c3Qgb2YgYXR0cmlidXRlcyBpbiBIVE1MIDQuMDEgd2l0aCB2YWx1ZXMgbWFya2VkIGFzICJbQ0ld
IiBvciBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgIC8vIE1vemlsbGEgdHJlYXRzIGFsbCBvdGhl
ciB2YWx1ZXMgYXMgY2FzZS1zZW5zaXRpdmUsIHRodXMgc28gZG8gd2UuCisgICAgICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBuYW1lc1tdID0geworICAgICAgICAgICAgJmFj
Y2VwdF9jaGFyc2V0QXR0ciwKKyAgICAgICAgICAgICZhY2NlcHRBdHRyLAorICAgICAgICAgICAg
JmFsaWduQXR0ciwKKyAgICAgICAgICAgICZhbGlua0F0dHIsCisgICAgICAgICAgICAmYXhpc0F0
dHIsCisgICAgICAgICAgICAmYmdjb2xvckF0dHIsCisgICAgICAgICAgICAmY2hhcnNldEF0dHIs
CisgICAgICAgICAgICAmY2hlY2tlZEF0dHIsCisgICAgICAgICAgICAmY2xlYXJBdHRyLAorICAg
ICAgICAgICAgJmNvZGV0eXBlQXR0ciwKKyAgICAgICAgICAgICZjb2xvckF0dHIsCisgICAgICAg
ICAgICAmY29tcGFjdEF0dHIsCisgICAgICAgICAgICAmZGVjbGFyZUF0dHIsCisgICAgICAgICAg
ICAmZGVmZXJBdHRyLAorICAgICAgICAgICAgJmRpckF0dHIsCisgICAgICAgICAgICAmZGlzYWJs
ZWRBdHRyLAorICAgICAgICAgICAgJmVuY3R5cGVBdHRyLAorICAgICAgICAgICAgJmZhY2VBdHRy
LAorICAgICAgICAgICAgJmZyYW1lQXR0ciwKKyAgICAgICAgICAgICZocmVmbGFuZ0F0dHIsCisg
ICAgICAgICAgICAmaHR0cF9lcXVpdkF0dHIsCisgICAgICAgICAgICAmbGFuZ0F0dHIsCisgICAg
ICAgICAgICAmbGFuZ3VhZ2VBdHRyLAorICAgICAgICAgICAgJmxpbmtBdHRyLAorICAgICAgICAg
ICAgJm1lZGlhQXR0ciwKKyAgICAgICAgICAgICZtZXRob2RBdHRyLAorICAgICAgICAgICAgJm11
bHRpcGxlQXR0ciwKKyAgICAgICAgICAgICZub2hyZWZBdHRyLAorICAgICAgICAgICAgJm5vcmVz
aXplQXR0ciwKKyAgICAgICAgICAgICZub3NoYWRlQXR0ciwKKyAgICAgICAgICAgICZub3dyYXBB
dHRyLAorICAgICAgICAgICAgJnJlYWRvbmx5QXR0ciwKKyAgICAgICAgICAgICZyZWxBdHRyLAor
ICAgICAgICAgICAgJnJldkF0dHIsCisgICAgICAgICAgICAmcnVsZXNBdHRyLAorICAgICAgICAg
ICAgJnNjb3BlQXR0ciwKKyAgICAgICAgICAgICZzY3JvbGxpbmdBdHRyLAorICAgICAgICAgICAg
JnNlbGVjdGVkQXR0ciwKKyAgICAgICAgICAgICZzaGFwZUF0dHIsCisgICAgICAgICAgICAmdGFy
Z2V0QXR0ciwKKyAgICAgICAgICAgICZ0ZXh0QXR0ciwKKyAgICAgICAgICAgICZ0eXBlQXR0ciwK
KyAgICAgICAgICAgICZ2YWxpZ25BdHRyLAorICAgICAgICAgICAgJnZhbHVldHlwZUF0dHIsCisg
ICAgICAgICAgICAmdmxpbmtBdHRyLAorICAgICAgICB9OworICAgICAgICBIYXNoU2V0PEF0b21p
Y1N0cmluZz4gc2V0OworICAgICAgICBmb3IgKGF1dG8qIG5hbWUgOiBuYW1lcykKKyAgICAgICAg
ICAgIHNldC5hZGQobmFtZS0+bG9jYWxOYW1lKCkpOworICAgICAgICByZXR1cm4gc2V0OworICAg
IH0oKSk7CisKKyAgICBib29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1dGVOYW1lLmhh
c1ByZWZpeCgpICYmIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCk7CisgICAg
cmV0dXJuICFpc1Bvc3NpYmxlSFRNTEF0dHIgfHwgIWNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVNl
dC5nZXQoKS5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAogYm9vbCBI
VE1MRG9jdW1lbnQ6OmlzRnJhbWVTZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCBlZTQzZGQyNDUxYjAzMjBm
ZDU3OTc4YzQ4NTYxYWEwZDI0N2I3MGIyLi5iN2I3ZTA1MjRmZWMxNjYyMGQyYTBlODc5NDFiNjg0
NjBjZWM1MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBhdXRvIGNh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAK
ICAgICBib29sIG93bmVySXNGb3JtRWxlbWVudCA9IGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJO
b2RlKCkpOwotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50
czsKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gZm91bmRJbnB1dEVsZW1lbnRzOwogCiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50UHRyIDogZm9ybUNvbnRyb2xFbGVtZW50cygpKSB7CiAgICAgICAg
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgYXNzb2NpYXRlZEVsZW1lbnQgPSAqZWxlbWVudFB0cjsK
QEAgLTEyOCwxMyArMTI4LDEzIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICAgICAgICAgIGlmICghaWQuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShpZCwgZWxlbWVu
dCk7CiAgICAgICAgICAgICAgICAgaWYgKG93bmVySXNGb3JtRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChpZC5pbXBsKCkpOworICAgICAgICAgICAg
ICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpOwogICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiBpZCAhPSBuYW1lKSB7CiAg
ICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvTmFtZUNhY2hlKG5hbWUsIGVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChvd25lcklzRm9ybUVsZW1lbnQpCi0gICAgICAgICAgICAgICAg
ICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
ICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTQyLDEwICsxNDIsMTAgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgICAgICBmb3IgKGF1
dG8qIGVsZW1lbnRQdHIgOiBmb3JtSW1hZ2VFbGVtZW50cygpKSB7CiAgICAgICAgICAgICBIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50ID0gKmVsZW1lbnRQdHI7CiAgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICAgICAg
aWYgKCFpZC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZC5pbXBs
KCkpKQorICAgICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50
cy5jb250YWlucyhpZCkpCiAgICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShp
ZCwgZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBlbGVt
ZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkg
JiYgaWQgIT0gbmFtZSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWUuaW1wbCgp
KSkKKyAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFtZSAmJiAhZm91
bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWUpKQogICAgICAgICAgICAgICAgIGNhY2hlLT5h
cHBlbmRUb05hbWVDYWNoZShuYW1lLCBlbGVtZW50KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCA2ZTIwM2FlZmI0NThj
Mjk0M2ExOGU5OTY1MDFkMTgwNTU0ZmZiNDdlLi5kMTBjMzdmYjIyODgxYzEzYzMwZjA3YzdiOTM0
ZjkzMjc1NDZmMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
Y3BwCkBAIC00MSw0NSArNDEsNDkgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogYm9v
bCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpczxIVE1MSW1hZ2VFbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxB
cHBsZXRFbGVtZW50PihlbGVtZW50KQotICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVtZW50Pihl
bGVtZW50KSB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CisgICAgcmV0dXJuIGlz
PEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpCisg
ICAgICAgIHx8IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KTsKIH0KIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCogbmFtZSkKIHsKLSAgICAvLyBGaW5kIG9ubHkgaW1hZ2VzLCBmb3JtcywgYXBwbGV0
cywgZW1iZWRzIGFuZCBvYmplY3RzIGJ5IG5hbWUsIGJ1dCBhbnl0aGluZyBieSBpZAotICAgIGlm
IChlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQu
Z2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOworICAg
IC8vIEZpbmQgb25seSBpbWFnZXMsIGZvcm1zLCBhcHBsZXRzLCBlbWJlZHMgYW5kIG9iamVjdHMg
YnkgbmFtZSwgYnV0IGFueXRoaW5nIGJ5IGlkLgorICAgIHJldHVybiAoZWxlbWVudE1hdGNoZXNJ
Zk5hbWVBdHRyaWJ1dGVNYXRjaChlbGVtZW50KSAmJiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gbmFtZSkKKyAgICAgICAgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09
IG5hbWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlz
PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkuaXNFeHBvc2VkKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1
cGRhdGUgdGhlIGhhc2ggbWFwIGZvciB1cyB3aGVuIG5hbWUgYXR0cmlidXRlIGhhcyBiZWVuIHJl
bW92ZWQuCi0gICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8
SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50
PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpKQorICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGZp
eCBIVE1MSW1hZ2VFbGVtZW50IHRvIHVwZGF0ZSB0aGUgaGFzaCBtYXAgZm9yIHVzIHdoZW4gdGhl
IG5hbWUgYXR0cmlidXRlIGlzIHJlbW92ZWQuCisgICAgcmV0dXJuIGlzT2JqZWN0RWxlbWVudEZv
ckRvY3VtZW50TmFtZUNvbGxlY3Rpb24oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEFwcGxl
dEVsZW1lbnQ+KGVsZW1lbnQpCiAgICAgICAgIHx8IChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVt
ZW50KSAmJiBlbGVtZW50Lmhhc05hbWUoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVj
dGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBl
bGVtZW50KQogewotICAgIHJldHVybiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVt
ZW50KQotICAgICAgICB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkKKyAgICByZXR1cm4gaXNPYmplY3RFbGVtZW50Rm9y
RG9jdW1lbnROYW1lQ29sbGVjdGlvbihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MQXBwbGV0
RWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVu
dCkKKyAgICAgICAgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBp
czxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkKICAgICAgICAgfHwgaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVu
dE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCog
bmFtZSkKIHsKICAgICAvLyBGaW5kIGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcywgb2Jq
ZWN0cyBhbmQgaWZyYW1lcyBieSBuYW1lLCBhcHBsZXRzIGFuZCBvYmplY3QgYnkgaWQsIGFuZCBp
bWFnZXMgYnkgaWQKLSAgICAvLyBidXQgb25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0
ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVsZSBtYXRjaGVzIElFKQotICAgIGlmIChpczxIVE1MRm9y
bUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0
TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChpczxIVE1MQXBwbGV0RWxl
bWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5h
bWU7Ci0gICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0
dXJuIChlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50
LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RF
bGVtZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpOwotICAgIGlmIChpczxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpLmltcGwoKSA9PSBuYW1lIHx8IChlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBi
dXQgb25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2Ug
cnVsZSBtYXRjaGVzIElFKS4KKyAgICByZXR1cm4gKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUpCisgICAgICAgIHx8IChlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChlbGVt
ZW50KSAmJiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQzYWJjMDJl
ZDc5NDIwYmMwNjdjNWMwOWNhZGQyZTQ2Y2VhYjkzZmIuLmNmMjA2N2RjZDgyMGMzMmUwMWU0MTRl
ZWYyYWMzMmYyNWQyYWEyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC02Myw4ICs2Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxp
bmUgSFRNTE9iamVjdEVsZW1lbnQ6OkhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dChmb3JtKQotICAgICwgbV9kb2NOYW1lZEl0ZW0odHJ1ZSkKLSAgICAsIG1fdXNlRmFsbGJhY2tD
b250ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9iamVjdFRhZykpOwogfQpA
QCAtMzM3LDggKzMzNSw4IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICB1cGRhdGVE
b2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiAhdXNlRmFsbGJhY2tDb250
ZW50KCkpIHsKKyAgICB1cGRhdGVFeHBvc2VkU3RhdGUoKTsKKyAgICBpZiAoaXNDb25uZWN0ZWQo
KSAmJiAhbV91c2VGYWxsYmFja0NvbnRlbnQpIHsKICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRh
dGUodHJ1ZSk7CiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICB9CkBA
IC0zNTcsNyArMzU1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT2JqZWN0RWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJG
YWxsYmFja0NvbnRlbnQoKQogewotICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKKyAgICBp
ZiAobV91c2VGYWxsYmFja0NvbnRlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAo
IWlzQ29ubmVjdGVkKCkpCkBAIC0zODUsNzMgKzM4Myw4MSBAQCB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50OjpyZW5kZXJGYWxsYmFja0NvbnRlbnQoKQogICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOwogfQogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCwgYWxsIGNh
bGxlcnMgYXJlIGFsbW9zdCBjZXJ0YWlubHkgd3JvbmcuCi1zdGF0aWMgYm9vbCBpc1JlY29nbml6
ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCitzdGF0aWMgaW5saW5lIGJv
b2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgRWxlbWVudCYgY2hpbGQp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gdGFnTGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7Ci0gICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1hcDsKKyAgICBzdGF0aWMg
Y29uc3QgYXV0byBtb3N0S25vd25UYWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAg
ICAgSGFzaFNldDxRdWFsaWZpZWROYW1lPiBzZXQ7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1M
TmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRN
TE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKLSAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9
PSBiZ3NvdW5kVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gY29tbWFuZFRhZwot
ICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGRldGFpbHNUYWcKLSAgICAgICAgICAgICAg
ICB8fCAqdGFnc1tpXSA9PSBmaWdjYXB0aW9uVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3Nb
aV0gPT0gZmlndXJlVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gc3VtbWFyeVRh
ZwotICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IHRyYWNrVGFnKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRXZlbiB0aG91Z2ggd2UgaGF2ZSBhdG9tcyBmb3IgdGhlc2UgdGFncywgd2UgZG9u
J3Qgd2FudCB0bwotICAgICAgICAgICAgICAgIC8vIHRyZWF0IHRoZW0gYXMgInJlY29nbml6ZWQg
dGFncyIgZm9yIHRoZSBwdXJwb3NlIG9mIHBhcnNpbmcKLSAgICAgICAgICAgICAgICAvLyBiZWNh
dXNlIHRoYXQgY2hhbmdlcyBob3cgd2UgcGFyc2UgZG9jdW1lbnRzLgorICAgICAgICAgICAgYXV0
byYgdGFnID0gKnRhZ3NbaV07CisgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYXJhbSBlbGVtZW50
IHdhcyBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHJ1bGUK
KyAgICAgICAgICAgIC8vIHdlIHdlcmUgdHJ5aW5nIHRvIGltcGxlbWVudCwgYnV0IHRoZXNlIGFy
ZSBvdGhlciBrbm93biBIVE1MIGVsZW1lbnRzIHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGhhdmUg
ZGVjaWRlZCwgb3ZlciB0aGUgeWVhcnMsIHRvIHRyZWF0IGFzIGNoaWxkcmVuIHRoYXQgZG8gbm90
IHByZXZlbnQgb2JqZWN0CisgICAgICAgICAgICAvLyBuYW1lcyBmcm9tIGJlaW5nIGV4cG9zZWQu
CisgICAgICAgICAgICBpZiAodGFnID09IGJnc291bmRUYWcKKyAgICAgICAgICAgICAgICB8fCB0
YWcgPT0gY29tbWFuZFRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBkZXRhaWxzVGFnCisg
ICAgICAgICAgICAgICAgfHwgdGFnID09IGZpZ2NhcHRpb25UYWcKKyAgICAgICAgICAgICAgICB8
fCB0YWcgPT0gZmlndXJlVGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IHBhcmFtVGFnCisg
ICAgICAgICAgICAgICAgfHwgdGFnID09IHN1bW1hcnlUYWcKKyAgICAgICAgICAgICAgICB8fCB0
YWcgPT0gdHJhY2tUYWcpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBtYXAuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAg
ICAgICAgICBzZXQuYWRkKHRhZyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1hcDsKKyAg
ICAgICAgcmV0dXJuIHNldDsKICAgICB9KCkpOwotICAgIHJldHVybiB0YWdMaXN0LmdldCgpLmNv
bnRhaW5zKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gbW9zdEtub3du
VGFncy5nZXQoKS5jb250YWlucyhjaGlsZC50YWdRTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6dXBkYXRlRG9jTmFtZWRJdGVtKCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwcmV2
ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBOb2RlJiBjaGlsZCkKIHsKLSAgICAv
LyBUaGUgcnVsZSBpcyAiPG9iamVjdD4gZWxlbWVudHMgd2l0aCBubyBjaGlsZHJlbiBvdGhlciB0
aGFuCi0gICAgLy8gPHBhcmFtPiBlbGVtZW50cywgdW5rbm93biBlbGVtZW50cyBhbmQgd2hpdGVz
cGFjZSBjYW4gYmUKLSAgICAvLyBmb3VuZCBieSBuYW1lIGluIGEgZG9jdW1lbnQsIGFuZCBvdGhl
ciA8b2JqZWN0PiBlbGVtZW50cyBjYW5ub3QuIgotICAgIGJvb2wgd2FzTmFtZWRJdGVtID0gbV9k
b2NOYW1lZEl0ZW07Ci0gICAgYm9vbCBpc05hbWVkSXRlbSA9IHRydWU7Ci0gICAgTm9kZSogY2hp
bGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKGNoaWxkICYmIGlzTmFtZWRJdGVtKSB7Ci0g
ICAgICAgIGlmIChpczxFbGVtZW50PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICBFbGVtZW50JiBl
bGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKmNoaWxkKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBVc2Ugb2YgaXNSZWNvZ25pemVkVGFnTmFtZSBpcyBhbG1vc3QgY2VydGFpbmx5IHdyb25nIGhl
cmUuCi0gICAgICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnTmFtZShlbGVtZW50LnRhZ1FOYW1l
KCkpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUocGFyYW1UYWcpKQotICAgICAgICAgICAgICAgIGlz
TmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8VGV4dD4oKmNoaWxkKSkg
ewotICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSkKLSAgICAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGlzTmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkKSkKKyAg
ICAgICAgcmV0dXJuIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGRvd25jYXN0PEVs
ZW1lbnQ+KGNoaWxkKSk7CisgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAgcmV0dXJu
ICFkb3duY2FzdDxUZXh0PihjaGlsZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQmVFeHBvc2VkKGNvbnN0
IEhUTUxPYmplY3RFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSByZWRvbmUgdG8gdXNlIHRoZSBjb25jZXB0IG9mIGFuIGV4cG9zZWQgb2JqZWN0IGVsZW1l
bnQsCisgICAgLy8gYXMgZG9jdW1lbnRlZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNlY3Rp
b24gZGVzY3JpYmluZyBET00gdHJlZSBhY2Nlc3NvcnMuCisKKyAgICAvLyBUaGUgcnVsZSB3ZSB0
cnkgdG8gaW1wbGVtZW50IGhlcmUsIGZyb20gb2xkZXIgSFRNTCBzcGVjaWZpY2F0aW9ucywgaXMg
Im9iamVjdCBlbGVtZW50cworICAgIC8vIHdpdGggbm8gY2hpbGRyZW4gb3RoZXIgdGhhbiBwYXJh
bSBlbGVtZW50cywgdW5rbm93biBlbGVtZW50cyBhbmQgd2hpdGVzcGFjZSBjYW4gYmUgZm91bmQK
KyAgICAvLyBieSBuYW1lIGluIGEgZG9jdW1lbnQsIGFuZCBvdGhlciBvYmplY3QgZWxlbWVudHMg
Y2Fubm90Ii4KKworICAgIGZvciAoYXV0byogY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHByZXZl
bnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKCpjaGlsZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIGlmIChpc05hbWVkSXRlbSAhPSB3YXNOYW1lZEl0ZW0gJiYgaXND
b25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3Vt
ZW50KCkpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1M
RG9jdW1lbnQ+KHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVFeHBvc2VkU3RhdGUoKQoreworICAgIGJvb2wgd2Fz
RXhwb3NlZCA9IHN0ZDo6ZXhjaGFuZ2UobV9pc0V4cG9zZWQsIHNob3VsZEJlRXhwb3NlZCgqdGhp
cykpOworCisgICAgaWYgKG1faXNFeHBvc2VkICE9IHdhc0V4cG9zZWQgJiYgaXNDb25uZWN0ZWQo
KSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5k
b2N1bWVudCgpKTsKIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRy
aWJ1dGUoKTsKKyAgICAgICAgYXV0byYgaWQgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgICAgICBp
ZiAoIWlkLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGlzTmFtZWRJdGVtKQorICAgICAg
ICAgICAgaWYgKG1faXNFeHBvc2VkKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZERvY3Vt
ZW50TmFtZWRJdGVtKCppZC5pbXBsKCksICp0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqaWQuaW1wbCgpLCAq
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBn
ZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgIGF1dG8mIG5hbWUgPSBnZXROYW1lQXR0cmlidXRl
KCk7CiAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFtZSkgewotICAgICAg
ICAgICAgaWYgKGlzTmFtZWRJdGVtKQorICAgICAgICAgICAgaWYgKG1faXNFeHBvc2VkKQogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmFkZERvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSwg
KnRoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92
ZURvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICB9CiAgICAg
fQotICAgIG1fZG9jTmFtZWRJdGVtID0gaXNOYW1lZEl0ZW07CiB9CiAKIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OmNvbnRhaW5zSmF2YUFwcGxldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmgKaW5kZXggNmNkMTQwNTQ3NTNlZWYwNzRiMDFmMmU0Zjk0MjI3NzI5
YWRhM2FmZC4uZWMwODkyN2JlNjZmZWUzNDgwNzU0ZDNjZjg2OWIwYzFhODIzODI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MT2JqZWN0RWxlbWVudCgpOwogCi0gICAgYm9vbCBpc0Rv
Y05hbWVkSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jTmFtZWRJdGVtOyB9CisgICAgYm9vbCBp
c0V4cG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXhwb3NlZDsgfQogICAgIGJvb2wgY29udGFp
bnNKYXZhQXBwbGV0KCkgY29uc3Q7CiAKICAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNv
bnN0OwpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
dXBkYXRlV2lkZ2V0KENyZWF0ZVBsdWdpbnMpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRG9jTmFt
ZWRJdGVtKCk7CisgICAgdm9pZCB1cGRhdGVFeHBvc2VkU3RhdGUoKTsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQog
ICAgIC8vIHNvIHRoYXQgd2UgY2FuIGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVjdD4g
YW5kIDxlbWJlZD4uCkBAIC0xMDMsOCArMTAzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2Fu
Q29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgbV9kb2NOYW1l
ZEl0ZW0gOiAxOwotICAgIGJvb2wgbV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOworICAgIGJvb2wg
bV9pc0V4cG9zZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZUZhbGxiYWNrQ29udGVudCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5jcHAKaW5kZXggMTkzNGIzNTY1MzI1MWUzODNmNDg4NTljMTE3MjA3ZTYyY2Y4OTRkYi4uN2U0
ZDM3M2Q1NGNkMWQ1NjM0NzgzZjMxMmM5MGY5MmRkMjE2N2RiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNywzMyArMjcsNzMgQEAKICNpbmNsdWRlICJUaGVtZS5oIgogCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisjaW5jbHVkZSAi
TGVuZ3RoU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2ludCBUaGVtZTo6YmFzZWxp
bmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRy
b2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAorewor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK0xlbmd0aFNpemUgVGhlbWU6OmNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2F0KSBjb25zdAoreworICAgIHJldHVybiB6b29tZWRTaXplOworfQorCitM
ZW5ndGhTaXplIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKK30KKworYm9vbCBUaGVtZTo6Y29udHJvbFJlcXVpcmVzUHJlV2hpdGVT
cGFjZShDb250cm9sUGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
VGhlbWU6OnBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwgZmxvYXQpCit7
Cit9CisKK3ZvaWQgVGhlbWU6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBj
b25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQpIGNvbnN0Cit7Cit9CisKK2Jv
b2wgVGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBMZW5ndGhCb3ggVGhlbWU6OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQg
cGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxv
YXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRv
blBhcnQ6Ci0gICAgICAgIGNhc2UgTWVudWxpc3RQYXJ0OgotICAgICAgICBjYXNlIFNlYXJjaEZp
ZWxkUGFydDoKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgIGNhc2UgUmFkaW9Q
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiB6b29tZWRCb3g7CisgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoK
KyAgICBjYXNlIE1lbnVsaXN0UGFydDoKKyAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKKyAgICBj
YXNlIENoZWNrYm94UGFydDoKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIExl
bmd0aEJveCgwKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94OwogICAg
IH0KIH0KIAogTGVuZ3RoQm94IFRoZW1lOjpjb250cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCkg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6
Ci0gICAgICAgIGNhc2UgTWVudWxpc3RCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIENoZWNrYm94
UGFydDoKLSAgICAgICAgY2FzZSBSYWRpb1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3Ro
Qm94KDApOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHpvb21lZEJveDsK
KyAgICBjYXNlIE1lbnVsaXN0UGFydDoKKyAgICBjYXNlIE1lbnVsaXN0QnV0dG9uUGFydDoKKyAg
ICBjYXNlIENoZWNrYm94UGFydDoKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJu
IExlbmd0aEJveCgwKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94Owog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKaW5kZXggOTQwMjlkNzcxMmYyNTExYWJk
YTg5MTNiOTY5MjlmMTBiMDc3YWZiZi4uNThkODA5OGMzZTNmMDI3YzgxYTFhYjA2NjZiNmEyN2Uw
YjY2ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwNSArMjMsNjkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhlbWVfaAotI2RlZmluZSBUaGVtZV9oCisjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5o
IgotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94LmgiCi0jaW5j
bHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRyb2xTdGF0ZXM7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBG
b250Q2FzY2FkZTsKK2NsYXNzIEZvbnRDYXNjYWRlRGVzY3JpcHRpb247CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CitjbGFzcyBMZW5ndGhCb3g7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi0vLyBVbmxp
a2Ugb3RoZXIgcGxhdGZvcm0gY2xhc3NlcywgVGhlbWUgZG9lcyBleHRlbnNpdmVseSB1c2Ugdmly
dHVhbCBmdW5jdGlvbnMuICBUaGlzIGRlc2lnbiBhbGxvd3MgYSBwbGF0Zm9ybSB0byBzd2l0Y2gg
YmV0d2VlbiBtdWx0aXBsZSB0aGVtZXMgYXQgcnVudGltZS4KK3N0cnVjdCBMZW5ndGhTaXplOwor
CiBjbGFzcyBUaGVtZSB7CiBwdWJsaWM6Ci0gICAgVGhlbWUoKSB7IH0KLSAgICB2aXJ0dWFsIH5U
aGVtZSgpIHsgfQorICAgIHN0YXRpYyBUaGVtZSYgc2luZ2xldG9uKCk7CiAKLSAgICAvLyBBIG1l
dGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGFkanVzdG1lbnQgZm9yIGEgImxl
YWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKKyAgICAv
LyBBIGZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gYWRqdXN0bWVudCBm
b3IgYSAibGVhZiIgY29udHJvbC4gVGhpcyB3aWxsIGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAg
IC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250
ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgotICAgIC8v
IGNvbnRyb2xzIHRoYXQgbmVlZCB0byBkbyB0aGlzLiAgVGhlIGFkanVzdG1lbnQgaXMgYW4gb2Zm
c2V0IHRoYXQgYWRkcyB0byB0aGUgYmFzZWxpbmUsIGUuZy4sIG1hcmdpblRvcCgpICsgaGVpZ2h0
KCkgKyB8b2Zmc2V0fC4KKyAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4gVGhl
IGFkanVzdG1lbnQgaXMgYW4gb2Zmc2V0IHRoYXQgYWRkcyB0byB0aGUgYmFzZWxpbmUsIGUuZy4s
IG1hcmdpblRvcCgpICsgaGVpZ2h0KCkgKyB8b2Zmc2V0fC4KICAgICAvLyBUaGUgb2Zmc2V0IGlz
IG5vdCB6b29tZWQuCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQo
Q29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCBiYXNlbGlu
ZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3Q7CiAKLSAgICAvLyBBIG1ldGhv
ZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgYXBwZWFyYW5jZSB3aGVuIHRoZSB3
aW5kb3cgaXMgaW5hY3RpdmUuCi0gICAgdmlydHVhbCBib29sIGNvbnRyb2xIYXNJbmFjdGl2ZUFw
cGVhcmFuY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAg
Ly8gR2VuZXJhbCBtZXRob2RzIGZvciB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIGNvbnRyb2xz
IGluIHRoZSB0aGVtZSBjaGFuZ2UgYXBwZWFyYW5jZSB3aGVuIHRoZSB3aW5kb3cgaXMgaW5hY3Rp
dmUgb3IKLSAgICAvLyB3aGVuIGhvdmVyZWQgb3Zlci4KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJv
bHNDYW5IYXZlSW5hY3RpdmVBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY29udHJvbHNDYW5IYXZlSG92ZXJlZEFwcGVhcmFuY2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gVXNlZCBieSBSZW5kZXJUaGVtZTo6aXNDb250cm9s
U3R5bGVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIG5hdGl2ZSBsb29rIGFuZCBmZWVsIHNob3VsZCBi
ZSB0dXJuZWQgb2ZmLgotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sRHJhd3NCb3JkZXIoQ29udHJv
bFBhcnQpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERy
YXdzQmFja2dyb3VuZChDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBjb250cm9sRHJhd3NGb2N1c091dGxpbmUoQ29udHJvbFBhcnQpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLQotICAgIC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyBwbGF0Zm9ybS1z
cGVjaWZpYyBjb2xvcnMuCi0gICAgdmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9s
UGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKCk7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICAKLSAgICAvLyBDU1Mgc3lzdGVtIGNvbG9y
cyBhbmQgZm9udHMKLSAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKFRoZW1lQ29sb3IpIGNv
bnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlIHN5c3RlbUZv
bnQoVGhlbWVGb250LCBGb250RGVzY3JpcHRpb24mKSBjb25zdCB7IHJldHVybiBGb250Q2FzY2Fk
ZSgpOyB9Ci0gICAgCi0gICAgLy8gSG93IGZhc3QgdGhlIGNhcmV0IGJsaW5rcyBpbiB0ZXh0IGZp
ZWxkcy4KLSAgICB2aXJ0dWFsIFNlY29uZHMgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyBy
ZXR1cm4gNTAwX21zOyB9Ci0KLSAgICAvLyBOb3RpZmljYXRpb24gd2hlbiB0aGUgdGhlbWUgaGFz
IGNoYW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCkgeyB9Ci0KLSAgICAvLyBN
ZXRob2RzIHVzZWQgdG8gYWRqdXN0IHRoZSBSZW5kZXJTdHlsZXMgb2YgY29udHJvbHMuCi0gICAg
CiAgICAgLy8gVGhlIGZvbnQgZGVzY3JpcHRpb24gcmVzdWx0IHNob3VsZCBoYXZlIGEgem9vbWVk
IGZvbnQgc2l6ZS4KLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlw
dGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQg
Lyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIAorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9u
dChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKKwogICAgIC8vIFRoZSBzaXplIGhlcmUgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzIGFscmVh
ZHkuIElmIGEgbmV3IHNpemUgaXMgcmV0dXJuZWQsIGl0IGFsc28gbmVlZHMgdG8gYmUgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250
cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXpl
LCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gem9vbWVkU2l6ZTsgfQotICAg
IAotICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpvb21l
ZCBjb29yZGluYXRlcy4gIAotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNp
emUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29tRmFjdG9yKi8p
IGNvbnN0IHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQorICAgIHZp
cnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpv
b21lZCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0OwogICAgIAogICAgIC8vIEFsbG93cyB0aGUgdGhlbWUgdG8gbW9kaWZ5IHRoZSBleGlzdGlu
ZyBwYWRkaW5nL2JvcmRlci4KICAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJv
eCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJv
bEJvcmRlcihDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gm
IHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7Ci0gICAgCisKICAgICAvLyBXaGV0
aGVyIG9yIG5vdCB3aGl0ZXNwYWNlOiBwcmUgc2hvdWxkIGJlIGZvcmNlZCBvbiBhbHdheXMuCi0g
ICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJl
c1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0OwogCiAgICAgLy8gTWV0aG9kIGZvciBw
YWludGluZyBhIGNvbnRyb2wuIFRoZSByZWN0IGlzIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21G
YWN0b3IqLywgU2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQg
LypwYWdlU2NhbGVGYWN0b3IqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcik7CiAKICAgICAvLyBTb21lIGNvbnRyb2xz
IG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFu
IE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRo
ZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVu
Z2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgogICAgIC8v
IFRoZSByZWN0IHBhc3NlZCBpbiBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMsIHNvIHRoZSBpbmZs
YXRpb24gc2hvdWxkIHRha2UgdGhhdCBpbnRvIGFjY291bnQgYW5kIG1ha2Ugc3VyZSB0aGUgaW5m
bGF0aW9uCiAgICAgLy8gYW1vdW50IGlzIGFsc28gc2NhbGVkIGJ5IHRoZSB6b29tRmFjdG9yLgot
ICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9v
bUZhY3RvciovKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdO
YW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbigpIGNvbnN0OwogCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Us
IGZyb20gUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNo
IHBsYXRmb3JtIGFkanVzdAotICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNz
cy4KLSAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRTdHlsZVNoZWV0KCk7Citwcm90ZWN0ZWQ6Cisg
ICAgVGhlbWUoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+VGhlbWUoKSB7IH0KIAogcHJpdmF0
ZToKLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlU2VsZWN0aW9uQ29sb3I7Ci0gICAgbXV0YWJs
ZSBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CisgICAgVGhlbWUoY29uc3QgVGhlbWUm
KSA9IGRlbGV0ZTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBUaGVtZSYpID0gZGVsZXRlOwog
fTsKIAotLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSB0aGVtZS4gIFRoaXMgaXMgaW1wbGVtZW50
ZWQgaW4gdGhlIHBsYXRmb3JtLXNwZWNpZmljIHN1YmNsYXNzZXMuCi1UaGVtZSogcGxhdGZvcm1U
aGVtZSgpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKaW5kZXggZGM1MTg0NzBk
NmNiNTZhYjc1NDYxMTIxZTBiZTNhNGRiNzI3N2FkNC4uZWI1OThlMzQ0MTk1Y2MwYTA1NjEzNDQ0
NGQyNDdhYjI5Yjg3MDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EuaApAQCAtMjMsMjEgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgVGhlbWVDb2NvYV9oCi0jZGVmaW5lIFRoZW1lQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJUaGVtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRoZW1lQ29j
b2EgOiBwdWJsaWMgVGhlbWUgewotcHVibGljOgotICAgIFRoZW1lQ29jb2EoKSB7IH0KLSAgICB2
aXJ0dWFsIH5UaGVtZUNvY29hKCkgeyB9Ci0KLSAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IG92ZXJy
aWRlOworcHJpdmF0ZToKKyAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGhlbWVDb2NvYV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCA0OGIyZTVlNGI1MjdlYTFk
YTA0ZDkzMmEzNzgwNGMwY2I1N2NlMDZjLi44NjE1MGU1YThhZTM3YmNhYWNlMTQyZTEyYWY4YWQw
MzA5NWI5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVt
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUNvY29h
LmgiCiAKKyNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbXBvcnQgPGRsZmNuLmg+CiAKQEAgLTUxLDYgKzUyLDcgQEAgc3RhdGljIHZvaWQgZml0
Q29udGV4dFRvQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBz
cmNJbWFnZVMKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKIHN0YXRpYyBOU0J1bmRsZSAq
cGFzc0tpdEJ1bmRsZSgpCiB7CiAgICAgc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRz
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNH
bGliLmNwcAppbmRleCBiOGJkMjFhNWU4NjYyMjYyNGQzY2Q3YTlkYzgzNTJjMjRlMjQ1ODRiLi4z
YzhkZDczZmVlZDFmMzAxMTZlMWNjMzQzN2Y3ZGU0MjY0ZmU0YTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcApAQCAt
MjEwLDggKzIxMCw4IEBAIGdib29sZWFuIEdhbWVwYWRzR2xpYjo6aXNHYW1lcGFkRGV2aWNlKEdV
ZGV2RGV2aWNlKiBkZXZpY2UpCiAKIHZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExpc3QqIGlu
dG8pCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEdhbWVwYWRzR2xpYiwg
Z2FtZXBhZHNHbGliLCAoaW50by0+bGVuZ3RoKCkpKTsKLSAgICBnYW1lcGFkc0dsaWIudXBkYXRl
R2FtZXBhZExpc3QoaW50byk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdhbWVwYWRzR2xp
Yj4gZ2FtZXBhZHNHbGliKGludG8tPmxlbmd0aCgpOworICAgIGdhbWVwYWRzR2xpYi5nZXQoKS51
cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQ3YzlkNDI0YTJiZmEyMjYxNjYwNGJhZDQ1OGY2ZmJiNDIyODcyZGQuLjQ1MWUwZTUxYTNiYmUz
NGRlMTRkZjg0MmQ1OTdhZjg2MDgyOWI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDE1ICszNCwxNiBAQAogI2luY2x1ZGUgIlN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRl
ICJXaWR0aEl0ZXJhdG9yLmgiCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgPGNhaXJvLmg+Ci0j
ZW5kaWYKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAorI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApAQCAtNTAsMzQgKzUx
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZjxGb250Q2FzY2FkZUZvbnRz
PiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYs
IFJlZlB0cjxGb250U2VsZWN0b3I+JiYpOwogCitzdGF0aWMgdm9pZCBhZGQoSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxV
Q2hhcj4gdW5pY29kZU5hbWUpCit7CisgICAgdW5zaWduZWQgbmFtZUxlbmd0aCA9IHN0cmxlbihu
YW1lKTsKKyAgICBzZXQuYWRkKEF0b21pY1N0cmluZyB7IG5hbWUsIG5hbWVMZW5ndGgsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7CisgICAgdW5zaWduZWQgdW5pY29kZU5h
bWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXplKCk7CisgICAgc2V0LmFkZChBdG9taWNTdHJpbmcg
eyB1bmljb2RlTmFtZS5iZWdpbigpLCB1bmljb2RlTmFtZUxlbmd0aCB9KTsKK30KKwogc3RhdGlj
IGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5KQogewogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiogc2V0OwotICAgIGlmICghc2V0
KSB7Ci0gICAgICAgIHNldCA9IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZz47Ci0gICAgICAgIHNl
dC0+YWRkKCJNUyBQR290aGljIik7Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQR290aGlj
W10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywgMHgz
MEMzLCAweDMwQUZ9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVN
U1BHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU1BHb3RoaWMpKSk7Ci0KLSAg
ICAgICAgc2V0LT5hZGQoIk1TIFBNaW5jaG8iKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVN
U1BNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2
NzFEfTsKLSAgICAgICAgc2V0LT5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQTWluY2hv
LCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNQTWluY2hvKSkpOwotCi0gICAgICAgIHNl
dC0+YWRkKCJNUyBHb3RoaWMiKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU0dvdGhpY1td
ID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBB
Rn07Ci0gICAgICAgIHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TR290aGljLCBX
VEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNHb3RoaWMpKSk7Ci0KLSAgICAgICAgc2V0LT5h
ZGQoIk1TIE1pbmNobyIpOwotICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TTWluY2hvW10gPSB7
MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9OwotICAgICAgICBzZXQtPmFk
ZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU01pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmlj
b2RlTmFtZU1TTWluY2hvKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNZWlyeW8iKTsKLSAgICAg
ICAgVUNoYXIgdW5pY29kZU5hbWVNZWlyeW9bXSA9IHsweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAw
eDMwQUF9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8s
IFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNZWlyeW8pKSk7Ci0gICAgfQotICAgIHJldHVy
biBzZXQtPmNvbnRhaW5zKGZhbWlseSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0ID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNldDsK
KyAgICAgICAgYWRkKHNldCwgIk1TIFBHb3RoaWMiLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAs
IDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAgICAgICBhZGQo
c2V0LCAiTVMgUE1pbmNobyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDY2
MEUsIDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1TIEdvdGhpYyIsIHsgMHhGRjJELCAw
eEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAgICAg
ICBhZGQoc2V0LCAiTVMgTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUs
IDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1laXJ5byIsIHsgMHgzMEUxLCAweDMwQTQs
IDB4MzBFQSwgMHgzMEFBIH0pOworICAgICAgICByZXR1cm4gc2V0OworICAgIH0oKSk7CisgICAg
cmV0dXJuIHNldC5nZXQoKS5jb250YWlucyhmYW1pbHkpOwogfQogCiBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBBdXRvOwpAQCAtODgsMTEgKzgzLDYgQEAg
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpzX2NvZGVQYXRoID0gQXV0bzsKIAog
Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKCkKICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykK
LSAgICAsIG1fbGV0dGVyU3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwg
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKLSAgICAsIG1fZW5hYmxlS2VybmluZyhm
YWxzZSkKLSAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGZhbHNlKQogewogfQogCkBAIC0xMTEsOSAr
MTAxLDYgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIGZkLCBmbG9hdCBsZXR0ZXJTcGFjaW5nLAogRm9udENhc2NhZGU6OkZvbnRDYXNjYWRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnREYXRhLCBGb250U21vb3RoaW5nTW9kZSBmb250
U21vb3RoaW5nTW9kZSkKICAgICA6IG1fZm9udHMoRm9udENhc2NhZGVGb250czo6Y3JlYXRlRm9y
UGxhdGZvcm1Gb250KGZvbnREYXRhKSkKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKLSAg
ICAsIG1fbGV0dGVyU3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwgbV91
c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21w
dXRlRW5hYmxlS2VybmluZygpKQogICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVp
cmVzU2hhcGluZygpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKaW5kZXggNzcxYzZmYmU2YzI0YjhhNDZmMmQwYmE2NTI0OWUwNTFmYTYxZTI4
ZS4uM2NkMjE0NDI3Y2M5Y2EzOWNiNGY1NTFlZjNhY2YyYWMxNmFlM2M5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwxNSArMjIsMTMgQEAKICAqCiAgKi8K
IAotI2lmbmRlZiBGb250Q2FzY2FkZV9oCi0jZGVmaW5lIEZvbnRDYXNjYWRlX2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRDYXNjYWRlRm9udHMuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtNDQsMTMgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBG
bG9hdFBvaW50OwotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRm9udERhdGE7Ci1jbGFzcyBGb250
TWV0cmljczsKLWNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBGb250U2VsZWN0b3I7Ci1j
bGFzcyBHbHlwaEJ1ZmZlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExheW91dFJl
Y3Q7CiBjbGFzcyBSZW5kZXJUZXh0OwpAQCAtNjAsMjEgKzUxLDEyIEBAIGNsYXNzIFRleHRSdW47
CiBzdHJ1Y3QgR2x5cGhEYXRhOwogCiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7Ci0gICAgR2x5cGhP
dmVyZmxvdygpCi0gICAgICAgIDogbGVmdCgwKQotICAgICAgICAsIHJpZ2h0KDApCi0gICAgICAg
ICwgdG9wKDApCi0gICAgICAgICwgYm90dG9tKDApCi0gICAgICAgICwgY29tcHV0ZUJvdW5kcyhm
YWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgaXNFbXB0eSgpCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbGVmdCAmJiAhcmlnaHQg
JiYgIXRvcCAmJiAhYm90dG9tOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIGV4dGVuZFRvKGNv
bnN0IEdseXBoT3ZlcmZsb3cmIG90aGVyKQorICAgIHZvaWQgZXh0ZW5kVG8oY29uc3QgR2x5cGhP
dmVyZmxvdyYgb3RoZXIpCiAgICAgewogICAgICAgICBsZWZ0ID0gc3RkOjptYXgobGVmdCwgb3Ro
ZXIubGVmdCk7CiAgICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIG90aGVyLnJpZ2h0KTsK
QEAgLTg0LDE0ICs2NiwxNSBAQCBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7CiAKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgR2x5cGhPdmVyZmxvdyYgb3RoZXIpCiAgICAgeworICAgICAgICAvLyBG
SVhNRTogUHJvYmFibHkgc2hvdWxkIG5hbWUgdGhpcyByYXRoZXIgdGhhbiBtYWtpbmcgaXQgdGhl
ICE9IG9wZXJhdG9yIHNpbmNlIGl0IGlnbm9yZXMgdGhlIHZhbHVlIG9mIGNvbXB1dGVCb3VuZHMu
CiAgICAgICAgIHJldHVybiBsZWZ0ICE9IG90aGVyLmxlZnQgfHwgcmlnaHQgIT0gb3RoZXIucmln
aHQgfHwgdG9wICE9IG90aGVyLnRvcCB8fCBib3R0b20gIT0gb3RoZXIuYm90dG9tOwogICAgIH0K
IAotICAgIGludCBsZWZ0OwotICAgIGludCByaWdodDsKLSAgICBpbnQgdG9wOwotICAgIGludCBi
b3R0b207Ci0gICAgYm9vbCBjb21wdXRlQm91bmRzOworICAgIGludCBsZWZ0IHsgMCB9OworICAg
IGludCByaWdodCB7IDAgfTsKKyAgICBpbnQgdG9wIHsgMCB9OworICAgIGludCBib3R0b20geyAw
IH07CisgICAgYm9vbCBjb21wdXRlQm91bmRzIHsgZmFsc2UgfTsKIH07CiAKIGNsYXNzIEdseXBo
VG9QYXRoVHJhbnNsYXRvciB7CkBAIC0zMjUsMTEgKzMwOCwxMSBAQCBwcml2YXRlOgogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gbV9mb250RGVzY3JpcHRpb247CiAgICAgbXV0YWJsZSBSZWZQ
dHI8Rm9udENhc2NhZGVGb250cz4gbV9mb250czsKICAgICBXZWFrUHRyRmFjdG9yeTxGb250Q2Fz
Y2FkZT4gbV93ZWFrUHRyRmFjdG9yeTsKLSAgICBmbG9hdCBtX2xldHRlclNwYWNpbmc7Ci0gICAg
ZmxvYXQgbV93b3JkU3BhY2luZzsKLSAgICBtdXRhYmxlIGJvb2wgbV91c2VCYWNrc2xhc2hBc1ll
blN5bWJvbDsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZW5hYmxlS2VybmluZyA6IDE7IC8vIENv
bXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Jl
cXVpcmVzU2hhcGluZyA6IDE7IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCisg
ICAgZmxvYXQgbV9sZXR0ZXJTcGFjaW5nIHsgMCB9OworICAgIGZsb2F0IG1fd29yZFNwYWNpbmcg
eyAwIH07CisgICAgbXV0YWJsZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgeyBmYWxz
ZSB9OworICAgIG11dGFibGUgYm9vbCBtX2VuYWJsZUtlcm5pbmcgeyBmYWxzZSB9OyAvLyBDb21w
dXRlZCBmcm9tIG1fZm9udERlc2NyaXB0aW9uLgorICAgIG11dGFibGUgYm9vbCBtX3JlcXVpcmVz
U2hhcGluZyB7IGZhbHNlIH07IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCiB9
OwogCiB2b2lkIGludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7CkBAIC0zNzAsNSArMzUzLDMg
QEAgaW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBmb250LCB1
bnNpZ25lZCB0YWJTaXplLCBmbG9hdCBwb3MKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCmluZGV4IGEzMDBlMGYxYjg4NDVlNzI0MzIzNjkzYzAzZTU3ZGQxNmEyM2M0
ODMuLjBhZjMzMDI4NDA2Y2U3ZTk1MzI0ZThiN2YzYzRjOGMxMTdlNzA1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RgogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNS
ZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAgICAg
Y29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogCi0gICAgcGxh
dGZvcm1UaGVtZSgpLT5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRzdFJlY3QpOwor
ICAgIFRoZW1lOjpzaW5nbGV0b24oKS5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRz
dFJlY3QpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIHBsYXRmb3JtVGhlbWUoKS0+
ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigp
LmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwg
c2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1h
Z2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCiAgICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI0ZmFk
MDc5MWEwMGFkYjJjNTNkZjU3NzJiNTAzZmY5YmYzMWQzNWQuLmY4ZWY0ZDViZTQ0YTc1YWJhMjRl
NzYzNTI5NmY5MjFiMTZlODFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMjY1LDIyICsyNjUs
MTkgQEAgc3RhdGljIENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiAvLyBGSVhNRTogSXQg
d291bGQgYmUgYmV0dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlz
IGtleS4KIHN0YXRpYyBDRlN0cmluZ1JlZiBDTVRpbWVSYW5nZVN0YXJ0S2V5KCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIGtleSwgKENGU1RSKCJz
dGFydCIpKSk7Ci0gICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gQ0ZTVFIoInN0YXJ0Iik7CiB9
CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVkTWV0YWRhdGFHcm91
cC5oIGV4cG9ydGVkIHRoaXMga2V5Lgogc3RhdGljIENGU3RyaW5nUmVmIENNVGltZVJhbmdlRHVy
YXRpb25LZXkoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDRlN0cmlu
Z1JlZiwga2V5LCAoQ0ZTVFIoImR1cmF0aW9uIikpKTsKLSAgICByZXR1cm4ga2V5OworICAgIHJl
dHVybiBDRlNUUigiZHVyYXRpb24iKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRl
ciBpZiBBVkNGIGV4cG9ydGVkIHRoaXMgbm90aWZpY2F0aW9uIG5hbWUuCiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIG5hbWUsIChDRlNUUigia0NBQ0ZD
b250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbiIpKSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAg
cmV0dXJuIENGU1RSKCJrQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uIik7CiB9CiAK
IC8vIERlZmluZSBBVkNGIG9iamVjdCBhY2Nlc3NvcnMgYXMgaW5saW5lIGZ1bmN0aW9ucyBoZXJl
IGluc3RlYWQgb2YgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Ygc28gd2UgZG9u
J3QgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDBkYjg4Yzg1YmNkOGEw
NjgzNDIxNThjYTNkNzE3OWZjNWE0Njk3MGUuLjQxM2M5MGJkZDU2YWRjOWYxMzc3OTZhNDdlYzcz
ZmU4NTQ0MjA5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3IuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogTGF5ZXJDaGFuZ2VzRmx1c2hlciYgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2luZ2xldG9uKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGF5ZXJDaGFuZ2VzRmx1c2hl
ciwgZmx1c2hlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXllckNoYW5nZXNG
bHVzaGVyPiBmbHVzaGVyOwogICAgIHJldHVybiBmbHVzaGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuaAppbmRleCAyOGU2NmI5ODUzOWYwM2Q3MTE0ZTZhODIwNzIwMTRmZTE2YmYwZDIw
Li4wNjA1ZDIyYzU3NTAyMTY4MWJiNDMxOTk1MjJhMmYxNjcxYzAyN2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNo
YW5nZXNGbHVzaGVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBMYXllckNoYW5nZXNGbHVzaGVyX2gKLSNkZWZpbmUgTGF5ZXJDaGFuZ2VzRmx1c2hl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNDMsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5k
aW5nRmx1c2goQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCopOwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBOZXZlckRlc3Ryb3llZDxMYXllckNoYW5nZXNGbHVzaGVyPjsKICAgICBMYXllckNoYW5n
ZXNGbHVzaGVyKCk7CiAgICAgfkxheWVyQ2hhbmdlc0ZsdXNoZXIoKTsKIApAQCAtNTcsNSArNTcs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
TGF5ZXJDaGFuZ2VzRmx1c2hlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCmluZGV4IDgwODgzMGI4Yjg1N2Jk
Mjg2YjgzZmU4ZDQ0YzQ2YTk0MTcwOTdhMzUuLjZkNTM3MzdiY2VjM2E3MjYyN2ZhMzY1MGVlZDUx
ZWRkMGJiOGJkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDM5ICs0NiwzNyBAQCBTdHJpbmcgTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
LSAgICBpZiAodHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHR5cGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
U3RyaW5nTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmdNYXAs
IFVUSU1hcCwgKCkpOwotICAgIGlmIChVVElNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVUSU1h
cC5hZGQoInB1YmxpYy5odG1sIiwgImh0bWwiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGlj
LmpwZWciLCAianBlZyIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMuanBlZy0yMDAwIiwg
ImpwMiIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMucGxhaW4tdGV4dCIsICJ0eHQiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnBuZyIsICJwbmciKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgicHVibGljLnRpZmYiLCAidGlmZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMu
eGJpdG1hcC1pbWFnZSIsICJ4Ym0iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnhtbCIs
ICJ4bWwiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLmlsbHVzdHJhdG9yLmFpLWlt
YWdlIiwgImFpIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wZGYiLCAicGRmIik7
Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5waG90b3Nob3AtaW1hZ2UiLCAicHNkIik7
Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wb3N0c2NyaXB0IiwgInBzIik7Ci0gICAg
ICAgIFVUSU1hcC5hZGQoImNvbS5hcHBsZS5pY25zIiwgImljbnMiKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgiY29tLmFwcGxlLm1hY3BhaW50LWltYWdlIiwgInBudGciKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgiY29tLmFwcGxlLnBpY3QiLCAicGljdCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20u
YXBwbGUucXVpY2t0aW1lLWltYWdlIiwgInF0aWYiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29t
LmFwcGxlLndlYmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIpOwotICAgICAgICBVVElNYXAuYWRkKCJj
b20uY29tcHVzZXJ2ZS5naWYiLCAiZ2lmIik7ICAgICAgICAKLSAgICAgICAgVVRJTWFwLmFkZCgi
Y29tLmlsbS5vcGVuZXhyLWltYWdlIiwgImV4ciIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20u
a29kYWsuZmxhc2hwaXgtaW1hZ2UiLCAiZnB4Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5t
aWNyb3NvZnQuYm1wIiwgImJtcCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubWljcm9zb2Z0
LmljbyIsICJpY28iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLm5ldHNjYXBlLmphdmFzY3Jp
cHQtc291cmNlIiwgImpzIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5zZ2kuc2dpLWltYWdl
IiwgInNnaSIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
LCAidGdhIik7Ci0gICAgfQotICAgIHJldHVybiBVVElNYXAuZ2V0KHR5cGUpOworICAgIHN0YXRp
YyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICAgICAgeyAicHVibGljLmh0bWwi
LCAiaHRtbCIgfSwKKyAgICAgICAgeyAicHVibGljLmpwZWciLCAianBlZyIgfSwKKyAgICAgICAg
eyAicHVibGljLmpwZWctMjAwMCIsICJqcDIiIH0sCisgICAgICAgIHsgInB1YmxpYy5wbGFpbi10
ZXh0IiwgInR4dCIgfSwKKyAgICAgICAgeyAicHVibGljLnBuZyIsICJwbmciIH0sCisgICAgICAg
IHsgInB1YmxpYy50aWZmIiwgInRpZmYiIH0sCisgICAgICAgIHsgInB1YmxpYy54Yml0bWFwLWlt
YWdlIiwgInhibSIgfSwKKyAgICAgICAgeyAicHVibGljLnhtbCIsICJ4bWwiIH0sCisgICAgICAg
IHsgImNvbS5hZG9iZS5pbGx1c3RyYXRvci5haS1pbWFnZSIsICJhaSIgfSwKKyAgICAgICAgeyAi
Y29tLmFkb2JlLnBkZiIsICJwZGYiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5waG90b3Nob3At
aW1hZ2UiLCAicHNkIiB9LAorICAgICAgICB7ICJjb20uYWRvYmUucG9zdHNjcmlwdCIsICJwcyIg
fSwKKyAgICAgICAgeyAiY29tLmFwcGxlLmljbnMiLCAiaWNucyIgfSwKKyAgICAgICAgeyAiY29t
LmFwcGxlLm1hY3BhaW50LWltYWdlIiwgInBudGciIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5w
aWN0IiwgInBpY3QiIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5xdWlja3RpbWUtaW1hZ2UiLCAi
cXRpZiIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLndlYmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIg
fSwKKyAgICAgICAgeyAiY29tLmNvbXB1c2VydmUuZ2lmIiwgImdpZiIgfSwKKyAgICAgICAgeyAi
Y29tLmlsbS5vcGVuZXhyLWltYWdlIiwgImV4ciIgfSwKKyAgICAgICAgeyAiY29tLmtvZGFrLmZs
YXNocGl4LWltYWdlIiwgImZweCIgfSwKKyAgICAgICAgeyAiY29tLm1pY3Jvc29mdC5ibXAiLCAi
Ym1wIiB9LAorICAgICAgICB7ICJjb20ubWljcm9zb2Z0LmljbyIsICJpY28iIH0sCisgICAgICAg
IHsgImNvbS5uZXRzY2FwZS5qYXZhc2NyaXB0LXNvdXJjZSIsICJqcyIgfSwKKyAgICAgICAgeyAi
Y29tLnNnaS5zZ2ktaW1hZ2UiLCAic2dpIiB9LAorICAgICAgICB7ICJjb20udHJ1ZXZpc2lvbi50
Z2EtaW1hZ2UiLCAidGdhIiB9LAorICAgIH0pOworICAgIHJldHVybiBtYXAuZ2V0KCkuZ2V0KHR5
cGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAppbmRl
eCA4M2ZmMjdlYTUyNTYyMjhhOGQ1NzViYWVmMTdjNjc1NjU2YzIxN2E0Li5mY2RkYTg0NzhiYTYz
OTBhNGJmZTNiNGEzMTkxOTRlN2ExY2UzMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKQEAgLTc0
LDggKzc0LDggQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RmFjZUNhY2hlRW50
cnk+LCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlUKIAogc3RhdGljIEhhcmZCdXp6RmFj
ZUNhY2hlKiBoYXJmQnV6ekZhY2VDYWNoZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEhhcmZCdXp6RmFjZUNhY2hlLCBzX2hhcmZCdXp6RmFjZUNhY2hlLCAoKSk7Ci0g
ICAgcmV0dXJuICZzX2hhcmZCdXp6RmFjZUNhY2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXJmQnV6ekZhY2VDYWNoZT4gc19oYXJmQnV6ekZhY2VDYWNoZTsKKyAgICByZXR1cm4gJnNf
aGFyZkJ1enpGYWNlQ2FjaGUuZ2V0KCk7CiB9CiAKIEhhcmZCdXp6RmFjZTo6SGFyZkJ1enpGYWNl
KEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4u
Y3BwCmluZGV4IDc4MWI2ZjgwMzhkY2RmZTI3YzM2MTM4Mzc0NmFhYWZjZjA3MmVhNjkuLmFjZmU3
OWU2YWI0MjY3YTVlNWIyNjcxNWJiNzMwZTdkNjhhY2VkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0zNDAs
OCArMzQwLDkgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZyb21EZXNjcmlwdGlvbkFu
ZExvZ0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb24KIAogUmVmPEZvbnQ+IEZvbnRDYWNo
ZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBmYWxsYmFja0ZvbnROYW1lLCAoKSk7Ci0gICAgaWYgKCFmYWxsYmFja0ZvbnROYW1lLmlz
RW1wdHkoKSkKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmYWxsYmFj
a0ZvbnROYW1lOworCisgICAgaWYgKCFmYWxsYmFja0ZvbnROYW1lLmdldCgpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuICpmb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tG
b250TmFtZSk7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhv
dyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4gIEZvciBub3cgd2UnbGwgcGljawpA
QCAtMzYwLDcgKzM2MSw3IEBAIFJlZjxGb250PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFj
a0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpCiAgICAgUmVmUHRyPEZv
bnQ+IHNpbXBsZUZvbnQ7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVO
R1RIKGZhbGxiYWNrRm9udHMpOyArK2kpIHsKICAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250
Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250c1tpXSkpIHsKLSAgICAgICAg
ICAgIGZhbGxiYWNrRm9udE5hbWUgPSBmYWxsYmFja0ZvbnRzW2ldOworICAgICAgICAgICAgZmFs
bGJhY2tGb250TmFtZS5nZXQoKSA9IGZhbGxiYWNrRm9udHNbaV07CiAgICAgICAgICAgICByZXR1
cm4gKnNpbXBsZUZvbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9UaGVtZUlPUy5oCmluZGV4IDM3N2I4MjI2ZTRhZjgxM2RmOWVmNTBlNjIxNzA0MjU5ZDQ4YTk4
MjkuLjcwYjYxYWJhYWY5ZDBkNGMzMTQ3YWY3ZGZiNGY5YjZmODdkODI5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5oCkBAIC0yMywyMSArMjMsMTUgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhlbWVJT1NfaAotI2RlZmluZSBUaGVtZUlPU19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRoZW1lQ29jb2EuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBUaGVtZUlPUyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKLXB1YmxpYzoKLSAg
ICBUaGVtZUlPUygpIHsgfQotICAgIHZpcnR1YWwgflRoZW1lSU9TKCkgeyB9Ci0KLSAgICBib29s
IHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOworY2xhc3MgVGhlbWVJ
T1MgZmluYWwgOiBwdWJsaWMgVGhlbWVDb2NvYSB7Citwcml2YXRlOgorICAgIGJvb2wgdXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VGhlbWVJT1MubW0KaW5kZXggMDcyMGQ2NDZkOTUwMjAyNmIyMjRiYzA2ZjVlZGQ5YzRlYzA3ZDVk
ZS4uMzE1MDJjYmFhMDE0Y2QwNjU3ZmI3N2RkNWVlZjk2OTdiNDFmNDM5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsOCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUlPUy5oIgogCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQu
aCIKLSNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQogU09GVF9MSU5LKFVJS2l0
LCBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJsZWQsIEJPT0wsICh2b2lkKSwgKCkp
CkBAIC0zOSwxMiArMzYsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0vLyBGSVhNRTogSW1wbGVtZW50IGJlZm9yZSBlbmFibGluZyBVU0UoTkVXX1RI
RU1FKS4KLQotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZUlPUz4gdGhlbWVJT1M7Ci0gICAg
cmV0dXJuICZ0aGVtZUlPUy5nZXQoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVJ
T1M+IHRoZW1lOworICAgIHJldHVybiB0aGVtZTsKIH0KIAogYm9vbCBUaGVtZUlPUzo6dXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLmgKaW5kZXggYjM0NmE2NWVkMDE2YTQ4MDc5MTA0ZTkzZTI4NTg0YTYyYjBjYWYzYy4uMTY3
Y2Y0MDZjYmIwNGI4ZGIwZTdhZDZmYTg0Mjg5NmM2MjNiYzI1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDYgKzIzLDM2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwogCi0jaWZuZGVmIFRoZW1lTWFjX2gKLSNkZWZpbmUgVGhlbWVNYWNfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJUaGVtZUNvY29hLmgiCiAKLUBpbnRlcmZhY2UgTlNGb250KFdlYkNvcmVU
aGVtZSkKLS0gKE5TU3RyaW5nKil3ZWJDb3JlRmFtaWx5TmFtZTsKLUBlbmQKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZU1hYyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFRoZW1lTWFjIGZpbmFsIDogcHVibGljIFRo
ZW1lQ29jb2EgewogcHVibGljOgotICAgIFRoZW1lTWFjKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhl
bWVNYWMoKSB7IH0KLSAgICAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29u
dHJvbFBhcnQpIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1l
TWFjIGlzIGNvbnZlcnRlZCBvdmVyIHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVy
bmFsIHRvIFRoZW1lTWFjLgorICAgIHN0YXRpYyBOU1ZpZXcgKmVuc3VyZWRWaWV3KFNjcm9sbFZp
ZXcqLCBjb25zdCBDb250cm9sU3RhdGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNl
KTsKKyAgICBzdGF0aWMgdm9pZCBzZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3Qm
KTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4
dChOU0NlbGwgKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3ICos
IGJvb2wgLyogZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3VzUmluZyAqLywgYm9v
bCAvKiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVGYWN0b3IgKi8pOwog
Ci0gICAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBv
dmVycmlkZTsKLSAgICAKLSAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdCBvdmVycmlkZTsKLSAgICBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9s
UGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlk
ZTsKK3ByaXZhdGU6CisgICAgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQ
YXJ0KSBjb25zdCBmaW5hbDsKIAotICAgIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhDb250cm9s
UGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGVuZ3RoQm94IGNvbnRyb2xCb3Jk
ZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29t
ZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9u
YWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CiAKLSAgICBib29s
IGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQorICAgIExlbmd0aFNpemUg
Y29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3Ro
U2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOworICAgIExlbmd0aFNpemUgbWlu
aW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpv
b21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpv
b21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKSBvdmVycmlkZTsKLSAgICB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0
KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENv
bnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94
LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKyAgICBMZW5ndGhCb3ggY29udHJvbEJv
cmRlcihDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpv
b21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CiAKLSAgICBib29sIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29udHJvbFJl
cXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCBwYXJ0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9CiAKLSAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJU
aGVtZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBp
bnRlcm5hbCB0byBUaGVtZU1hYy4KLSAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3Jv
bGxWaWV3KiwgY29uc3QgQ29udHJvbFN0YXRlcyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBm
YWxzZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRS
ZWN0Jik7Ci0gICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0Nv
bnRleHQoTlNDZWxsKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3
KiwgYm9vbCAvKiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBi
b29sIC8qIHVzZUltYWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7
CisgICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBmaW5hbDsKKyAg
ICB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9s
U3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CisKKyAg
ICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGhlbWVNYWNfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4
ZDcxNTdjMTlhNDcwNzIuLjBlNTk1OGI1YmVkYjQ3Njc5ODc5NGFhZTJiOTU4ZjViMzdmM2ViY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTMsNyArMTMsNyBAQAogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgog
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKQEAgLTI3LDggKzI3
LDEwIEBACiAjaW1wb3J0ICJUaGVtZU1hYy5oIgogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgi
CisjaW1wb3J0ICJDb250cm9sU3RhdGVzLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisjaW1wb3J0ICJMZW5ndGhTaXplLmgiCiAjaW1wb3J0
ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIk5TQnV0dG9uQ2VsbFNQ
SS5oIgogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgpAQCAtNDQsNiArNDYsOSBAQCBzdGF0aWMgQk9P
TCB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2U7CiBAaW50ZXJmYWNlIFdlYkNvcmVUaGVtZVdp
bmRvdyA6IE5TV2luZG93CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViQ29yZVRoZW1lVmlldyA6IE5T
Q29udHJvbAorQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVRoZW1lV2luZG93CiAKIC0g
KEJPT0wpaGFzS2V5QXBwZWFyYW5jZQpAQCAtNTgsOSArNjMsNiBAQCAtIChCT09MKWlzS2V5V2lu
ZG93CiAKIEBlbmQKIAotQGludGVyZmFjZSBXZWJDb3JlVGhlbWVWaWV3IDogTlNDb250cm9sCi1A
ZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlVGhlbWVWaWV3CiAKIC0gKE5TV2luZG93ICop
d2luZG93CkBAIC0xMDgsMTggKzExMCw2IEBAIC0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3Kilz
dWJ2aWV3CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIE5TRm9udCAoV2ViQ29yZVRoZW1lKQot
Ci0tIChOU1N0cmluZyopd2ViQ29yZUZhbWlseU5hbWUKLXsKLSAgICBpZiAoW1tzZWxmIGZhbWls
eU5hbWVdIGhhc1ByZWZpeDpAIi4iXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIGZvbnROYW1lXTsK
LQotICAgIHJldHVybiBbc2VsZiBmYW1pbHlOYW1lXTsKLX0KLQotQGVuZAotCiAvLyBGSVhNRTog
RGVmYXVsdCBidXR0b25zIHJlYWxseSBzaG91bGQgYmUgbW9yZSBsaWtlIHB1c2ggYnV0dG9ucyBh
bmQgbm90IGxpa2UgYnV0dG9ucy4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMxLDEwICsx
MjEsMTAgQEAgZW51bSB7CiAgICAgbGVmdE1hcmdpbgogfTsKIAotVGhlbWUqIHBsYXRmb3JtVGhl
bWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUaGVtZU1hYz4gdGhlbWVNYWM7Ci0gICAgcmV0dXJuICZ0aGVtZU1hYy5nZXQoKTsKKyAg
ICByZXR1cm4gdGhlbWVNYWM7CiB9CiAKIC8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBhIGJ1
bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBhcnRzLgpAQCAtMjQxLDggKzIzMSw4IEBAIHN0YXRp
YyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29udHJvbFN0YXRlc1RvVGhlbWVEcmF3U3RhdGUoVGhl
bWVCdXR0b25LaW5kIGtpbmQsCiAKIHN0YXRpYyBGbG9hdFJlY3QgaW5mbGF0ZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiB6b29tZWRSZWN0LCBjb25zdCBJbnRTaXplJiB6b29tZWRTaXplLCBjb25zdCBp
bnQqIG1hcmdpbnMsIGZsb2F0IHpvb21GYWN0b3IpCiB7Ci0gICAgLy8gT25seSBkbyB0aGUgaW5m
bGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVpZ2h0IGFyZSB0b28gc21hbGwuICBPdGhl
cndpc2UgdHJ5IHRvCi0gICAgLy8gZml0IHRoZSBnbG93L2NoZWNrIHNwYWNlIGludG8gdGhlIGF2
YWlsYWJsZSBib3gncyB3aWR0aC9oZWlnaHQuCisgICAgLy8gT25seSBkbyB0aGUgaW5mbGF0aW9u
IGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVpZ2h0IGFyZSB0b28gc21hbGwuCisgICAgLy8gT3Ro
ZXJ3aXNlIHRyeSB0byBmaXQgdGhlIGdsb3cvY2hlY2sgc3BhY2UgaW50byB0aGUgYXZhaWxhYmxl
IGJveCdzIHdpZHRoL2hlaWdodC4KICAgICBpbnQgd2lkdGhEZWx0YSA9IHpvb21lZFJlY3Qud2lk
dGgoKSAtICh6b29tZWRTaXplLndpZHRoKCkgKyBtYXJnaW5zW2xlZnRNYXJnaW5dICogem9vbUZh
Y3RvciArIG1hcmdpbnNbcmlnaHRNYXJnaW5dICogem9vbUZhY3Rvcik7CiAgICAgaW50IGhlaWdo
dERlbHRhID0gem9vbWVkUmVjdC5oZWlnaHQoKSAtICh6b29tZWRTaXplLmhlaWdodCgpICsgbWFy
Z2luc1t0b3BNYXJnaW5dICogem9vbUZhY3RvciArIG1hcmdpbnNbYm90dG9tTWFyZ2luXSAqIHpv
b21GYWN0b3IpOwogICAgIEZsb2F0UmVjdCByZXN1bHQoem9vbWVkUmVjdCk7CkBAIC02ODksMzcg
KzY3OSwzNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRy
b2xQYXJ0IHBhcnQpIGNvbnN0CiBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IFRoZW1lTWFjOjpjb250cm9sRm9udChDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsK
LSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewotICAgICAgICAgICAgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0KLSAgICAgICAgICAgIE5TRm9udCogbnNGb250ID0g
W05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9s
U2l6ZTpjb250cm9sU2l6ZUZvckZvbnQoZm9udCldXTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRPbmVGYW1pbHkoQXRvbWljU3RyaW5nKCItYXBwbGUtc3lzdGVtIiwgQXRvbWljU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShbbnNGb250IHBvaW50U2l6ZV0gKiB6b29tRmFjdG9yKTsKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKFtuc0ZvbnQgcG9pbnRTaXpl
XSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbjsKLSAg
ICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250
cm9sRm9udChwYXJ0LCBmb250LCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0
OiB7CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7CisKKyAgICAgICAg
TlNGb250KiBuc0ZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1G
b250U2l6ZUZvckNvbnRyb2xTaXplOmNvbnRyb2xTaXplRm9yRm9udChmb250KV1dOworICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0b21pY1N0cmluZygiLWFwcGxlLXN5c3Rl
bSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbbnNGb250IHBvaW50U2l6ZV0gKiB6b29tRmFjdG9y
KTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoW25zRm9udCBwb2lu
dFNpemVdICogem9vbUZhY3Rvcik7CisgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb247Cisg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fQogCiBMZW5ndGhTaXplIFRoZW1lTWFjOjpjb250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2Fz
ZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tib3hTaXplKGZvbnQsIHpv
b21lZFNpemUsIHpvb21GYWN0b3IpOwotICAgICAgICBjYXNlIFJhZGlvUGFydDoKLSAgICAgICAg
ICAgIHJldHVybiByYWRpb1NpemUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7Ci0gICAg
ICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICAvLyBIZWlnaHQgaXMgcmVzZXQg
dG8gYXV0byBzbyB0aGF0IHNwZWNpZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgotICAgICAg
ICAgICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCB7IHpvb21lZFNpemUud2lkdGgsIHsgfSB9
LCB6b29tRmFjdG9yLCBidXR0b25TaXplcygpKTsKLSAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0
b25QYXJ0OgotICAgICAgICAgICAgaWYgKCF6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JB
dXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7Ci0gICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21O
U0NvbnRyb2xTaXplKHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoZm9udCksIHpvb21lZFNpemUs
IHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKLSAgICAgICAgZGVmYXVsdDoKKyAgICBjYXNl
IENoZWNrYm94UGFydDoKKyAgICAgICAgcmV0dXJuIGNoZWNrYm94U2l6ZShmb250LCB6b29tZWRT
aXplLCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIHJh
ZGlvU2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0
b25QYXJ0OgorICAgICAgICAvLyBIZWlnaHQgaXMgcmVzZXQgdG8gYXV0byBzbyB0aGF0IHNwZWNp
ZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgorICAgICAgICByZXR1cm4gc2l6ZUZyb21Gb250
KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNpemVz
KCkpOworICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKKyAgICAgICAgaWYgKCF6b29tZWRT
aXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50
cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAgICByZXR1cm4gem9vbWVkU2l6ZTsKKyAgICAgICAg
cmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6ZShzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGZv
bnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBzdGVwcGVyU2l6ZXMoKSk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7CiAgICAgfQogfQogCkBAIC03NDQsMjggKzcz
NCwyOCBAQCBMZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQgcGFy
dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbgogewogICAgIHN3aXRjaCAocGFydCkgewog
ICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgRGVmYXVsdEJ1dHRv
blBhcnQ6Ci0gICAgICAgIGNhc2UgQnV0dG9uUGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5n
dGhCb3goMCwgem9vbWVkQm94LnJpZ2h0KCkudmFsdWUoKSwgMCwgem9vbWVkQm94LmxlZnQoKS52
YWx1ZSgpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6Y29u
dHJvbEJvcmRlcihwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3IpOworICAgIGNhc2Ug
RGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0b25QYXJ0OgorICAgICAgICByZXR1cm4g
TGVuZ3RoQm94KDAsIHpvb21lZEJveC5yaWdodCgpLnZhbHVlKCksIDAsIHpvb21lZEJveC5sZWZ0
KCkudmFsdWUoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9s
Qm9yZGVyKHBhcnQsIGZvbnQsIHpvb21lZEJveCwgem9vbUZhY3Rvcik7CiAgICAgfQogfQogCiBM
ZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBQdXNo
QnV0dG9uUGFydDogewotICAgICAgICAgICAgLy8gSnVzdCB1c2UgOHB4LiAgQXBwS2l0IHdhbnRz
IHRvIHVzZSAxMXB4IGZvciBtaW5pIGJ1dHRvbnMsIGJ1dCB0aGF0IHBhZGRpbmcgaXMganVzdCB0
b28gbGFyZ2UKLSAgICAgICAgICAgIC8vIGZvciByZWFsLXdvcmxkIFdlYiBzaXRlcyAoY3JlYXRp
bmcgYSBodWdlIG5lY2Vzc2FyeSBtaW5pbXVtIHdpZHRoIGZvciBidXR0b25zIHdob3NlIHNwYWNl
IGlzCi0gICAgICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNvbnN0cmFpbmVkLCBzaW5jZSB3ZSBz
ZWxlY3QgbWluaSBvbmx5IGZvciBzbWFsbCBjcmFtcGVkIGVudmlyb25tZW50cy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgYWxzbyBndWFyYW50ZWVzIHRoZSBIVE1MIDxidXR0b24+IHdpbGwgbWF0Y2gg
b3VyIHJlbmRlcmluZyBieSBkZWZhdWx0LCBzaW5jZSB3ZSdyZSB1c2luZyBhIGNvbnNpc3RlbnQK
LSAgICAgICAgICAgIC8vIHBhZGRpbmcuCi0gICAgICAgICAgICBjb25zdCBpbnQgcGFkZGluZyA9
IDggKiB6b29tRmFjdG9yOwotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgyLCBwYWRkaW5n
LCAzLCBwYWRkaW5nKTsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIFRoZW1lOjpjb250cm9sUGFkZGluZyhwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21G
YWN0b3IpOworICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKKyAgICAgICAgLy8gSnVzdCB1c2Ug
OHB4LiBBcHBLaXQgd2FudHMgdG8gdXNlIDExcHggZm9yIG1pbmkgYnV0dG9ucywgYnV0IHRoYXQg
cGFkZGluZyBpcyBqdXN0IHRvbyBsYXJnZQorICAgICAgICAvLyBmb3IgcmVhbC13b3JsZCBXZWIg
c2l0ZXMgKGNyZWF0aW5nIGEgaHVnZSBuZWNlc3NhcnkgbWluaW11bSB3aWR0aCBmb3IgYnV0dG9u
cyB3aG9zZSBzcGFjZSBpcworICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNvbnN0cmFpbmVkLCBz
aW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZvciBzbWFsbCBjcmFtcGVkIGVudmlyb25tZW50cy4K
KyAgICAgICAgLy8gVGhpcyBhbHNvIGd1YXJhbnRlZXMgdGhlIEhUTUwgPGJ1dHRvbj4gd2lsbCBt
YXRjaCBvdXIgcmVuZGVyaW5nIGJ5IGRlZmF1bHQsIHNpbmNlIHdlJ3JlIHVzaW5nIGEgY29uc2lz
dGVudAorICAgICAgICAvLyBwYWRkaW5nLgorICAgICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDgg
KiB6b29tRmFjdG9yOworICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDIsIHBhZGRpbmcsIDMsIHBh
ZGRpbmcpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gVGhlbWU6OmNvbnRy
b2xQYWRkaW5nKHBhcnQsIGZvbnQsIHpvb21lZEJveCwgem9vbUZhY3Rvcik7CiAgICAgfQogfQog
CkBAIC03NzYsNyArNzY2LDcgQEAgdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJl
Y3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgc3QKICAgICBzd2l0Y2gg
KHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6IHsKICAgICAgICAgICAgIC8vIFdl
IGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVk
ZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhlIGNoZWNrYm94Ci0gICAgICAgICAgICAv
LyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2Yg
dGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCisgICAgICAgICAgICAvLyBzaGFk
b3ciIGFuZCB0aGUgY2hlY2suIFdlIGRvbid0IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91
bmRzIG9mIHRoZSBjb250cm9sIGluIFdlYktpdC4KICAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9
IHNoYXJlZENoZWNrYm94Q2VsbChzdGF0ZXMsIHpvb21SZWN0U2l6ZSwgem9vbUZhY3Rvcik7CiAg
ICAgICAgICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVd
OwogICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gY2hlY2tib3hTaXplcygpW2NvbnRy
b2xTaXplXTsKQEAgLTc4Nyw3ICs3NzcsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJv
bFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgUmFkaW9QYXJ0OiB7CiAgICAgICAgICAgICAvLyBXZSBpbmZs
YXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZvciBwYWRkaW5nIGluY2x1ZGVkIGlu
IHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSByYWRpbyBidXR0b24KLSAgICAgICAgICAgIC8v
IHNoYWRvdyIuICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0
aGUgY29udHJvbCBpbiBXZWJLaXQuCisgICAgICAgICAgICAvLyBzaGFkb3ciLiBXZSBkb24ndCBj
b25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQu
CiAgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBzaGFyZWRSYWRpb0NlbGwoc3RhdGVzLCB6b29t
UmVjdFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsKICAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6
ZSA9IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYy5oCmluZGV4IDI3MmVhMTM2NjE1NmZjYzE5ZDY0OGNkNjE2MDc1MWUxMmEyYjI4
ZWEuLjcyZTc4ZDc4ZTY1ODQzZDQ5N2RmOWZiZjdmNDNjODg0N2NkYzU4ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCkBAIC0zMiw3ICszMiw2IEBACiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRl
ICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVk
aW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmgKaW5kZXggNWQ4NmZmMjU0N2NhMTUzNmJjMzVjNGU3ZGE4YjMyZGE5
ZTQwYTVjNC4uNjZmODExN2FiNzZmOGJiMzdlYTM1YjlkMWM0OTQxOGQxODEwMTcwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2lu
Y2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25O
b3RpZmllci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggMTIyYmJkZjNjNGRmYjFkZjJjYmEwODQyNDdm
OGIxOTJiY2MxYjRiOC4uMGM0YjVjYmM2MjAxN2Q5YWI3ZGE5ZjcyZjVhNjcyNmVhOTIxZWQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9E
b3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5kZXggZmY1MmI3ZDM5MTYzZDVkOWY4NDE0NjQzMGJj
M2U4NTY2MmZkN2Q2NS4uZTAwZGU5NjY1YTBhMDNkZmU4MWNhY2UwMjI2ZTU0OTg5MGY1NjFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRC
dW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rv
d25sb2FkQnVuZGxlV2luLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdWludDMyX3QgbWFn
aWNOdW1iZXIoKQogCiBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24oKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGV4dGVuc2lvbiwgKEFTQ0lJ
TGl0ZXJhbCgiLmRvd25sb2FkIikpKTsKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBleHRlbnNpb24geyBBU0NJSUxpdGVyYWwgeyAiLmRvd25sb2FkIiB9IH07CiAgICAg
cmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBmOGU1NmI2ZWU0NGU5ODI0Njkz
MDgxOTQ2NjQ1MjFmMWU4NjEwODJlLi4yZGRjMzcwYjljMjJiY2UwYjUzZmI2NGJjMDMxOGQwYjVm
ZGI2ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjk5LDEzICsyOTksMTIgQEAgdm9pZCBtYXJrdXBUb0NG
SFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3Rvcjxj
aGFyPiYgcmUKIAogdm9pZCByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMo
U3RyaW5nJiBzdHIpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
Zywgd2luZG93c05ld2xpbmUsIChBU0NJSUxpdGVyYWwoIlxyXG4iKSkpOwogICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHN0ci5s
ZW5ndGgoKTsgKytpbmRleCkgewogICAgICAgICBpZiAoc3RyW2luZGV4XSAhPSAnXG4nIHx8IChp
bmRleCA+IDAgJiYgc3RyW2luZGV4IC0gMV0gPT0gJ1xyJykpCiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHN0cltpbmRleF0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHdpbmRvd3NOZXdsaW5lKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJc
clxuIik7CiAgICAgfQogICAgIHN0ciA9IHJlc3VsdC50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDA3NzIzNzZlZGI2
YzdjNDc4ZTliZDg4MzA4M2ZiNTExMzQ2YWVkYmUuLmVjZjllOTA4ZGQ3MDQ5ZTEyMGUxZWMwYTFm
Njk2MmQ1ODc2MjA2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2
NDQ0NzM2MDA7CkBAIC0yNTcsMjEgKzI1NiwyMSBAQCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBTdHJpbmcgYnVuZGxlTmFtZSgpCiB7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbmFtZSwgKEFTQ0lJTGl0ZXJhbCgi
V2ViS2l0IikpKTsKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1l
ID0gW10geworICAgICAgICBTdHJpbmcgbmFtZSB7IEFTQ0lJTGl0ZXJhbCB7ICJXZWJLaXQiIH0g
fTsKIAogI2lmIFVTRShDRikKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKLQotICAgIGlm
ICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgICAg
IGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSkKLSAgICAg
ICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVG
b3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKQorICAg
ICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsK
KyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0
VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09
IENGU3RyaW5nR2V0VHlwZUlEKCkpCiAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVy
cHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVjdXRhYmxlKTsKLSAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICNlbmRpZgogCisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0o
KTsKKwogICAgIHJldHVybiBuYW1lOwogfQogCkBAIC0yODMsOCArMjgyLDcgQEAgc3RhdGljIFN0
cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogICAgIGJ1ZmZlci5y
ZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3Ry
aW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29tcGFueU5hbWVEaXJlY3RvcnksIChBU0NJSUxpdGVyYWwoIkFw
cGxlIENvbXB1dGVyXFwiKSkpOwotICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkaXJlY3RvcnksIGNvbXBhbnlOYW1lRGlyZWN0b3J5ICsgYnVuZGxlTmFtZSgpKTsKKyAg
ICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUg
Q29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwogICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVz
KGRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAKaW5kZXggZDVhZDk3NzNkODQxMjlmMmUwMzRiNWEzNmZm
YzFjZjYyMTFhZWRhYi4uNzI3ZTRmZWNiNmMxMzM1ZjZjZjczMGM3YmU4ZmFiZWRkMWNjMGNmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwCkBAIC0zMywxMCArMzMs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UaGVtZSogcGxhdGZvcm1UaGVtZSgpCitU
aGVtZSYgVGhlbWVXUEU6OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFRoZW1lV1BFPiB0aGVtZTsKLSAgICByZXR1cm4gJnRoZW1lLmdldCgpOworICAgIHJldHVybiB0
aGVtZTsKIH0KIAogTGVuZ3RoU2l6ZSBUaGVtZVdQRTo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQg
cGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBMZW5ndGhTaXplJiB6
b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
cGUvVGhlbWVXUEUuaAppbmRleCA3MzlmNWMxZTFjYWFiZjRjNDA0MzQzNWY0OTdmODllNjkxMzRi
MDNmLi5iNTI0YzQ4OTdjNWFmZDhiMDA5MTc4ODkwNDJkNDMzYWYzM2IzM2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaApAQCAtMjksMTYgKzI5LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGhlbWVXUEUgOiBwdWJsaWMgVGhlbWUgewotcHVibGlj
OgotICAgIFRoZW1lV1BFKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVXUEUoKSB7IH0KLQotICAg
IExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0KSBjb25zdCBvdmVycmlkZTsKK2NsYXNzIFRoZW1lV1BF
IGZpbmFsIDogcHVibGljIFRoZW1lIHsKK3ByaXZhdGU6CisgICAgTGVuZ3RoU2l6ZSBjb250cm9s
U2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwg
ZmxvYXQpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJv
bFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3Jv
bGxWaWV3KiwgZmxvYXQsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwgZmxvYXQpIGZpbmFsOwogCi1wcml2YXRlOgogICAg
IHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQpOwogICAgIHZvaWQgcGFpbnRSYWRpbyhDb250cm9sU3RhdGVz
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpOwogICAgIHZvaWQg
cGFpbnRCdXR0b24oQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmlu
ZGV4IDI4MTI2NGRkOGI4YzgxYzNiNzgxZWU0MmZhMDA5ZjMxMmE5ZWQ2NTEuLmVjMWY1NTJmOTUw
YzMyNjYzOGVmNjI2ZTVjYWIyYTRjYzFiMmJlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcApAQCAtMSw3ICsxLDUgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgdGhlbWUgaW1wbGVtZW50YXRpb24gZm9yIGZvcm0gY29udHJvbHMgaW4gV2ViQ29y
ZS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMCwgMjAxMiwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01OSw3ICs1Nyw5IEBACiAj
aW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2VuZGlmCiAKLS8vIFRoZSBtZXRob2RzIGlu
IHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJ5IGFsbCB0aGVtZXMgb24gZXZlcnkgcGxhdGZvcm0uCisj
aWYgVVNFKE5FV19USEVNRSkKKyNpbmNsdWRlICJUaGVtZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzIsOSArNzIsNiBAQCBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3Vz
UmluZ0NvbG9yKCkKIH0KIAogUmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKCkKLSNpZiBVU0UoTkVX
X1RIRU1FKQotICAgIDogbV90aGVtZShwbGF0Zm9ybVRoZW1lKCkpCi0jZW5kaWYKIHsKIH0KIApA
QCAtMTIyLDcgKzExOSw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICBjYXNlIEJ1dHRv
blBhcnQ6IHsKICAgICAgICAgLy8gQm9yZGVyCiAgICAgICAgIExlbmd0aEJveCBib3JkZXJCb3go
c3R5bGUuYm9yZGVyVG9wV2lkdGgoKSwgc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS5i
b3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgIGJv
cmRlckJveCA9IG1fdGhlbWUtPmNvbnRyb2xCb3JkZXIocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgYm9yZGVyQm94LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBib3JkZXJCb3gg
PSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbEJvcmRlcihwYXJ0LCBzdHlsZS5mb250Q2FzY2Fk
ZSgpLCBib3JkZXJCb3gsIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGlmIChib3Jk
ZXJCb3gudG9wKCkudmFsdWUoKSAhPSBzdGF0aWNfY2FzdDxpbnQ+KHN0eWxlLmJvcmRlclRvcFdp
ZHRoKCkpKSB7CiAgICAgICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgc3R5bGUuc2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyQm94LnRvcCgpLnZhbHVl
KCkpOwpAQCAtMTUxLDMyICsxNDgsMzIgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAg
ICB9CiAKICAgICAgICAgLy8gUGFkZGluZwotICAgICAgICBMZW5ndGhCb3ggcGFkZGluZ0JveCA9
IG1fdGhlbWUtPmNvbnRyb2xQYWRkaW5nKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxl
LnBhZGRpbmdCb3goKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgTGVuZ3RoQm94
IHBhZGRpbmdCb3ggPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFBhZGRpbmcocGFydCwgc3R5
bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFkZGluZ0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29t
KCkpOwogICAgICAgICBpZiAocGFkZGluZ0JveCAhPSBzdHlsZS5wYWRkaW5nQm94KCkpCiAgICAg
ICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94KFdURk1vdmUocGFkZGluZ0JveCkpOwogCiAgICAg
ICAgIC8vIFdoaXRlc3BhY2UKLSAgICAgICAgaWYgKG1fdGhlbWUtPmNvbnRyb2xSZXF1aXJlc1By
ZVdoaXRlU3BhY2UocGFydCkpCisgICAgICAgIGlmIChUaGVtZTo6c2luZ2xldG9uKCkuY29udHJv
bFJlcXVpcmVzUHJlV2hpdGVTcGFjZShwYXJ0KSkKICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRl
U3BhY2UoUFJFKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAg
ICAgICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6
b29tLgogICAgICAgICAvLyBGSVhNRTogQ2hlY2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0
IHRha2UgbWluLXdpZHRoL21heC13aWR0aCBpbnRvIGFjY291bnQuCi0gICAgICAgIExlbmd0aFNp
emUgY29udHJvbFNpemUgPSBtX3RoZW1lLT5jb250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLCB7IHN0eWxlLndpZHRoKCksIHN0eWxlLmhlaWdodCgpIH0sIHN0eWxlLmVmZmVjdGl2
ZVpvb20oKSk7CisgICAgICAgIExlbmd0aFNpemUgY29udHJvbFNpemUgPSBUaGVtZTo6c2luZ2xl
dG9uKCkuY29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0
aCgpLCBzdHlsZS5oZWlnaHQoKSB9LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBp
ZiAoY29udHJvbFNpemUud2lkdGggIT0gc3R5bGUud2lkdGgoKSkKICAgICAgICAgICAgIHN0eWxl
LnNldFdpZHRoKFdURk1vdmUoY29udHJvbFNpemUud2lkdGgpKTsKICAgICAgICAgaWYgKGNvbnRy
b2xTaXplLmhlaWdodCAhPSBzdHlsZS5oZWlnaHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldEhl
aWdodChXVEZNb3ZlKGNvbnRyb2xTaXplLmhlaWdodCkpOwogCiAgICAgICAgIC8vIE1pbi1XaWR0
aCAvIE1pbi1IZWlnaHQKLSAgICAgICAgTGVuZ3RoU2l6ZSBtaW5Db250cm9sU2l6ZSA9IG1fdGhl
bWUtPm1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5l
ZmZlY3RpdmVab29tKCkpOworICAgICAgICBMZW5ndGhTaXplIG1pbkNvbnRyb2xTaXplID0gVGhl
bWU6OnNpbmdsZXRvbigpLm1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2Fk
ZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAobWluQ29udHJvbFNpemUu
d2lkdGggIT0gc3R5bGUubWluV2lkdGgoKSkKICAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRo
KFdURk1vdmUobWluQ29udHJvbFNpemUud2lkdGgpKTsKICAgICAgICAgaWYgKG1pbkNvbnRyb2xT
aXplLmhlaWdodCAhPSBzdHlsZS5taW5IZWlnaHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldE1p
bkhlaWdodChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOwogCiAgICAgICAgIC8vIEZv
bnQKLSAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFy
dCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgICAg
ICBpZiAoYXV0byB0aGVtZUZvbnQgPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbEZvbnQocGFy
dCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAg
ICAgICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUg
Zm9udCwgYWxzbyBvdmVycmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGlu
ZSBoZWlnaHQuCiAgICAgICAgICAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjpp
bml0aWFsTGluZUhlaWdodCgpKTsKICAgICAgICAgICAgIGlmIChzdHlsZS5zZXRGb250RGVzY3Jp
cHRpb24odGhlbWVGb250LnZhbHVlKCkpKQpAQCAtMzA2LDcgKzMwMyw3IEBAIGJvb2wgUmVuZGVy
VGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9s
U3RhdGVzLCBjb25zCiAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0
dG9uUGFydDoKICAgICAgICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29u
dHJvbFN0YXRlcyk7Ci0gICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMs
IHBhaW50SW5mby5jb250ZXh0KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFj
dG9yLCBwYWdlU2NhbGVGYWN0b3IpOworICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQo
cGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFw
cGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZp
ZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTY4Niw3ICs2ODMsNyBA
QCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdAogaW50IFJlbmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKGNv
bnN0IFJlbmRlckJveCYgYm94KSBjb25zdAogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgcmV0
dXJuIGJveC5oZWlnaHQoKSArIGJveC5tYXJnaW5Ub3AoKSArIG1fdGhlbWUtPmJhc2VsaW5lUG9z
aXRpb25BZGp1c3RtZW50KGJveC5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgKiBib3guc3R5bGUoKS5l
ZmZlY3RpdmVab29tKCk7CisgICAgcmV0dXJuIGJveC5oZWlnaHQoKSArIGJveC5tYXJnaW5Ub3Ao
KSArIFRoZW1lOjpzaW5nbGV0b24oKS5iYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChib3guc3R5
bGUoKS5hcHBlYXJhbmNlKCkpICogYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogI2Vsc2UK
ICAgICByZXR1cm4gYm94LmhlaWdodCgpICsgYm94Lm1hcmdpblRvcCgpOwogI2VuZGlmCkBAIC03
MzAsNyArNzI3LDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3QoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgRmxvYXRSZWN0JiByZWMKIHsKICNpZiBVU0UoTkVXX1RI
RU1FKQogICAgIENvbnRyb2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVu
ZGVyZXIocmVuZGVyZXIpKTsKLSAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChy
ZW5kZXJlci5zdHlsZSgpLmFwcGVhcmFuY2UoKSwgc3RhdGVzLCByZWN0LCByZW5kZXJlci5zdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigpLmluZmxhdGVDb250
cm9sUGFpbnRSZWN0KHJlbmRlcmVyLnN0eWxlKCkuYXBwZWFyYW5jZSgpLCBzdGF0ZXMsIHJlY3Qs
IHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHJlbmRlcmVyKTsKICAgICBVTlVTRURfUEFSQU0ocmVjdCk7CkBAIC05NDUsNiArOTQyLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwg
UmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW4KIH0KIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5U
KQorCiB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLnNl
dEJveFNoYWRvdyhudWxscHRyKTsKQEAgLTk2NCw3ICs5NjIsOCBAQCBib29sIFJlbmRlclRoZW1l
OjpwYWludE1ldGVyKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlYwogewogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBNRVRF
Ul9FTEVNRU5UCiAKIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdENhcHNMb2NrSW5kaWNhdG9yU3R5
bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7
CkBAIC05NzYsNiArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRDYXBzTG9ja0luZGlj
YXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLAogfQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0QXR0YWNo
bWVudFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBj
b25zdAogewogfQpAQCAtOTg0LDkgKzk4NCwxMSBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEF0
dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSQog
ewogICAgIHJldHVybiBmYWxzZTsKIH0KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1Rf
RUxFTUVOVCkKKwogTGF5b3V0VW5pdCBSZW5kZXJUaGVtZTo6c2xpZGVyVGlja1NuYXBwaW5nVGhy
ZXNob2xkKCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKQEAgLTEwNjksNiArMTA3MSw3IEBAIHZv
aWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJl
Y3QodGlja1JlY3QpOwogICAgIH0KIH0KKwogI2VuZGlmCiAKIFNlY29uZHMgUmVuZGVyVGhlbWU6
OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MmKSBj
b25zdApAQCAtMTI4NSwxMCArMTI4OCwxMiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1J
bmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorCiBDb2xvciBSZW5kZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQog
ewogICAgIHJldHVybiBzaW5nbGV0b24oKS5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7CiB9
CisKICNlbmRpZgogCiAvLyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMgY2FuIGJl
IHR3ZWFrZWQuCkBAIC0xMzE1LDkgKzEzMjAsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJs
ZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncgog
ICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCi12b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0
b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYgYykKK3ZvaWQgUmVuZGVyVGhlbWU6OnNldEN1
c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBjdXN0b21Gb2N1
c1JpbmdDb2xvcigpID0gYzsKKyAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0gY29sb3I7CiB9
CiAKIENvbG9yIFJlbmRlclRoZW1lOjpmb2N1c1JpbmdDb2xvcigpCkBAIC0xMzQ5LDEzICsxMzU0
LDE0IEBAIFN0cmluZyBSZW5kZXJUaGVtZTo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmls
ZUxpc3QqIGZpbGVMaXN0LCBjb25zdCBGb250Q2FzCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorCiBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNv
bnN0CiB7CiAgICAgLy8gVGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3biBvbiBhIHNl
bWktdHJhbnNwYXJlbnQgb3ZlcmxheSwKICAgICAvLyBtYWtpbmcgaXQgbW9yZSB0cmFuc3BhcmVu
dCB0aGFuIGl0cyBhbHBoYSB2YWx1ZSBpbmRpY2F0ZXMuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPGNvbnN0IENvbG9yPiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSBDb2xvcigwLCAwLCAw
LCAxMDIpOwotICAgIHJldHVybiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7CisgICAgcmV0dXJu
IENvbG9yKDAsIDAsIDAsIDEwMik7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGM3MjgwMWRkZjAz
NWFmM2Y2ZTYyZTAzOTY3NWNjN2ZiYWRkNjg1MWMuLmEyOGJhYWNhN2Q1MDcyZGI2YjY0NjUwNjRl
ZmI1Mzc0ZTlkM2UyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBA
IC0yNCwxMiArMjQsNyBAQAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBvcHVw
TWVudVN0eWxlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKLQotI2lmIFVTRShORVdfVEhF
TUUpCi0jaW5jbHVkZSAiVGhlbWUuaCIKLSNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgot
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDA0LDEwICszOTksNiBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcjsKLQotI2lmIFVTRShORVdfVEhFTUUpCi0gICAgVGhlbWUqIG1fdGhl
bWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZS4KLSNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUJyZWFrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVh
a2VyLmgKaW5kZXggZDkzODkzZTk4NDllZWFjNjVkOWZlOTNhMjAzZTJmZDg3Njg0NDM0My4uNjU4
NTg3N2Y5ZDNiNDdlYTIyN2FjN2RhZmMzZjUzMzhlOTExOTgzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nl
b2sgT2ggPHNoaXZhbWlkb3dAZ21haWwuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCkBAIC0yNCw3ICsyNCw2IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbmxpbmVJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhl
YWRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCmluZGV4IDU2Y2E1ZWEzNmMyZjBiNjUzY2E2YzI5MjIzYWVhMGRhYTA4NDM1ZDku
LjQ4N2U4MjI0M2M0OGNmYTdlZDhkZWQ1OTBiYzExODQyOTYxYzU2ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNjQsMjcg
KzY0LDE3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9WaXNpYmxlUG9zaXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+
Ci0KICNpbXBvcnQgPFdlYkNvcmUvV0FLQXBwS2l0U3R1YnMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXVzaW5nIFdlYkNvcmU6OkZsb2F0UG9pbnQ7Ci11c2luZyBXZWJDb3JlOjpG
b250Q2FzY2FkZTsKLXVzaW5nIFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDsKLXVzaW5nIFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDsK
LXVzaW5nIFdlYkNvcmU6OklubGluZUJveDsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7CiB1c2lu
ZyBXZWJDb3JlOjpOb2RlOwogdXNpbmcgV2ViQ29yZTo6UG9zaXRpb247CiB1c2luZyBXZWJDb3Jl
OjpSYW5nZTsKIHVzaW5nIFdlYkNvcmU6OlJlbmRlckJsb2NrOwogdXNpbmcgV2ViQ29yZTo6UmVu
ZGVyQm94OwogdXNpbmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6UmVu
ZGVyU3R5bGU7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJUZXh0OwotdXNpbmcgV2ViQ29yZTo6Um9v
dElubGluZUJveDsKIHVzaW5nIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjsKIAogQGltcGxlbWVu
dGF0aW9uIERPTVJhbmdlIChVSUtpdEV4dGVuc2lvbnMpCkBAIC0xNjEsNyArMTUxLDcgQEAgLSAo
TlNBcnJheSAqKWJvdW5kaW5nQm94ZXMKICAgICB9CiAKICAgICBpZiAoIVtyZWN0cyBjb3VudF0p
Ci0gICAgICAgIHJlY3RzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVl
V2l0aFJlY3Q6Ym91bmRzXV07CisgICAgICAgIHJlY3RzID0gQFtbTlNWYWx1ZSB2YWx1ZVdpdGhS
ZWN0OmJvdW5kc11dOwogCiAgICAgcmV0dXJuIHJlY3RzOwogfQpAQCAtMTgyLDcgKzE3Miw3IEBA
IC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzCiAKICAgICBpZiAoIVtxdWFkcyBjb3VudF0pIHsK
ICAgICAgICAgV0tRdWFkT2JqZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2Nd
IGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXTsKLSAgICAgICAgcXVhZHMgPSBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgICAgIHF1YWRzID0gQFtxdWFk
T2JqZWN0XTsKICAgICAgICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CiAgICAgfQogCkBAIC0yNTAs
MTIgKzI0MCwxMSBAQCAtIChDR0Zsb2F0KXRleHRIZWlnaHQKIAogLSAoRE9NTm9kZSAqKWZpbmRF
eHBsb2RlZFRleHROb2RlQXRQb2ludDooQ0dQb2ludClwb2ludAogewotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGF1dG8qIHJlbmRlcmVy
ID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4o
cmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUmVuZGVyQmxvY2tGbG93KiBi
bG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIpOwotICAgIFJlbmRlclRl
eHQqIHJlbmRlclRleHQgPSBibG9jay0+ZmluZENsb3Nlc3RUZXh0QXRBYnNvbHV0ZVBvaW50KHBv
aW50KTsKKyAgICBhdXRvKiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pigq
cmVuZGVyZXIpLmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludChwb2ludCk7CiAgICAgaWYg
KHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+dGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGtp
dChyZW5kZXJUZXh0LT50ZXh0Tm9kZSgpKTsKIApAQCAtMjY2LDEwICsyNTUsOCBAQCBAZW5kCiAK
IC8vLS0tLS0tLS0tLS0tLS0tLS0KIAotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTVVJ
S2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpIAotCitAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAo
RE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKIC0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0
eUNvbnRyaWJ1dGlvbiB7IHJldHVybiAwOyB9Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERP
TUhUTUxFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKQEAgLTMwOCw3ICsy
OTUsNiBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEJvZHlFbGVtZW50IChET01VSUtpdENvbXBs
ZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9u
IHsgcmV0dXJuIDA7IH0KIEBlbmQKIAotCiAvLyBNYXhpbWFsbHkgY29tcGxleCBlbGVtZW50cwog
CiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlF
eHRlbnNpb25zKQpAQCAtMzQzLDIzICszMjksMjAgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxT
ZWxlY3RFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0cnVj
dHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KIEBlbmQKIAot
CiAvLy0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxB
cmVhRWxlbWVudCAoRE9NVUlLaXRFeHRlbnNpb25zKQogCi0tIChDR1JlY3QpYm91bmRpbmdCb3hX
aXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCistIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3du
ZXI6KERPTU5vZGUgKilvd25lcgogewogICAgIC8vIGlnbm9yZXMgdHJhbnNmb3JtcwotICAgIHJl
dHVybiBhbk93bmVyID8gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29y
ZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKKyAgICByZXR1cm4gb3duZXIg
PyBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKG93bmVyKS0+cmVu
ZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKIH0KIAotLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhP
d25lcjooRE9NTm9kZSAqKWFuT3duZXIKKy0gKFdLUXVhZClhYnNvbHV0ZVF1YWRXaXRoT3duZXI6
KERPTU5vZGUgKilvd25lcgogewotICAgIGlmIChhbk93bmVyKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBFQ0xBSVIKLSAgICAgICAgLy9XZWJDb3JlOjpGbG9hdFF1YWQgdGhlUXVhZCA9IGNvcmUoc2Vs
ZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKTsKLSAgICAgICAg
V2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0
ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOworICAgIGlmIChvd25lcikgeworICAg
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5j
b21wdXRlUmVjdChjb3JlKG93bmVyKS0+cmVuZGVyZXIoKSkpOwogICAgICAgICBXS1F1YWQgcXVh
ZDsKICAgICAgICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAg
ICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgoKSwgcmVjdC55KCkpOwpAQCAt
MzcyLDE1ICszNTUsMTUgQEAgLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9k
ZSAqKWFuT3duZXIKICAgICByZXR1cm4gemVyb1F1YWQ7CiB9CiAKLS0gKE5TQXJyYXkgKilib3Vu
ZGluZ0JveGVzV2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoTlNBcnJheSAqKWJvdW5k
aW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewotICAgIHJldHVybiBbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpbc2VsZiBib3VuZGluZ0Jv
eFdpdGhPd25lcjphbk93bmVyXV1dOworICAgIHJldHVybiBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6W3NlbGYgYm91bmRpbmdCb3hXaXRoT3duZXI6b3duZXJdXV07CiB9CiAKLS0gKE5TQXJyYXkg
KilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoTlNBcnJheSAq
KWFic29sdXRlUXVhZHNXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewotICAgIFdLUXVhZE9i
amVjdCogcXVhZE9iamVjdCA9IFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3Nl
bGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOmFuT3duZXJdXTsKLSAgICBOU0FycmF5KiAgICBxdWFk
QXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgV0tRdWFk
T2JqZWN0ICpxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpb
c2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXTsKKyAgICBOU0FycmF5ICpxdWFkQXJy
YXkgPSBAW3F1YWRPYmplY3RdOwogICAgIFtxdWFkT2JqZWN0IHJlbGVhc2VdOwogICAgIHJldHVy
biBxdWFkQXJyYXk7CiB9CkBAIC00MDUsMTMgKzM4OCwxMyBAQCBAaW1wbGVtZW50YXRpb24gRE9N
SFRNTEltYWdlRWxlbWVudCAoV2ViRE9NSFRNTEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRl
KQogCiAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiB7
Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2Fj
aGVkSW1hZ2UoKTsKKyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZElt
YWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICBhdXRvKiBp
bWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhID0gcmF3SW1hZ2VEYXRh
ID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOworICAgIGF1
dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6
IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpAQCAtNDE5LDcgKzQw
Miw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEK
IAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlICpj
YWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CisgICAgYXV0byAqY2FjaGVk
SW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgIWNhY2hlZEltYWdlLT5pbWFnZSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApp
bmRleCAwYmY4YjU5MGQyZDI3MzhlODVhMmVmNzUwODQ5MGNmN2U5YzdjZDYxLi5iMGU2MDZlOTQz
MzUzNjBmYzg4MzQyNjM3OTEzYzZhNWRiZmZiMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzAsMjYgKzMwLDI5IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5Q
YWNrYWdlLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICNpbmNs
dWRlICJGaWxlU3lzdGVtLmgiCiAjZW5kaWYKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4gUGx1Z2luUGFja2FnZUJ5TmFt
ZU1hcDsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCisKIHN0
YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6
ZSA9IDMyNzY4OwogCiBzdGF0aWMgYm9vbCBnUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVJ
c0VuYWJsZWQ7CiAKIFN0cmluZyYgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjYWNoZVBhdGgs
ICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjYWNoZVBhdGg7CiAgICAg
cmV0dXJuIGNhY2hlUGF0aDsKIH0KKwogI2VuZGlmCiAKIFBsdWdpbkRhdGFiYXNlOjpQbHVnaW5E
YXRhYmFzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAppbmRleCAxMjAxMmUwMmZlN2RhYmIw
OTBiMWM3MmIyOTZiODVmOTkzZjAzNzc2Li5kYTEzMTQ3N2U2NDlkOWIwOWJjNDQ3ZmM1MmY1Y2I3
NjFmMWVlZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKQEAgLTMwLDggKzMwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyJiBQbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5F
X1NUQVRJQ19MT0NBTChQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLCBzY2hlZHVsZXIsICgpKTsK
LQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyPiBz
Y2hlZHVsZXI7CiAgICAgcmV0dXJuIHNjaGVkdWxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKaW5kZXggMzFhMDhlODU3Mjg0NGQ2ZDZmN2EzYmMyOTBiZjgyNTI3ZjgyNGMz
YS4uM2E5OGM2ZjY2MDY3MWZkYzBiODI5Yzk4MjhjOGE5MmMwY2NmMDI5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7Ci0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2llcywg
cGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBs
YXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1TdHJhdGVnaWVzOwogfQogCiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykhpc3RvcnkuY3BwCmluZGV4IGFhZTk5ZWI1MjI5MTk0MDA2MjU3OTljNWI3MGQyMTZiMjM3OGM1
NWYuLjIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5NTdjMTBhMGRmYWZmOGIzMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC0yMzYsOSArMjM2LDkgQEAgVUxPTkcgV2Vi
SGlzdG9yeTo6UmVsZWFzZSgpCiAKIC8vIElXZWJIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGlu
bGluZSBDT01QdHI8V2ViSGlzdG9yeT4mIHNoYXJlZEhpc3RvcnlTdG9yYWdlKCkKK3N0YXRpYyBD
T01QdHI8V2ViSGlzdG9yeT4mIHNoYXJlZEhpc3RvcnlTdG9yYWdlKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ09NUHRyPFdlYkhpc3Rvcnk+LCBzaGFyZWRIaXN0b3J5
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENPTVB0cjxXZWJIaXN0b3J5Pj4gc2hh
cmVkSGlzdG9yeTsKICAgICByZXR1cm4gc2hhcmVkSGlzdG9yeTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggOGZmMGVm
Y2M4YTU4NmFlMTNjODI5ODZjN2RlZDBkMDQyOTVmYWMwZi4uYjc1NzM5MTU5ZmVmZDIxZWQ2ZmEz
MzY4ODgwYTE5YjliYzE0MjFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBAIC00NywyNSArNDcsMjUgQEAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgTG9jYWxpemVkU3RyaW5nKj4gTG9jYWxpemVkU3RyaW5nTWFwOwogCiBzdGF0
aWMgTG9jayYgbWFpbkJ1bmRsZUxvY1N0cmluZ3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKExvY2ssIG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPExvY2s+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIExvY2Fs
aXplZFN0cmluZ01hcCYgbWFpbkJ1bmRsZUxvY1N0cmluZ3MoKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChMb2NhbGl6ZWRTdHJpbmdNYXAsIG1hcCwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NhbGl6ZWRTdHJpbmdNYXA+IG1hcDsKICAgICByZXR1cm4g
bWFwOwogfQogCiBzdGF0aWMgTG9jayYgZnJhbWV3b3JrTG9jU3RyaW5nc011dGV4KCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTG9jaywgbXV0ZXgsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4gbXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQog
CiBzdGF0aWMgTG9jYWxpemVkU3RyaW5nTWFwIGZyYW1ld29ya0xvY1N0cmluZ3MoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NhbGl6ZWRTdHJpbmdNYXAsIG1hcCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NhbGl6ZWRTdHJpbmdNYXA+IG1hcDsK
ICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4
IGQwNjZkM2FhMTA4OTVmNmI2MGZhYTdlODU3OTNkMzcxMjc2NGNlNjQuLjliNzgzMTEwZmU2MzI0
Njg1YjZlM2IxY2UyNzc2MGRiNjE4YWFmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCkBAIC0yMjYsMTcgKzIyNiwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBKU0M6OkpTTG9jazsKIAorc3RhdGljIFN0cmluZyB3ZWJL
aXRWZXJzaW9uU3RyaW5nKCk7CisKK3N0YXRpYyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hl
RGVmYXVsdHNLZXkgPSBDRlNUUigiV2ViS2l0TG9jYWxDYWNoZSIpOworCiBzdGF0aWMgSE1PRFVM
RSBhY2Nlc3NpYmlsaXR5TGliOworCiBzdGF0aWMgSGFzaFNldDxXZWJWaWV3Kj4mIHBlbmRpbmdE
ZWxldGVCYWNraW5nU3RvcmVTZXQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFdlYlZpZXcqPj4gcGVuZGluZ0RlbGV0ZUJhY2tpbmdTdG9yZVNldDsKICAgICByZXR1cm4g
cGVuZGluZ0RlbGV0ZUJhY2tpbmdTdG9yZVNldDsKIH0KIAotc3RhdGljIENGU3RyaW5nUmVmIFdl
YktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSA9IENGU1RSKCJXZWJLaXRMb2NhbENhY2hlIik7Ci0K
LXN0YXRpYyBTdHJpbmcgd2ViS2l0VmVyc2lvblN0cmluZygpOwotCiBXZWJWaWV3KiBraXQoUGFn
ZSogcGFnZSkKIHsKICAgICBpZiAoIXBhZ2UpCkBAIC0xNTU1LDEwICsxNTU2LDggQEAgYm9vbCBX
ZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIAogU3RyaW5nIFdlYlZpZXc6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0
aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBvc1ZlcnNpb24sICh3aW5kb3dzVmVyc2lvbkZv
clVBU3RyaW5nKCkpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB3ZWJLaXRWZXJzaW9uLCAod2ViS2l0VmVyc2lvblN0cmluZygpKSk7Ci0KLSAgICByZXR1cm4g
bWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIsIG9zVmVyc2lvbiwgIikgQXBwbGVXZWJLaXQvIiwg
d2ViS2l0VmVyc2lvbiwgIiAoS0hUTUwsIGxpa2UgR2Vja28pIiwgYXBwbGljYXRpb25OYW1lLmlz
RW1wdHkoKSA/ICIiIDogIiAiLCBhcHBsaWNhdGlvbk5hbWUpOworICAgIHN0YXRpYyBjb25zdCBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IHByZWZpeCA9IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgi
LCB3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5nKCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZl
cnNpb25TdHJpbmcoKSwgIiAoS0hUTUwsIGxpa2UgR2Vja28pIik7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcocHJlZml4LmdldCgpLCBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiAiICIs
IGFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKIFBhZ2UqIFdlYlZpZXc6OnBhZ2UoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJlODg4ODQ1MDE5MGM5
YjRjOWRjNWU1YjhkZjJmZjJiYWZjZGY1NDIuLjRkNzZkNjM4YmNjYTJjZmY4MTYzNmI3ZWMxNDkw
NzJlY2E4MWI4NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNy0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3llZCBhbmQgcmxlYXRlZCBjbGVh
bnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwOgorICAgICAgICAoamF2YVNjcmlw
dFRocmVhZHNNdXRleCk6CisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6CisKIDIwMTctMDct
MjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dU
Rl0gRXh0ZW5kIFRocmVhZEdyb3VwOjphZGQgcmVzdWx0cyBmcm9tIGJvb2wgdG8gVGhyZWFkR3Jv
dXBBZGRSZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAKaW5kZXggMmVhZmJiZWJmYjViYjk5ZGIxNmJlNGE2NDBmZjU0ZDMwNmYxODVmOS4uOTJkYTdl
MTk3OGM1ZDAzOGU2YmI5OTk1ZTRiMjA1YTIyMWQ5YTY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICogICAgICAgICAgIChDKSAyMDEyIFBhdHJpY2sgR2Fuc3RlcmUgPHBhcm9nYUBw
YXJvZ2EuY29tPgpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQ3LDE0ICs0OCwxNCBAQCBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlw
dFRocmVhZHNHcm91cDsKIAogc3RhdGljIExvY2smIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBzdGF0aWNNdXRleCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBzdGF0aWNNdXRleDsKICAgICBy
ZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VGhyZWFkPj4g
VGhyZWFkU2V0Owogc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3Jp
cHRUaHJlYWRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZFNldD4gc3Rh
dGljSmF2YVNjcmlwdFRocmVhZHM7CiAgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkudHJ5TG9jaygpKTsKICAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316201</attachid>
            <date>2017-07-22 10:42:37 -0700</date>
            <delta_ts>2017-07-23 13:20:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170722104237.patch</filename>
            <type>text/plain</type>
            <size>111520</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBjNGVkOGRmYjI3Y2Ni
MjljZmY5YTc3N2Q1ZDRmNzgxNGI3MGYzNi4uNmQzZDBlMzNiMjc2OWZlYzY0ZDA1ODhhODZlMjky
ZGU4ZTBmZWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxNy0wNy0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOgorICAg
ICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6UXVhbGlmaWVkTmFtZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZTo6aGFzUHJlZml4KToKKyAgICAgICAgKiBodG1sL0F1dG9maWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZExvY2FsTmFtZVRvU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1l
bnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50
TmFtZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEJlRXhwb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6dXBkYXRlRXhwb3NlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2du
aXplZFRhZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRy
b2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
OjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9s
Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUGFkZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjp+VGhlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OlRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEhhc0luYWN0aXZlQXBwZWFyYW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbHNDYW5IYXZlSW5hY3RpdmVBcHBl
YXJhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sc0Nhbkhh
dmVIb3ZlcmVkQXBwZWFyYW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
Y29udHJvbERyYXdzQm9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpj
b250cm9sRHJhd3NCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojpjb250cm9sRHJhd3NGb2N1c091dGxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnNlbGVjdGlvbkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojp0ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnN5c3RlbUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpz
eXN0ZW1Gb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjYXJldEJsaW5r
SW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRoZW1lQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZUNvY29hOjpUaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
ZW1lQ29jb2E6On5UaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9UaGVtZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFk
c0dsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhP
dmVyZmxvdzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpleHRl
bmRUbyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoT3ZlcmZsb3c6OkdseXBoT3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlU3Rh
cnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VEdXJhdGlvbktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OnNpbmdsZXRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RS
ZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OlRoZW1lSU9TKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lSU9TOjp+VGhlbWVJT1MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6VGhl
bWVNYWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6On5UaGVtZU1hYyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjppbmZsYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJvbEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjpjb250cm9sQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9s
UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QpOgorICAgICAgICAoLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VO
ZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
VGhlbWVXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVXUEU6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93cGUvVGhlbWVXUEUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lV1BFOjpUaGVtZVdQ
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZVdQRTo6flRoZW1lV1BFKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisKIDIwMTctMDctMTQgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJdCBzaG91bGQgYmUgZWFzeSB0byBk
ZWNpZGUgaG93IFdlYktpdCB5aWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBk
NThiYTI0YWZhYTAzODA4M2VlODc1ZTcxNThhMjc2Y2MzZjk3MzIyLi4xZTYyOTVlZWQyNzU0ZGEy
YzI1M2VmZmMzYzA0MDM1MDNmODVkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTctMDctMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95ZWQgYW5kIHJlbGF0ZWQgY2xlYW51cAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBlcnNpc3RlbnRQbHVnaW5NZXRh
ZGF0YUNhY2hlUGF0aCk6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNj
aGVkdWxlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChzaGFyZWRIaXN0b3J5U3RvcmFnZSk6Cisg
ICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAgKG1haW5CdW5kbGVM
b2NTdHJpbmdzKToKKyAgICAgICAgKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCk6CisgICAgICAg
IChmcmFtZXdvcmtMb2NTdHJpbmdzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisKIDIwMTct
MDctMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBt
b3JlIHJlZmVyZW5jZXMgaW4gZXZlbnQgZGlzcGF0Y2ggY29kZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXgg
YzYwYjA1YTdmNTA5OWRlNWM2M2E3ODk1YjhkMzAyNDMzZTgzNzViZC4uZjcxMjBmYjZmYTVkMDU5
OWUyMjhhMzQyNTgwMGM5YWQzMjlkYWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1l
bnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvCiBSZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKIHsKICAgICBpZiAoYXV0byBlbGVtZW50ID0g
dHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KGRvY3VtZW50LCBuYW1lLmxvY2FsTmFtZSgpKSkg
ewotICAgICAgICBpZiAobmFtZS5wcmVmaXgoKSAhPSBudWxsQXRvbSgpKQorICAgICAgICBpZiAo
IW5hbWUucHJlZml4KCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBlbGVtZW50LT5zZXRQcmVmaXgo
bmFtZS5wcmVmaXgoKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4
IGZkYjJkOTY4Yzc3YWFhZGQ3NzMwNzY1MmU5Y2E2N2Q0ODZhODE1NzUuLjg3M2RiOWQ3YjM1NTZl
ZDBhNzZlZDIzN2M4ZTIwMGQ5OTFmNDA2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHAKQEAgLTY4MywxNCArNjgzLDE4IEBAIHN0YXRpYyBib29sIHByZWZl
cnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0
aENvbnZlCiB7CiAgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBmYWxzZTsKIAot
ICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNz
aWJpbGl0eVZhbHVlKCkgPT0gU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T24p
CisgICAgc3dpdGNoIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
QWNjZXNzaWJpbGl0eVZhbHVlKCkpIHsKKyAgICBjYXNlIFNldHRpbmdzOjpGb3JjZWRBY2Nlc3Np
YmlsaXR5VmFsdWU6Ok9uOgogICAgICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSB0cnVl
OwotICAgIGVsc2UgaWYgKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rp
b25BY2Nlc3NpYmlsaXR5VmFsdWUoKSA9PSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZh
bHVlOjpPZmYpCi0gICAgICAgIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOwotI2lm
IFBMQVRGT1JNKElPUykgfHwgVVNFKE5FV19USEVNRSkKLSAgICBlbHNlCi0gICAgICAgIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IHBsYXRmb3JtVGhlbWUoKS0+dXNlclByZWZlcnNSZWR1Y2Vk
TW90aW9uKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6T2ZmOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldHRpbmdzOjpG
b3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6OlN5c3RlbToKKyNpZiBVU0UoTkVXX1RIRU1FKQorICAg
ICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBUaGVtZTo6c2luZ2xldG9uKCkudXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKCk7CiAjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCmluZGV4IDA4ZmEyYjY5NGNmMzRjOWNjODUyOTg0
NjNhMzM0OTZmNzdiNWU3ZWUuLjJmMzhjMTk4NDUxODBjYTE2ZTRkMTdmNDg0ZWQ0NDQzM2I5OTky
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw5ICsyMCw3IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ1LDcgQEAg
cHVibGljOgogCiAgICAgICAgIHVuc2lnbmVkIGNvbXB1dGVIYXNoKCkgY29uc3Q7CiAKLSAgICAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX2V4aXN0aW5nSGFzaDsKKyAgICAgICAgbXV0YWJsZSB1bnNp
Z25lZCBtX2V4aXN0aW5nSGFzaCB7IDAgfTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1f
cHJlZml4OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9sb2NhbE5hbWU7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWVzcGFjZTsKQEAgLTU2LDEyICs1NCwxMSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBsb2NhbE5hbWVN
ZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUXVhbGlmaWVkTmFtZUltcGws
IG1fbG9jYWxOYW1lKTsgfQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IG5hbWVzcGFjZU1lbW9y
eU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lSW1wbCwgbV9u
YW1lc3BhY2UpOyB9Ci0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKKyNlbmRpZgogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUXVhbGlmaWVkTmFtZUltcGwoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgs
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVz
cGFjZVVSSSkKLSAgICAgICAgICAgIDogbV9leGlzdGluZ0hhc2goMCkKLSAgICAgICAgICAgICwg
bV9wcmVmaXgocHJlZml4KQorICAgICAgICAgICAgOiBtX3ByZWZpeChwcmVmaXgpCiAgICAgICAg
ICAgICAsIG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkKICAgICAgICAgICAgICwgbV9uYW1lc3BhY2Uo
bmFtZXNwYWNlVVJJKQogICAgICAgICB7CkBAIC04MSw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pbXBsID09IG90aGVyLm1faW1wbCB8fCAobG9jYWxOYW1lKCkgPT0gb3RoZXIubG9jYWxOYW1l
KCkgJiYgbmFtZXNwYWNlVVJJKCkgPT0gb3RoZXIubmFtZXNwYWNlVVJJKCkpOyB9CiAKLSAgICBi
b29sIGhhc1ByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXggIT0gbnVsbEF0
b20oKTsgfQorICAgIGJvb2wgaGFzUHJlZml4KCkgY29uc3QgeyByZXR1cm4gIW1faW1wbC0+bV9w
cmVmaXguaXNOdWxsKCk7IH0KICAgICB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCkgeyAqdGhpcyA9IFF1YWxpZmllZE5hbWUocHJlZml4LCBsb2NhbE5hbWUoKSwgbmFt
ZXNwYWNlVVJJKCkpOyB9CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1wbC0+bV9wcmVmaXg7IH0KQEAgLTk2LDcgKzkzLDcgQEAgcHVibGljOgog
ICAgIFF1YWxpZmllZE5hbWVJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgp
OyB9CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IGltcGxNZW1vcnlPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUXVhbGlmaWVkTmFtZSwgbV9pbXBsKTsgfQot
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYKICAgICAKICAgICAvLyBJbml0IHJvdXRpbmUg
Zm9yIGdsb2JhbHMKICAgICBzdGF0aWMgdm9pZCBpbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2ZpbGwu
Y3BwCmluZGV4IDVhMWFhZDM0NmUyMzYzZGY0OTU2YWU2ZDdhNzQwOWNmZjAxYTdmNmMuLmUzMTM0
MTk4NDgwZWRiZmYxODk4Y2IxNjY5ZGJmYjJmNWJjMjg4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2ZpbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2Zp
bGwuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgQXV0b2ZpbGxEYXRhIEF1dG9maWxsRGF0YTo6Y3Jl
YXRlRnJvbUhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgSFRNTEZvcm1Db250cm8KICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0cik7CiAKICAgICAv
LyAxLiBJZiB0aGUgZWxlbWVudCBoYXMgbm8gYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSwgdGhlbiBq
dW1wIHRvIHRoZSBzdGVwIGxhYmVsZWQgZGVmYXVsdC4KLSAgICBpZiAoYXR0cmlidXRlVmFsdWUg
PT0gbnVsbEF0b20oKSkKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBkZWZhdWx0TGFiZWwoKTsKIAogICAgIC8vIDIuIExldCB0b2tlbnMgYmUgdGhlIHJl
c3VsdCBvZiBzcGxpdHRpbmcgdGhlIGF0dHJpYnV0ZSdzIHZhbHVlIG9uIHNwYWNlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBlMzA1YzQ4MjIzNmI1NGZmNTA4Njc4Y2Jk
MTE4MTkxYzFkNmQyMDc2Li5jYmRmZGQzZWZjYWFkYWY4ZmJmNDAwYjZjMjU0ODBhNDNhZWQzMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC0xMTEsNjYgKzExMSw2IEBA
IFJlZjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogICAgIHJl
dHVybiBIVE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKLXN0YXRpYyB2b2lk
IGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZXQsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHFOYW1lKQotewotICAgIHNldC0+YWRkKHFOYW1lLmxvY2FsTmFtZSgp
LmltcGwoKSk7Ci19Ci0KLXN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogY3JlYXRl
SHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQoKQotewotICAgIC8vIFRoaXMgaXMgdGhl
IGxpc3Qgb2YgYXR0cmlidXRlcyBpbiBIVE1MIDQuMDEgd2l0aCB2YWx1ZXMgbWFya2VkIGFzICJb
Q0ldIiBvciBjYXNlLWluc2Vuc2l0aXZlCi0gICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVy
IHZhbHVlcyBhcyBjYXNlLXNlbnNpdGl2ZSwgdGh1cyBzbyBkbyB3ZS4KLSAgICBIYXNoU2V0PEF0
b21pY1N0cmluZ0ltcGwqPiogYXR0clNldCA9IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwq
PjsKLQotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFjY2VwdF9jaGFyc2V0QXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYWNjZXB0QXR0cik7Ci0gICAgYWRkTG9j
YWxOYW1lVG9TZXQoYXR0clNldCwgYWxpZ25BdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBhbGlua0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGF4aXNB
dHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBiZ2NvbG9yQXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY2hhcnNldEF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIGNoZWNrZWRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBjbGVhckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNvZGV0eXBl
QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29sb3JBdHRyKTsKLSAgICBh
ZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBjb21wYWN0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1l
VG9TZXQoYXR0clNldCwgZGVjbGFyZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJT
ZXQsIGRlZmVyQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGlyQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGlzYWJsZWRBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBlbmN0eXBlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9T
ZXQoYXR0clNldCwgZmFjZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGZy
YW1lQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgaHJlZmxhbmdBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBodHRwX2VxdWl2QXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbGFuZ0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIGxhbmd1YWdlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
bGlua0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG1lZGlhQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbWV0aG9kQXR0cik7Ci0gICAgYWRkTG9jYWxO
YW1lVG9TZXQoYXR0clNldCwgbXVsdGlwbGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBub2hyZWZBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBub3Jl
c2l6ZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vc2hhZGVBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBub3dyYXBBdHRyKTsKLSAgICBhZGRMb2Nh
bE5hbWVUb1NldChhdHRyU2V0LCByZWFkb25seUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIHJlbEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHJldkF0
dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHJ1bGVzQXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2NvcGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCBzY3JvbGxpbmdBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0
LCBzZWxlY3RlZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNoYXBlQXR0
cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdGFyZ2V0QXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdGV4dEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIHR5cGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2YWxp
Z25BdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2YWx1ZXR5cGVBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB2bGlua0F0dHIpOwotCi0gICAgcmV0dXJu
IGF0dHJTZXQ7Ci19Ci0KIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2RvbS5odG1sI2RvbS1kb2N1bWVudC1uYW1lZGl0ZW0KIHN0ZDo6b3B0aW9uYWw8VmFyaWFudDxS
ZWZQdHI8RE9NV2luZG93PiwgUmVmUHRyPEVsZW1lbnQ+LCBSZWZQdHI8SFRNTENvbGxlY3Rpb24+
Pj4gSFRNTERvY3VtZW50OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewpA
QCAtMjM1LDkgKzE3NSw2NCBAQCB2b2lkIEhUTUxEb2N1bWVudDo6cmVtb3ZlV2luZG93TmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIG5hbWUsIEVsZW1lbnQmCiAKIGJvb2wgSFRNTERv
Y3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKIHsKLSAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGh0
bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0ID0gY3JlYXRlSHRtbENhc2VJbnNlbnNpdGl2
ZUF0dHJpYnV0ZXNTZXQoKTsKLSAgICBib29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1
dGVOYW1lLmhhc1ByZWZpeCgpICYmIChhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpID09IG51
bGxBdG9tKCkpOwotICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFodG1sQ2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlc1NldC0+Y29udGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUo
KS5pbXBsKCkpOworICAgIHN0YXRpYyBjb25zdCBhdXRvIGNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxp
c3Qgb2YgYXR0cmlidXRlcyBpbiBIVE1MIDQuMDEgd2l0aCB2YWx1ZXMgbWFya2VkIGFzICJbQ0ld
IiBvciBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgIC8vIE1vemlsbGEgdHJlYXRzIGFsbCBvdGhl
ciB2YWx1ZXMgYXMgY2FzZS1zZW5zaXRpdmUsIHRodXMgc28gZG8gd2UuCisgICAgICAgIHN0YXRp
YyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCBuYW1lc1tdID0geworICAgICAgICAgICAgJmFj
Y2VwdF9jaGFyc2V0QXR0ciwKKyAgICAgICAgICAgICZhY2NlcHRBdHRyLAorICAgICAgICAgICAg
JmFsaWduQXR0ciwKKyAgICAgICAgICAgICZhbGlua0F0dHIsCisgICAgICAgICAgICAmYXhpc0F0
dHIsCisgICAgICAgICAgICAmYmdjb2xvckF0dHIsCisgICAgICAgICAgICAmY2hhcnNldEF0dHIs
CisgICAgICAgICAgICAmY2hlY2tlZEF0dHIsCisgICAgICAgICAgICAmY2xlYXJBdHRyLAorICAg
ICAgICAgICAgJmNvZGV0eXBlQXR0ciwKKyAgICAgICAgICAgICZjb2xvckF0dHIsCisgICAgICAg
ICAgICAmY29tcGFjdEF0dHIsCisgICAgICAgICAgICAmZGVjbGFyZUF0dHIsCisgICAgICAgICAg
ICAmZGVmZXJBdHRyLAorICAgICAgICAgICAgJmRpckF0dHIsCisgICAgICAgICAgICAmZGlzYWJs
ZWRBdHRyLAorICAgICAgICAgICAgJmVuY3R5cGVBdHRyLAorICAgICAgICAgICAgJmZhY2VBdHRy
LAorICAgICAgICAgICAgJmZyYW1lQXR0ciwKKyAgICAgICAgICAgICZocmVmbGFuZ0F0dHIsCisg
ICAgICAgICAgICAmaHR0cF9lcXVpdkF0dHIsCisgICAgICAgICAgICAmbGFuZ0F0dHIsCisgICAg
ICAgICAgICAmbGFuZ3VhZ2VBdHRyLAorICAgICAgICAgICAgJmxpbmtBdHRyLAorICAgICAgICAg
ICAgJm1lZGlhQXR0ciwKKyAgICAgICAgICAgICZtZXRob2RBdHRyLAorICAgICAgICAgICAgJm11
bHRpcGxlQXR0ciwKKyAgICAgICAgICAgICZub2hyZWZBdHRyLAorICAgICAgICAgICAgJm5vcmVz
aXplQXR0ciwKKyAgICAgICAgICAgICZub3NoYWRlQXR0ciwKKyAgICAgICAgICAgICZub3dyYXBB
dHRyLAorICAgICAgICAgICAgJnJlYWRvbmx5QXR0ciwKKyAgICAgICAgICAgICZyZWxBdHRyLAor
ICAgICAgICAgICAgJnJldkF0dHIsCisgICAgICAgICAgICAmcnVsZXNBdHRyLAorICAgICAgICAg
ICAgJnNjb3BlQXR0ciwKKyAgICAgICAgICAgICZzY3JvbGxpbmdBdHRyLAorICAgICAgICAgICAg
JnNlbGVjdGVkQXR0ciwKKyAgICAgICAgICAgICZzaGFwZUF0dHIsCisgICAgICAgICAgICAmdGFy
Z2V0QXR0ciwKKyAgICAgICAgICAgICZ0ZXh0QXR0ciwKKyAgICAgICAgICAgICZ0eXBlQXR0ciwK
KyAgICAgICAgICAgICZ2YWxpZ25BdHRyLAorICAgICAgICAgICAgJnZhbHVldHlwZUF0dHIsCisg
ICAgICAgICAgICAmdmxpbmtBdHRyLAorICAgICAgICB9OworICAgICAgICBIYXNoU2V0PEF0b21p
Y1N0cmluZz4gc2V0OworICAgICAgICBmb3IgKGF1dG8qIG5hbWUgOiBuYW1lcykKKyAgICAgICAg
ICAgIHNldC5hZGQobmFtZS0+bG9jYWxOYW1lKCkpOworICAgICAgICByZXR1cm4gc2V0OworICAg
IH0oKSk7CisKKyAgICBib29sIGlzUG9zc2libGVIVE1MQXR0ciA9ICFhdHRyaWJ1dGVOYW1lLmhh
c1ByZWZpeCgpICYmIGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCk7CisgICAg
cmV0dXJuICFpc1Bvc3NpYmxlSFRNTEF0dHIgfHwgIWNhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVNl
dC5nZXQoKS5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKTsKIH0KIAogYm9vbCBI
VE1MRG9jdW1lbnQ6OmlzRnJhbWVTZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCBlZTQzZGQyNDUxYjAzMjBm
ZDU3OTc4YzQ4NTYxYWEwZDI0N2I3MGIyLi5iN2I3ZTA1MjRmZWMxNjYyMGQyYTBlODc5NDFiNjg0
NjBjZWM1MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBhdXRvIGNh
Y2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAK
ICAgICBib29sIG93bmVySXNGb3JtRWxlbWVudCA9IGlzPEhUTUxGb3JtRWxlbWVudD4ob3duZXJO
b2RlKCkpOwotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGZvdW5kSW5wdXRFbGVtZW50
czsKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gZm91bmRJbnB1dEVsZW1lbnRzOwogCiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50UHRyIDogZm9ybUNvbnRyb2xFbGVtZW50cygpKSB7CiAgICAgICAg
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgYXNzb2NpYXRlZEVsZW1lbnQgPSAqZWxlbWVudFB0cjsK
QEAgLTEyOCwxMyArMTI4LDEzIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICAgICAgICAgIGlmICghaWQuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShpZCwgZWxlbWVu
dCk7CiAgICAgICAgICAgICAgICAgaWYgKG93bmVySXNGb3JtRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChpZC5pbXBsKCkpOworICAgICAgICAgICAg
ICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpOwogICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSAmJiBpZCAhPSBuYW1lKSB7CiAg
ICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvTmFtZUNhY2hlKG5hbWUsIGVsZW1lbnQpOwog
ICAgICAgICAgICAgICAgIGlmIChvd25lcklzRm9ybUVsZW1lbnQpCi0gICAgICAgICAgICAgICAg
ICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQobmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
ICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTQyLDEwICsxNDIsMTAgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgICAgICBmb3IgKGF1
dG8qIGVsZW1lbnRQdHIgOiBmb3JtSW1hZ2VFbGVtZW50cygpKSB7CiAgICAgICAgICAgICBIVE1M
SW1hZ2VFbGVtZW50JiBlbGVtZW50ID0gKmVsZW1lbnRQdHI7CiAgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOwotICAgICAgICAgICAg
aWYgKCFpZC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhpZC5pbXBs
KCkpKQorICAgICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkgJiYgIWZvdW5kSW5wdXRFbGVtZW50
cy5jb250YWlucyhpZCkpCiAgICAgICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShp
ZCwgZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBlbGVt
ZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkg
JiYgaWQgIT0gbmFtZSAmJiAhZm91bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWUuaW1wbCgp
KSkKKyAgICAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFtZSAmJiAhZm91
bmRJbnB1dEVsZW1lbnRzLmNvbnRhaW5zKG5hbWUpKQogICAgICAgICAgICAgICAgIGNhY2hlLT5h
cHBlbmRUb05hbWVDYWNoZShuYW1lLCBlbGVtZW50KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCA2ZTIwM2FlZmI0NThj
Mjk0M2ExOGU5OTY1MDFkMTgwNTU0ZmZiNDdlLi5kMTBjMzdmYjIyODgxYzEzYzMwZjA3YzdiOTM0
ZjkzMjc1NDZmMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
Y3BwCkBAIC00MSw0NSArNDEsNDkgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogYm9v
bCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBpczxIVE1MSW1hZ2VFbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxB
cHBsZXRFbGVtZW50PihlbGVtZW50KQotICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVtZW50Pihl
bGVtZW50KSB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CisgICAgcmV0dXJuIGlz
PEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVt
ZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpCisg
ICAgICAgIHx8IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KTsKIH0KIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCogbmFtZSkKIHsKLSAgICAvLyBGaW5kIG9ubHkgaW1hZ2VzLCBmb3JtcywgYXBwbGV0
cywgZW1iZWRzIGFuZCBvYmplY3RzIGJ5IG5hbWUsIGJ1dCBhbnl0aGluZyBieSBpZAotICAgIGlm
IChlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQu
Z2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOworICAg
IC8vIEZpbmQgb25seSBpbWFnZXMsIGZvcm1zLCBhcHBsZXRzLCBlbWJlZHMgYW5kIG9iamVjdHMg
YnkgbmFtZSwgYnV0IGFueXRoaW5nIGJ5IGlkLgorICAgIHJldHVybiAoZWxlbWVudE1hdGNoZXNJ
Zk5hbWVBdHRyaWJ1dGVNYXRjaChlbGVtZW50KSAmJiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gbmFtZSkKKyAgICAgICAgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09
IG5hbWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlz
PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkuaXNFeHBvc2VkKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1
cGRhdGUgdGhlIGhhc2ggbWFwIGZvciB1cyB3aGVuIG5hbWUgYXR0cmlidXRlIGhhcyBiZWVuIHJl
bW92ZWQuCi0gICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8
SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50
PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpKQorICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGZp
eCBIVE1MSW1hZ2VFbGVtZW50IHRvIHVwZGF0ZSB0aGUgaGFzaCBtYXAgZm9yIHVzIHdoZW4gdGhl
IG5hbWUgYXR0cmlidXRlIGlzIHJlbW92ZWQuCisgICAgcmV0dXJuIGlzT2JqZWN0RWxlbWVudEZv
ckRvY3VtZW50TmFtZUNvbGxlY3Rpb24oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEFwcGxl
dEVsZW1lbnQ+KGVsZW1lbnQpCiAgICAgICAgIHx8IChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVt
ZW50KSAmJiBlbGVtZW50Lmhhc05hbWUoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVj
dGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBl
bGVtZW50KQogewotICAgIHJldHVybiBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVt
ZW50KQotICAgICAgICB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkKKyAgICByZXR1cm4gaXNPYmplY3RFbGVtZW50Rm9y
RG9jdW1lbnROYW1lQ29sbGVjdGlvbihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MQXBwbGV0
RWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVu
dCkKKyAgICAgICAgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBp
czxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkKICAgICAgICAgfHwgaXM8SFRNTEltYWdlRWxl
bWVudD4oZWxlbWVudCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVu
dE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCog
bmFtZSkKIHsKICAgICAvLyBGaW5kIGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcywgb2Jq
ZWN0cyBhbmQgaWZyYW1lcyBieSBuYW1lLCBhcHBsZXRzIGFuZCBvYmplY3QgYnkgaWQsIGFuZCBp
bWFnZXMgYnkgaWQKLSAgICAvLyBidXQgb25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0
ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVsZSBtYXRjaGVzIElFKQotICAgIGlmIChpczxIVE1MRm9y
bUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0
TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChpczxIVE1MQXBwbGV0RWxl
bWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUo
KS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5h
bWU7Ci0gICAgaWYgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0
dXJuIChlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50
LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RF
bGVtZW50PihlbGVtZW50KS5pc0RvY05hbWVkSXRlbSgpOwotICAgIGlmIChpczxIVE1MSW1hZ2VF
bGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0
ZSgpLmltcGwoKSA9PSBuYW1lIHx8IChlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBi
dXQgb25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2Ug
cnVsZSBtYXRjaGVzIElFKS4KKyAgICByZXR1cm4gKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09
IG5hbWUpCisgICAgICAgIHx8IChlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChlbGVt
ZW50KSAmJiBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQzYWJjMDJl
ZDc5NDIwYmMwNjdjNWMwOWNhZGQyZTQ2Y2VhYjkzZmIuLmNmMjA2N2RjZDgyMGMzMmUwMWU0MTRl
ZWYyYWMzMmYyNWQyYWEyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC02Myw4ICs2Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxp
bmUgSFRNTE9iamVjdEVsZW1lbnQ6OkhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikKICAgICAsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dChmb3JtKQotICAgICwgbV9kb2NOYW1lZEl0ZW0odHJ1ZSkKLSAgICAsIG1fdXNlRmFsbGJhY2tD
b250ZW50KGZhbHNlKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKG9iamVjdFRhZykpOwogfQpA
QCAtMzM3LDggKzMzNSw4IEBAIHZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICB1cGRhdGVE
b2NOYW1lZEl0ZW0oKTsKLSAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiAhdXNlRmFsbGJhY2tDb250
ZW50KCkpIHsKKyAgICB1cGRhdGVFeHBvc2VkU3RhdGUoKTsKKyAgICBpZiAoaXNDb25uZWN0ZWQo
KSAmJiAhbV91c2VGYWxsYmFja0NvbnRlbnQpIHsKICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRh
dGUodHJ1ZSk7CiAgICAgICAgIGludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICB9CkBA
IC0zNTcsNyArMzU1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MT2JqZWN0RWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJG
YWxsYmFja0NvbnRlbnQoKQogewotICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKKyAgICBp
ZiAobV91c2VGYWxsYmFja0NvbnRlbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAo
IWlzQ29ubmVjdGVkKCkpCkBAIC0zODUsNzMgKzM4Myw4MSBAQCB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50OjpyZW5kZXJGYWxsYmFja0NvbnRlbnQoKQogICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOwogfQogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCwgYWxsIGNh
bGxlcnMgYXJlIGFsbW9zdCBjZXJ0YWlubHkgd3JvbmcuCi1zdGF0aWMgYm9vbCBpc1JlY29nbml6
ZWRUYWdOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpCitzdGF0aWMgaW5saW5lIGJv
b2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29uc3QgRWxlbWVudCYgY2hpbGQp
CiB7Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gdGFnTGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZChb
XSB7Ci0gICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1hcDsKKyAgICBzdGF0aWMg
Y29uc3QgYXV0byBtb3N0S25vd25UYWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAg
ICAgSGFzaFNldDxRdWFsaWZpZWROYW1lPiBzZXQ7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1M
TmFtZXM6OmdldEhUTUxUYWdzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRN
TE5hbWVzOjpIVE1MVGFnc0NvdW50OyBpKyspIHsKLSAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9
PSBiZ3NvdW5kVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gY29tbWFuZFRhZwot
ICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGRldGFpbHNUYWcKLSAgICAgICAgICAgICAg
ICB8fCAqdGFnc1tpXSA9PSBmaWdjYXB0aW9uVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3Nb
aV0gPT0gZmlndXJlVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gc3VtbWFyeVRh
ZwotICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IHRyYWNrVGFnKSB7Ci0gICAgICAgICAg
ICAgICAgLy8gRXZlbiB0aG91Z2ggd2UgaGF2ZSBhdG9tcyBmb3IgdGhlc2UgdGFncywgd2UgZG9u
J3Qgd2FudCB0bwotICAgICAgICAgICAgICAgIC8vIHRyZWF0IHRoZW0gYXMgInJlY29nbml6ZWQg
dGFncyIgZm9yIHRoZSBwdXJwb3NlIG9mIHBhcnNpbmcKLSAgICAgICAgICAgICAgICAvLyBiZWNh
dXNlIHRoYXQgY2hhbmdlcyBob3cgd2UgcGFyc2UgZG9jdW1lbnRzLgorICAgICAgICAgICAgYXV0
byYgdGFnID0gKnRhZ3NbaV07CisgICAgICAgICAgICAvLyBPbmx5IHRoZSBwYXJhbSBlbGVtZW50
IHdhcyBleHBsaWNpdGx5IG1lbnRpb25lZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHJ1bGUK
KyAgICAgICAgICAgIC8vIHdlIHdlcmUgdHJ5aW5nIHRvIGltcGxlbWVudCwgYnV0IHRoZXNlIGFy
ZSBvdGhlciBrbm93biBIVE1MIGVsZW1lbnRzIHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGhhdmUg
ZGVjaWRlZCwgb3ZlciB0aGUgeWVhcnMsIHRvIHRyZWF0IGFzIGNoaWxkcmVuIHRoYXQgZG8gbm90
IHByZXZlbnQgb2JqZWN0CisgICAgICAgICAgICAvLyBuYW1lcyBmcm9tIGJlaW5nIGV4cG9zZWQu
CisgICAgICAgICAgICBpZiAodGFnID09IGJnc291bmRUYWcKKyAgICAgICAgICAgICAgICB8fCB0
YWcgPT0gY29tbWFuZFRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBkZXRhaWxzVGFnCisg
ICAgICAgICAgICAgICAgfHwgdGFnID09IGZpZ2NhcHRpb25UYWcKKyAgICAgICAgICAgICAgICB8
fCB0YWcgPT0gZmlndXJlVGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IHBhcmFtVGFnCisg
ICAgICAgICAgICAgICAgfHwgdGFnID09IHN1bW1hcnlUYWcKKyAgICAgICAgICAgICAgICB8fCB0
YWcgPT0gdHJhY2tUYWcpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBtYXAuYWRkKHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAg
ICAgICAgICBzZXQuYWRkKHRhZyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1hcDsKKyAg
ICAgICAgcmV0dXJuIHNldDsKICAgICB9KCkpOwotICAgIHJldHVybiB0YWdMaXN0LmdldCgpLmNv
bnRhaW5zKHRhZ05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gbW9zdEtub3du
VGFncy5nZXQoKS5jb250YWlucyhjaGlsZC50YWdRTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6dXBkYXRlRG9jTmFtZWRJdGVtKCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwcmV2
ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZShjb25zdCBOb2RlJiBjaGlsZCkKIHsKLSAgICAv
LyBUaGUgcnVsZSBpcyAiPG9iamVjdD4gZWxlbWVudHMgd2l0aCBubyBjaGlsZHJlbiBvdGhlciB0
aGFuCi0gICAgLy8gPHBhcmFtPiBlbGVtZW50cywgdW5rbm93biBlbGVtZW50cyBhbmQgd2hpdGVz
cGFjZSBjYW4gYmUKLSAgICAvLyBmb3VuZCBieSBuYW1lIGluIGEgZG9jdW1lbnQsIGFuZCBvdGhl
ciA8b2JqZWN0PiBlbGVtZW50cyBjYW5ub3QuIgotICAgIGJvb2wgd2FzTmFtZWRJdGVtID0gbV9k
b2NOYW1lZEl0ZW07Ci0gICAgYm9vbCBpc05hbWVkSXRlbSA9IHRydWU7Ci0gICAgTm9kZSogY2hp
bGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKGNoaWxkICYmIGlzTmFtZWRJdGVtKSB7Ci0g
ICAgICAgIGlmIChpczxFbGVtZW50PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICBFbGVtZW50JiBl
bGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKmNoaWxkKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBVc2Ugb2YgaXNSZWNvZ25pemVkVGFnTmFtZSBpcyBhbG1vc3QgY2VydGFpbmx5IHdyb25nIGhl
cmUuCi0gICAgICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnTmFtZShlbGVtZW50LnRhZ1FOYW1l
KCkpICYmICFlbGVtZW50Lmhhc1RhZ05hbWUocGFyYW1UYWcpKQotICAgICAgICAgICAgICAgIGlz
TmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXM8VGV4dD4oKmNoaWxkKSkg
ewotICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdo
aXRlc3BhY2UoKSkKLSAgICAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGlzTmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkKSkKKyAg
ICAgICAgcmV0dXJuIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGRvd25jYXN0PEVs
ZW1lbnQ+KGNoaWxkKSk7CisgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAgcmV0dXJu
ICFkb3duY2FzdDxUZXh0PihjaGlsZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJl
dHVybiB0cnVlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQmVFeHBvc2VkKGNvbnN0
IEhUTUxPYmplY3RFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSByZWRvbmUgdG8gdXNlIHRoZSBjb25jZXB0IG9mIGFuIGV4cG9zZWQgb2JqZWN0IGVsZW1l
bnQsCisgICAgLy8gYXMgZG9jdW1lbnRlZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNlY3Rp
b24gZGVzY3JpYmluZyBET00gdHJlZSBhY2Nlc3NvcnMuCisKKyAgICAvLyBUaGUgcnVsZSB3ZSB0
cnkgdG8gaW1wbGVtZW50IGhlcmUsIGZyb20gb2xkZXIgSFRNTCBzcGVjaWZpY2F0aW9ucywgaXMg
Im9iamVjdCBlbGVtZW50cworICAgIC8vIHdpdGggbm8gY2hpbGRyZW4gb3RoZXIgdGhhbiBwYXJh
bSBlbGVtZW50cywgdW5rbm93biBlbGVtZW50cyBhbmQgd2hpdGVzcGFjZSBjYW4gYmUgZm91bmQK
KyAgICAvLyBieSBuYW1lIGluIGEgZG9jdW1lbnQsIGFuZCBvdGhlciBvYmplY3QgZWxlbWVudHMg
Y2Fubm90Ii4KKworICAgIGZvciAoYXV0byogY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHByZXZl
bnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKCpjaGlsZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotICAgIGlmIChpc05hbWVkSXRlbSAhPSB3YXNOYW1lZEl0ZW0gJiYgaXND
b25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3Vt
ZW50KCkpKSB7Ci0gICAgICAgIEhUTUxEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1M
RG9jdW1lbnQ+KHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IEhUTUxPYmplY3RFbGVtZW50Ojp1cGRhdGVFeHBvc2VkU3RhdGUoKQoreworICAgIGJvb2wgd2Fz
RXhwb3NlZCA9IHN0ZDo6ZXhjaGFuZ2UobV9pc0V4cG9zZWQsIHNob3VsZEJlRXhwb3NlZCgqdGhp
cykpOworCisgICAgaWYgKG1faXNFeHBvc2VkICE9IHdhc0V4cG9zZWQgJiYgaXNDb25uZWN0ZWQo
KSAmJiAhaXNJblNoYWRvd1RyZWUoKSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7
CisgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5k
b2N1bWVudCgpKTsKIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRy
aWJ1dGUoKTsKKyAgICAgICAgYXV0byYgaWQgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgICAgICBp
ZiAoIWlkLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKGlzTmFtZWRJdGVtKQorICAgICAg
ICAgICAgaWYgKG1faXNFeHBvc2VkKQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZERvY3Vt
ZW50TmFtZWRJdGVtKCppZC5pbXBsKCksICp0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqaWQuaW1wbCgpLCAq
dGhpcyk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBn
ZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgIGF1dG8mIG5hbWUgPSBnZXROYW1lQXR0cmlidXRl
KCk7CiAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFtZSkgewotICAgICAg
ICAgICAgaWYgKGlzTmFtZWRJdGVtKQorICAgICAgICAgICAgaWYgKG1faXNFeHBvc2VkKQogICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmFkZERvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSwg
KnRoaXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92
ZURvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICB9CiAgICAg
fQotICAgIG1fZG9jTmFtZWRJdGVtID0gaXNOYW1lZEl0ZW07CiB9CiAKIGJvb2wgSFRNTE9iamVj
dEVsZW1lbnQ6OmNvbnRhaW5zSmF2YUFwcGxldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPYmplY3RFbGVtZW50LmgKaW5kZXggNmNkMTQwNTQ3NTNlZWYwNzRiMDFmMmU0Zjk0MjI3NzI5
YWRhM2FmZC4uZWMwODkyN2JlNjZmZWUzNDgwNzU0ZDNjZjg2OWIwYzFhODIzODI5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFy
c2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MT2JqZWN0RWxlbWVudCgpOwogCi0gICAgYm9vbCBpc0Rv
Y05hbWVkSXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jTmFtZWRJdGVtOyB9CisgICAgYm9vbCBp
c0V4cG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXhwb3NlZDsgfQogICAgIGJvb2wgY29udGFp
bnNKYXZhQXBwbGV0KCkgY29uc3Q7CiAKICAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNv
bnN0OwpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
dXBkYXRlV2lkZ2V0KENyZWF0ZVBsdWdpbnMpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRG9jTmFt
ZWRJdGVtKCk7CisgICAgdm9pZCB1cGRhdGVFeHBvc2VkU3RhdGUoKTsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQog
ICAgIC8vIHNvIHRoYXQgd2UgY2FuIGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVjdD4g
YW5kIDxlbWJlZD4uCkBAIC0xMDMsOCArMTAzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2Fu
Q29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgbV9kb2NOYW1l
ZEl0ZW0gOiAxOwotICAgIGJvb2wgbV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOworICAgIGJvb2wg
bV9pc0V4cG9zZWQgeyB0cnVlIH07CisgICAgYm9vbCBtX3VzZUZhbGxiYWNrQ29udGVudCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5jcHAKaW5kZXggMTkzNGIzNTY1MzI1MWUzODNmNDg4NTljMTE3MjA3ZTYyY2Y4OTRkYi4uN2U0
ZDM3M2Q1NGNkMWQ1NjM0NzgzZjMxMmM5MGY5MmRkMjE2N2RiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNywzMyArMjcsNzMgQEAKICNpbmNsdWRlICJUaGVtZS5oIgogCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisjaW5jbHVkZSAi
TGVuZ3RoU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2ludCBUaGVtZTo6YmFzZWxp
bmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRy
b2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAorewor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK0xlbmd0aFNpemUgVGhlbWU6OmNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2F0KSBjb25zdAoreworICAgIHJldHVybiB6b29tZWRTaXplOworfQorCitM
ZW5ndGhTaXplIFRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7
IDAsIEZpeGVkIH0gfTsKK30KKworYm9vbCBUaGVtZTo6Y29udHJvbFJlcXVpcmVzUHJlV2hpdGVT
cGFjZShDb250cm9sUGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
VGhlbWU6OnBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwgZmxvYXQpCit7
Cit9CisKK3ZvaWQgVGhlbWU6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBj
b25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQpIGNvbnN0Cit7Cit9CisKK2Jv
b2wgVGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBMZW5ndGhCb3ggVGhlbWU6OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQg
cGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxv
YXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRv
blBhcnQ6Ci0gICAgICAgIGNhc2UgTWVudWxpc3RQYXJ0OgotICAgICAgICBjYXNlIFNlYXJjaEZp
ZWxkUGFydDoKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgIGNhc2UgUmFkaW9Q
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiB6b29tZWRCb3g7CisgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoK
KyAgICBjYXNlIE1lbnVsaXN0UGFydDoKKyAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKKyAgICBj
YXNlIENoZWNrYm94UGFydDoKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIExl
bmd0aEJveCgwKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94OwogICAg
IH0KIH0KIAogTGVuZ3RoQm94IFRoZW1lOjpjb250cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCkg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6
Ci0gICAgICAgIGNhc2UgTWVudWxpc3RCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIENoZWNrYm94
UGFydDoKLSAgICAgICAgY2FzZSBSYWRpb1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3Ro
Qm94KDApOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIHpvb21lZEJveDsK
KyAgICBjYXNlIE1lbnVsaXN0UGFydDoKKyAgICBjYXNlIE1lbnVsaXN0QnV0dG9uUGFydDoKKyAg
ICBjYXNlIENoZWNrYm94UGFydDoKKyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJu
IExlbmd0aEJveCgwKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94Owog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKaW5kZXggOTQwMjlkNzcxMmYyNTExYWJk
YTg5MTNiOTY5MjlmMTBiMDc3YWZiZi4uNThkODA5OGMzZTNmMDI3YzgxYTFhYjA2NjZiNmEyN2Uw
YjY2ZTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwNSArMjMsNjkgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhlbWVfaAotI2RlZmluZSBUaGVtZV9oCisjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5o
IgotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94LmgiCi0jaW5j
bHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIENvbnRyb2xTdGF0ZXM7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBG
b250Q2FzY2FkZTsKK2NsYXNzIEZvbnRDYXNjYWRlRGVzY3JpcHRpb247CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CitjbGFzcyBMZW5ndGhCb3g7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi0vLyBVbmxp
a2Ugb3RoZXIgcGxhdGZvcm0gY2xhc3NlcywgVGhlbWUgZG9lcyBleHRlbnNpdmVseSB1c2Ugdmly
dHVhbCBmdW5jdGlvbnMuICBUaGlzIGRlc2lnbiBhbGxvd3MgYSBwbGF0Zm9ybSB0byBzd2l0Y2gg
YmV0d2VlbiBtdWx0aXBsZSB0aGVtZXMgYXQgcnVudGltZS4KK3N0cnVjdCBMZW5ndGhTaXplOwor
CiBjbGFzcyBUaGVtZSB7CiBwdWJsaWM6Ci0gICAgVGhlbWUoKSB7IH0KLSAgICB2aXJ0dWFsIH5U
aGVtZSgpIHsgfQorICAgIHN0YXRpYyBUaGVtZSYgc2luZ2xldG9uKCk7CiAKLSAgICAvLyBBIG1l
dGhvZCB0byBvYnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGFkanVzdG1lbnQgZm9yIGEgImxl
YWYiIGNvbnRyb2wuICBUaGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKKyAgICAv
LyBBIGZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gYWRqdXN0bWVudCBm
b3IgYSAibGVhZiIgY29udHJvbC4gVGhpcyB3aWxsIGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAg
IC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250
ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgotICAgIC8v
IGNvbnRyb2xzIHRoYXQgbmVlZCB0byBkbyB0aGlzLiAgVGhlIGFkanVzdG1lbnQgaXMgYW4gb2Zm
c2V0IHRoYXQgYWRkcyB0byB0aGUgYmFzZWxpbmUsIGUuZy4sIG1hcmdpblRvcCgpICsgaGVpZ2h0
KCkgKyB8b2Zmc2V0fC4KKyAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4gVGhl
IGFkanVzdG1lbnQgaXMgYW4gb2Zmc2V0IHRoYXQgYWRkcyB0byB0aGUgYmFzZWxpbmUsIGUuZy4s
IG1hcmdpblRvcCgpICsgaGVpZ2h0KCkgKyB8b2Zmc2V0fC4KICAgICAvLyBUaGUgb2Zmc2V0IGlz
IG5vdCB6b29tZWQuCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQo
Q29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCBiYXNlbGlu
ZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3Q7CiAKLSAgICAvLyBBIG1ldGhv
ZCBhc2tpbmcgaWYgdGhlIGNvbnRyb2wgY2hhbmdlcyBpdHMgYXBwZWFyYW5jZSB3aGVuIHRoZSB3
aW5kb3cgaXMgaW5hY3RpdmUuCi0gICAgdmlydHVhbCBib29sIGNvbnRyb2xIYXNJbmFjdGl2ZUFw
cGVhcmFuY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAg
Ly8gR2VuZXJhbCBtZXRob2RzIGZvciB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIGNvbnRyb2xz
IGluIHRoZSB0aGVtZSBjaGFuZ2UgYXBwZWFyYW5jZSB3aGVuIHRoZSB3aW5kb3cgaXMgaW5hY3Rp
dmUgb3IKLSAgICAvLyB3aGVuIGhvdmVyZWQgb3Zlci4KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJv
bHNDYW5IYXZlSW5hY3RpdmVBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY29udHJvbHNDYW5IYXZlSG92ZXJlZEFwcGVhcmFuY2UoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gVXNlZCBieSBSZW5kZXJUaGVtZTo6aXNDb250cm9s
U3R5bGVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIG5hdGl2ZSBsb29rIGFuZCBmZWVsIHNob3VsZCBi
ZSB0dXJuZWQgb2ZmLgotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sRHJhd3NCb3JkZXIoQ29udHJv
bFBhcnQpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERy
YXdzQmFja2dyb3VuZChDb250cm9sUGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBjb250cm9sRHJhd3NGb2N1c091dGxpbmUoQ29udHJvbFBhcnQpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLQotICAgIC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyBwbGF0Zm9ybS1z
cGVjaWZpYyBjb2xvcnMuCi0gICAgdmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9s
UGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKCk7IH0KLSAgICB2aXJ0dWFsIENvbG9yIHRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICAKLSAgICAvLyBDU1Mgc3lzdGVtIGNvbG9y
cyBhbmQgZm9udHMKLSAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKFRoZW1lQ29sb3IpIGNv
bnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlIHN5c3RlbUZv
bnQoVGhlbWVGb250LCBGb250RGVzY3JpcHRpb24mKSBjb25zdCB7IHJldHVybiBGb250Q2FzY2Fk
ZSgpOyB9Ci0gICAgCi0gICAgLy8gSG93IGZhc3QgdGhlIGNhcmV0IGJsaW5rcyBpbiB0ZXh0IGZp
ZWxkcy4KLSAgICB2aXJ0dWFsIFNlY29uZHMgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyBy
ZXR1cm4gNTAwX21zOyB9Ci0KLSAgICAvLyBOb3RpZmljYXRpb24gd2hlbiB0aGUgdGhlbWUgaGFz
IGNoYW5nZWQKLSAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCkgeyB9Ci0KLSAgICAvLyBN
ZXRob2RzIHVzZWQgdG8gYWRqdXN0IHRoZSBSZW5kZXJTdHlsZXMgb2YgY29udHJvbHMuCi0gICAg
CiAgICAgLy8gVGhlIGZvbnQgZGVzY3JpcHRpb24gcmVzdWx0IHNob3VsZCBoYXZlIGEgem9vbWVk
IGZvbnQgc2l6ZS4KLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlw
dGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQg
Lyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIAorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9u
dChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKKwogICAgIC8vIFRoZSBzaXplIGhlcmUgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzIGFscmVh
ZHkuIElmIGEgbmV3IHNpemUgaXMgcmV0dXJuZWQsIGl0IGFsc28gbmVlZHMgdG8gYmUgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250
cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXpl
LCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyByZXR1cm4gem9vbWVkU2l6ZTsgfQotICAg
IAotICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpvb21l
ZCBjb29yZGluYXRlcy4gIAotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNp
emUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29tRmFjdG9yKi8p
IGNvbnN0IHsgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQorICAgIHZp
cnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpv
b21lZCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0OwogICAgIAogICAgIC8vIEFsbG93cyB0aGUgdGhlbWUgdG8gbW9kaWZ5IHRoZSBleGlzdGlu
ZyBwYWRkaW5nL2JvcmRlci4KICAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJv
eCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJv
bEJvcmRlcihDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gm
IHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7Ci0gICAgCisKICAgICAvLyBXaGV0
aGVyIG9yIG5vdCB3aGl0ZXNwYWNlOiBwcmUgc2hvdWxkIGJlIGZvcmNlZCBvbiBhbHdheXMuCi0g
ICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJl
c1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0OwogCiAgICAgLy8gTWV0aG9kIGZvciBw
YWludGluZyBhIGNvbnRyb2wuIFRoZSByZWN0IGlzIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21G
YWN0b3IqLywgU2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQg
LypwYWdlU2NhbGVGYWN0b3IqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcik7CiAKICAgICAvLyBTb21lIGNvbnRyb2xz
IG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFu
IE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRo
ZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVu
Z2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgogICAgIC8v
IFRoZSByZWN0IHBhc3NlZCBpbiBpcyBpbiB6b29tZWQgY29vcmRpbmF0ZXMsIHNvIHRoZSBpbmZs
YXRpb24gc2hvdWxkIHRha2UgdGhhdCBpbnRvIGFjY291bnQgYW5kIG1ha2Ugc3VyZSB0aGUgaW5m
bGF0aW9uCiAgICAgLy8gYW1vdW50IGlzIGFsc28gc2NhbGVkIGJ5IHRoZSB6b29tRmFjdG9yLgot
ICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9v
bUZhY3RvciovKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdO
YW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbigpIGNvbnN0OwogCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2Us
IGZyb20gUmVuZGVyVGhlbWU6OmFkanVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNo
IHBsYXRmb3JtIGFkanVzdAotICAgIC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNz
cy4KLSAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRTdHlsZVNoZWV0KCk7Citwcm90ZWN0ZWQ6Cisg
ICAgVGhlbWUoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+VGhlbWUoKSB7IH0KIAogcHJpdmF0
ZToKLSAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlU2VsZWN0aW9uQ29sb3I7Ci0gICAgbXV0YWJs
ZSBDb2xvciBtX2luYWN0aXZlU2VsZWN0aW9uQ29sb3I7CisgICAgVGhlbWUoY29uc3QgVGhlbWUm
KSA9IGRlbGV0ZTsKKyAgICB2b2lkIG9wZXJhdG9yPShjb25zdCBUaGVtZSYpID0gZGVsZXRlOwog
fTsKIAotLy8gRnVuY3Rpb24gdG8gb2J0YWluIHRoZSB0aGVtZS4gIFRoaXMgaXMgaW1wbGVtZW50
ZWQgaW4gdGhlIHBsYXRmb3JtLXNwZWNpZmljIHN1YmNsYXNzZXMuCi1UaGVtZSogcGxhdGZvcm1U
aGVtZSgpOwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKaW5kZXggZGM1MTg0NzBk
NmNiNTZhYjc1NDYxMTIxZTBiZTNhNGRiNzI3N2FkNC4uZWI1OThlMzQ0MTk1Y2MwYTA1NjEzNDQ0
NGQyNDdhYjI5Yjg3MDEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EuaApAQCAtMjMsMjEgKzIzLDE1IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgVGhlbWVDb2NvYV9oCi0jZGVmaW5lIFRoZW1lQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJUaGVtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRoZW1lQ29j
b2EgOiBwdWJsaWMgVGhlbWUgewotcHVibGljOgotICAgIFRoZW1lQ29jb2EoKSB7IH0KLSAgICB2
aXJ0dWFsIH5UaGVtZUNvY29hKCkgeyB9Ci0KLSAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IG92ZXJy
aWRlOworcHJpdmF0ZToKKyAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGhlbWVDb2NvYV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCA0OGIyZTVlNGI1MjdlYTFk
YTA0ZDkzMmEzNzgwNGMwY2I1N2NlMDZjLi44NjE1MGU1YThhZTM3YmNhYWNlMTQyZTEyYWY4YWQw
MzA5NWI5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVt
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUNvY29h
LmgiCiAKKyNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbXBvcnQgPGRsZmNuLmg+CiAKQEAgLTUxLDYgKzUyLDcgQEAgc3RhdGljIHZvaWQgZml0
Q29udGV4dFRvQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBz
cmNJbWFnZVMKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKIHN0YXRpYyBOU0J1bmRsZSAq
cGFzc0tpdEJ1bmRsZSgpCiB7CiAgICAgc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRz
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNH
bGliLmNwcAppbmRleCBiOGJkMjFhNWU4NjYyMjYyNGQzY2Q3YTlkYzgzNTJjMjRlMjQ1ODRiLi4z
YzhkZDczZmVlZDFmMzAxMTZlMWNjMzQzN2Y3ZGU0MjY0ZmU0YTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcApAQCAt
MjEwLDggKzIxMCw4IEBAIGdib29sZWFuIEdhbWVwYWRzR2xpYjo6aXNHYW1lcGFkRGV2aWNlKEdV
ZGV2RGV2aWNlKiBkZXZpY2UpCiAKIHZvaWQgc2FtcGxlR2FtZXBhZHMoR2FtZXBhZExpc3QqIGlu
dG8pCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEdhbWVwYWRzR2xpYiwg
Z2FtZXBhZHNHbGliLCAoaW50by0+bGVuZ3RoKCkpKTsKLSAgICBnYW1lcGFkc0dsaWIudXBkYXRl
R2FtZXBhZExpc3QoaW50byk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEdhbWVwYWRzR2xp
Yj4gZ2FtZXBhZHNHbGliKGludG8tPmxlbmd0aCgpOworICAgIGdhbWVwYWRzR2xpYi5nZXQoKS51
cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4
IGQ3YzlkNDI0YTJiZmEyMjYxNjYwNGJhZDQ1OGY2ZmJiNDIyODcyZGQuLjQ1MWUwZTUxYTNiYmUz
NGRlMTRkZjg0MmQ1OTdhZjg2MDgyOWI1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDE1ICszNCwxNiBAQAogI2luY2x1ZGUgIlN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRl
ICJXaWR0aEl0ZXJhdG9yLmgiCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUgPGNhaXJvLmg+Ci0j
ZW5kaWYKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KIAorI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApAQCAtNTAsMzQgKzUx
LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFJlZjxGb250Q2FzY2FkZUZvbnRz
PiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYs
IFJlZlB0cjxGb250U2VsZWN0b3I+JiYpOwogCitzdGF0aWMgdm9pZCBhZGQoSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBzZXQsIGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxV
Q2hhcj4gdW5pY29kZU5hbWUpCit7CisgICAgdW5zaWduZWQgbmFtZUxlbmd0aCA9IHN0cmxlbihu
YW1lKTsKKyAgICBzZXQuYWRkKEF0b21pY1N0cmluZyB7IG5hbWUsIG5hbWVMZW5ndGgsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7CisgICAgdW5zaWduZWQgdW5pY29kZU5h
bWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXplKCk7CisgICAgc2V0LmFkZChBdG9taWNTdHJpbmcg
eyB1bmljb2RlTmFtZS5iZWdpbigpLCB1bmljb2RlTmFtZUxlbmd0aCB9KTsKK30KKwogc3RhdGlj
IGJvb2wgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5KQogewogICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiogc2V0OwotICAgIGlmICghc2V0
KSB7Ci0gICAgICAgIHNldCA9IG5ldyBIYXNoU2V0PEF0b21pY1N0cmluZz47Ci0gICAgICAgIHNl
dC0+YWRkKCJNUyBQR290aGljIik7Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQR290aGlj
W10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywgMHgz
MEMzLCAweDMwQUZ9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVN
U1BHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU1BHb3RoaWMpKSk7Ci0KLSAg
ICAgICAgc2V0LT5hZGQoIk1TIFBNaW5jaG8iKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVN
U1BNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2
NzFEfTsKLSAgICAgICAgc2V0LT5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQTWluY2hv
LCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNQTWluY2hvKSkpOwotCi0gICAgICAgIHNl
dC0+YWRkKCJNUyBHb3RoaWMiKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU0dvdGhpY1td
ID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBB
Rn07Ci0gICAgICAgIHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TR290aGljLCBX
VEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNHb3RoaWMpKSk7Ci0KLSAgICAgICAgc2V0LT5h
ZGQoIk1TIE1pbmNobyIpOwotICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TTWluY2hvW10gPSB7
MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9OwotICAgICAgICBzZXQtPmFk
ZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU01pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmlj
b2RlTmFtZU1TTWluY2hvKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNZWlyeW8iKTsKLSAgICAg
ICAgVUNoYXIgdW5pY29kZU5hbWVNZWlyeW9bXSA9IHsweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAw
eDMwQUF9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8s
IFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNZWlyeW8pKSk7Ci0gICAgfQotICAgIHJldHVy
biBzZXQtPmNvbnRhaW5zKGZhbWlseSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0ID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNldDsK
KyAgICAgICAgYWRkKHNldCwgIk1TIFBHb3RoaWMiLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAs
IDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAgICAgICBhZGQo
c2V0LCAiTVMgUE1pbmNobyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDY2
MEUsIDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1TIEdvdGhpYyIsIHsgMHhGRjJELCAw
eEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAgICAg
ICBhZGQoc2V0LCAiTVMgTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUs
IDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1laXJ5byIsIHsgMHgzMEUxLCAweDMwQTQs
IDB4MzBFQSwgMHgzMEFBIH0pOworICAgICAgICByZXR1cm4gc2V0OworICAgIH0oKSk7CisgICAg
cmV0dXJuIHNldC5nZXQoKS5jb250YWlucyhmYW1pbHkpOwogfQogCiBGb250Q2FzY2FkZTo6Q29k
ZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBBdXRvOwpAQCAtODgsMTEgKzgzLDYgQEAg
Rm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpzX2NvZGVQYXRoID0gQXV0bzsKIAog
Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKCkKICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykK
LSAgICAsIG1fbGV0dGVyU3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwg
bV91c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKLSAgICAsIG1fZW5hYmxlS2VybmluZyhm
YWxzZSkKLSAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGZhbHNlKQogewogfQogCkBAIC0xMTEsOSAr
MTAxLDYgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mIGZkLCBmbG9hdCBsZXR0ZXJTcGFjaW5nLAogRm9udENhc2NhZGU6OkZvbnRDYXNjYWRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIGZvbnREYXRhLCBGb250U21vb3RoaW5nTW9kZSBmb250
U21vb3RoaW5nTW9kZSkKICAgICA6IG1fZm9udHMoRm9udENhc2NhZGVGb250czo6Y3JlYXRlRm9y
UGxhdGZvcm1Gb250KGZvbnREYXRhKSkKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKLSAg
ICAsIG1fbGV0dGVyU3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwgbV91
c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21w
dXRlRW5hYmxlS2VybmluZygpKQogICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVp
cmVzU2hhcGluZygpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKaW5kZXggNzcxYzZmYmU2YzI0YjhhNDZmMmQwYmE2NTI0OWUwNTFmYTYxZTI4
ZS4uM2NkMjE0NDI3Y2M5Y2EzOWNiNGY1NTFlZjNhY2YyYWMxNmFlM2M5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwxNSArMjIsMTMgQEAKICAqCiAgKi8K
IAotI2lmbmRlZiBGb250Q2FzY2FkZV9oCi0jZGVmaW5lIEZvbnRDYXNjYWRlX2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRDYXNjYWRlRm9udHMuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNp
bmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgpAQCAtNDQsMTMgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBG
bG9hdFBvaW50OwotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRm9udERhdGE7Ci1jbGFzcyBGb250
TWV0cmljczsKLWNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBGb250U2VsZWN0b3I7Ci1j
bGFzcyBHbHlwaEJ1ZmZlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExheW91dFJl
Y3Q7CiBjbGFzcyBSZW5kZXJUZXh0OwpAQCAtNjAsMjEgKzUxLDEyIEBAIGNsYXNzIFRleHRSdW47
CiBzdHJ1Y3QgR2x5cGhEYXRhOwogCiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7Ci0gICAgR2x5cGhP
dmVyZmxvdygpCi0gICAgICAgIDogbGVmdCgwKQotICAgICAgICAsIHJpZ2h0KDApCi0gICAgICAg
ICwgdG9wKDApCi0gICAgICAgICwgYm90dG9tKDApCi0gICAgICAgICwgY29tcHV0ZUJvdW5kcyhm
YWxzZSkKLSAgICB7Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgaXNFbXB0eSgpCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbGVmdCAmJiAhcmlnaHQg
JiYgIXRvcCAmJiAhYm90dG9tOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIGV4dGVuZFRvKGNv
bnN0IEdseXBoT3ZlcmZsb3cmIG90aGVyKQorICAgIHZvaWQgZXh0ZW5kVG8oY29uc3QgR2x5cGhP
dmVyZmxvdyYgb3RoZXIpCiAgICAgewogICAgICAgICBsZWZ0ID0gc3RkOjptYXgobGVmdCwgb3Ro
ZXIubGVmdCk7CiAgICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIG90aGVyLnJpZ2h0KTsK
QEAgLTg0LDE0ICs2NiwxNSBAQCBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7CiAKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgR2x5cGhPdmVyZmxvdyYgb3RoZXIpCiAgICAgeworICAgICAgICAvLyBG
SVhNRTogUHJvYmFibHkgc2hvdWxkIG5hbWUgdGhpcyByYXRoZXIgdGhhbiBtYWtpbmcgaXQgdGhl
ICE9IG9wZXJhdG9yIHNpbmNlIGl0IGlnbm9yZXMgdGhlIHZhbHVlIG9mIGNvbXB1dGVCb3VuZHMu
CiAgICAgICAgIHJldHVybiBsZWZ0ICE9IG90aGVyLmxlZnQgfHwgcmlnaHQgIT0gb3RoZXIucmln
aHQgfHwgdG9wICE9IG90aGVyLnRvcCB8fCBib3R0b20gIT0gb3RoZXIuYm90dG9tOwogICAgIH0K
IAotICAgIGludCBsZWZ0OwotICAgIGludCByaWdodDsKLSAgICBpbnQgdG9wOwotICAgIGludCBi
b3R0b207Ci0gICAgYm9vbCBjb21wdXRlQm91bmRzOworICAgIGludCBsZWZ0IHsgMCB9OworICAg
IGludCByaWdodCB7IDAgfTsKKyAgICBpbnQgdG9wIHsgMCB9OworICAgIGludCBib3R0b20geyAw
IH07CisgICAgYm9vbCBjb21wdXRlQm91bmRzIHsgZmFsc2UgfTsKIH07CiAKIGNsYXNzIEdseXBo
VG9QYXRoVHJhbnNsYXRvciB7CkBAIC0zMjUsMTEgKzMwOCwxMSBAQCBwcml2YXRlOgogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gbV9mb250RGVzY3JpcHRpb247CiAgICAgbXV0YWJsZSBSZWZQ
dHI8Rm9udENhc2NhZGVGb250cz4gbV9mb250czsKICAgICBXZWFrUHRyRmFjdG9yeTxGb250Q2Fz
Y2FkZT4gbV93ZWFrUHRyRmFjdG9yeTsKLSAgICBmbG9hdCBtX2xldHRlclNwYWNpbmc7Ci0gICAg
ZmxvYXQgbV93b3JkU3BhY2luZzsKLSAgICBtdXRhYmxlIGJvb2wgbV91c2VCYWNrc2xhc2hBc1ll
blN5bWJvbDsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZW5hYmxlS2VybmluZyA6IDE7IC8vIENv
bXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Jl
cXVpcmVzU2hhcGluZyA6IDE7IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCisg
ICAgZmxvYXQgbV9sZXR0ZXJTcGFjaW5nIHsgMCB9OworICAgIGZsb2F0IG1fd29yZFNwYWNpbmcg
eyAwIH07CisgICAgbXV0YWJsZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgeyBmYWxz
ZSB9OworICAgIG11dGFibGUgYm9vbCBtX2VuYWJsZUtlcm5pbmcgeyBmYWxzZSB9OyAvLyBDb21w
dXRlZCBmcm9tIG1fZm9udERlc2NyaXB0aW9uLgorICAgIG11dGFibGUgYm9vbCBtX3JlcXVpcmVz
U2hhcGluZyB7IGZhbHNlIH07IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCiB9
OwogCiB2b2lkIGludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7CkBAIC0zNzAsNSArMzUzLDMg
QEAgaW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBmb250LCB1
bnNpZ25lZCB0YWJTaXplLCBmbG9hdCBwb3MKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCmluZGV4IGEzMDBlMGYxYjg4NDVlNzI0MzIzNjkzYzAzZTU3ZGQxNmEyM2M0
ODMuLjBhZjMzMDI4NDA2Y2U3ZTk1MzI0ZThiN2YzYzRjOGMxMTdlNzA1ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RgogICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNS
ZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAgICAg
Y29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogCi0gICAgcGxh
dGZvcm1UaGVtZSgpLT5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRzdFJlY3QpOwor
ICAgIFRoZW1lOjpzaW5nbGV0b24oKS5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRz
dFJlY3QpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIHBsYXRmb3JtVGhlbWUoKS0+
ZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigp
LmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwg
c2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1h
Z2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCiAgICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI0ZmFk
MDc5MWEwMGFkYjJjNTNkZjU3NzJiNTAzZmY5YmYzMWQzNWQuLmY4ZWY0ZDViZTQ0YTc1YWJhMjRl
NzYzNTI5NmY5MjFiMTZlODFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMjY1LDIyICsyNjUs
MTkgQEAgc3RhdGljIENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiAvLyBGSVhNRTogSXQg
d291bGQgYmUgYmV0dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlz
IGtleS4KIHN0YXRpYyBDRlN0cmluZ1JlZiBDTVRpbWVSYW5nZVN0YXJ0S2V5KCkKIHsKLSAgICBE
RVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIGtleSwgKENGU1RSKCJz
dGFydCIpKSk7Ci0gICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gQ0ZTVFIoInN0YXJ0Iik7CiB9
CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVkTWV0YWRhdGFHcm91
cC5oIGV4cG9ydGVkIHRoaXMga2V5Lgogc3RhdGljIENGU3RyaW5nUmVmIENNVGltZVJhbmdlRHVy
YXRpb25LZXkoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDRlN0cmlu
Z1JlZiwga2V5LCAoQ0ZTVFIoImR1cmF0aW9uIikpKTsKLSAgICByZXR1cm4ga2V5OworICAgIHJl
dHVybiBDRlNUUigiZHVyYXRpb24iKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRl
ciBpZiBBVkNGIGV4cG9ydGVkIHRoaXMgbm90aWZpY2F0aW9uIG5hbWUuCiBzdGF0aWMgQ0ZTdHJp
bmdSZWYgQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCkKIHsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIG5hbWUsIChDRlNUUigia0NBQ0ZD
b250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbiIpKSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAg
cmV0dXJuIENGU1RSKCJrQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uIik7CiB9CiAK
IC8vIERlZmluZSBBVkNGIG9iamVjdCBhY2Nlc3NvcnMgYXMgaW5saW5lIGZ1bmN0aW9ucyBoZXJl
IGluc3RlYWQgb2YgaW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Ygc28gd2UgZG9u
J3QgaGF2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDBkYjg4Yzg1YmNkOGEw
NjgzNDIxNThjYTNkNzE3OWZjNWE0Njk3MGUuLjQxM2M5MGJkZDU2YWRjOWYxMzc3OTZhNDdlYzcz
ZmU4NTQ0MjA5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVkRXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3IuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogTGF5ZXJDaGFuZ2VzRmx1c2hlciYgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2luZ2xldG9uKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGF5ZXJDaGFuZ2VzRmx1c2hl
ciwgZmx1c2hlciwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXllckNoYW5nZXNG
bHVzaGVyPiBmbHVzaGVyOwogICAgIHJldHVybiBmbHVzaGVyOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuaAppbmRleCAyOGU2NmI5ODUzOWYwM2Q3MTE0ZTZhODIwNzIwMTRmZTE2YmYwZDIw
Li4wNjA1ZDIyYzU3NTAyMTY4MWJiNDMxOTk1MjJhMmYxNjcxYzAyN2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNo
YW5nZXNGbHVzaGVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBMYXllckNoYW5nZXNGbHVzaGVyX2gKLSNkZWZpbmUgTGF5ZXJDaGFuZ2VzRmx1c2hl
cl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtNDMsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5k
aW5nRmx1c2goQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCopOwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBOZXZlckRlc3Ryb3llZDxMYXllckNoYW5nZXNGbHVzaGVyPjsKICAgICBMYXllckNoYW5n
ZXNGbHVzaGVyKCk7CiAgICAgfkxheWVyQ2hhbmdlc0ZsdXNoZXIoKTsKIApAQCAtNTcsNSArNTcs
MyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
TGF5ZXJDaGFuZ2VzRmx1c2hlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCmluZGV4IDgwODgzMGI4Yjg1N2Jk
Mjg2YjgzZmU4ZDQ0YzQ2YTk0MTcwOTdhMzUuLjZkNTM3MzdiY2VjM2E3MjYyN2ZhMzY1MGVlZDUx
ZWRkMGJiOGJkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDM5ICs0NiwzNyBAQCBTdHJpbmcgTUlN
RVR5cGVGb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBTdHJpbmcgcHJl
ZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsK
LSAgICBpZiAodHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHR5cGUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
U3RyaW5nTWFwOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmdNYXAs
IFVUSU1hcCwgKCkpOwotICAgIGlmIChVVElNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVUSU1h
cC5hZGQoInB1YmxpYy5odG1sIiwgImh0bWwiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGlj
LmpwZWciLCAianBlZyIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMuanBlZy0yMDAwIiwg
ImpwMiIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMucGxhaW4tdGV4dCIsICJ0eHQiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnBuZyIsICJwbmciKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgicHVibGljLnRpZmYiLCAidGlmZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMu
eGJpdG1hcC1pbWFnZSIsICJ4Ym0iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnhtbCIs
ICJ4bWwiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLmlsbHVzdHJhdG9yLmFpLWlt
YWdlIiwgImFpIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wZGYiLCAicGRmIik7
Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5waG90b3Nob3AtaW1hZ2UiLCAicHNkIik7
Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wb3N0c2NyaXB0IiwgInBzIik7Ci0gICAg
ICAgIFVUSU1hcC5hZGQoImNvbS5hcHBsZS5pY25zIiwgImljbnMiKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgiY29tLmFwcGxlLm1hY3BhaW50LWltYWdlIiwgInBudGciKTsKLSAgICAgICAgVVRJTWFw
LmFkZCgiY29tLmFwcGxlLnBpY3QiLCAicGljdCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20u
YXBwbGUucXVpY2t0aW1lLWltYWdlIiwgInF0aWYiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29t
LmFwcGxlLndlYmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIpOwotICAgICAgICBVVElNYXAuYWRkKCJj
b20uY29tcHVzZXJ2ZS5naWYiLCAiZ2lmIik7ICAgICAgICAKLSAgICAgICAgVVRJTWFwLmFkZCgi
Y29tLmlsbS5vcGVuZXhyLWltYWdlIiwgImV4ciIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20u
a29kYWsuZmxhc2hwaXgtaW1hZ2UiLCAiZnB4Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5t
aWNyb3NvZnQuYm1wIiwgImJtcCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubWljcm9zb2Z0
LmljbyIsICJpY28iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLm5ldHNjYXBlLmphdmFzY3Jp
cHQtc291cmNlIiwgImpzIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5zZ2kuc2dpLWltYWdl
IiwgInNnaSIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
LCAidGdhIik7Ci0gICAgfQotICAgIHJldHVybiBVVElNYXAuZ2V0KHR5cGUpOworICAgIHN0YXRp
YyBjb25zdCBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICAgICAgeyAicHVibGljLmh0bWwi
LCAiaHRtbCIgfSwKKyAgICAgICAgeyAicHVibGljLmpwZWciLCAianBlZyIgfSwKKyAgICAgICAg
eyAicHVibGljLmpwZWctMjAwMCIsICJqcDIiIH0sCisgICAgICAgIHsgInB1YmxpYy5wbGFpbi10
ZXh0IiwgInR4dCIgfSwKKyAgICAgICAgeyAicHVibGljLnBuZyIsICJwbmciIH0sCisgICAgICAg
IHsgInB1YmxpYy50aWZmIiwgInRpZmYiIH0sCisgICAgICAgIHsgInB1YmxpYy54Yml0bWFwLWlt
YWdlIiwgInhibSIgfSwKKyAgICAgICAgeyAicHVibGljLnhtbCIsICJ4bWwiIH0sCisgICAgICAg
IHsgImNvbS5hZG9iZS5pbGx1c3RyYXRvci5haS1pbWFnZSIsICJhaSIgfSwKKyAgICAgICAgeyAi
Y29tLmFkb2JlLnBkZiIsICJwZGYiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5waG90b3Nob3At
aW1hZ2UiLCAicHNkIiB9LAorICAgICAgICB7ICJjb20uYWRvYmUucG9zdHNjcmlwdCIsICJwcyIg
fSwKKyAgICAgICAgeyAiY29tLmFwcGxlLmljbnMiLCAiaWNucyIgfSwKKyAgICAgICAgeyAiY29t
LmFwcGxlLm1hY3BhaW50LWltYWdlIiwgInBudGciIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5w
aWN0IiwgInBpY3QiIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5xdWlja3RpbWUtaW1hZ2UiLCAi
cXRpZiIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLndlYmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIg
fSwKKyAgICAgICAgeyAiY29tLmNvbXB1c2VydmUuZ2lmIiwgImdpZiIgfSwKKyAgICAgICAgeyAi
Y29tLmlsbS5vcGVuZXhyLWltYWdlIiwgImV4ciIgfSwKKyAgICAgICAgeyAiY29tLmtvZGFrLmZs
YXNocGl4LWltYWdlIiwgImZweCIgfSwKKyAgICAgICAgeyAiY29tLm1pY3Jvc29mdC5ibXAiLCAi
Ym1wIiB9LAorICAgICAgICB7ICJjb20ubWljcm9zb2Z0LmljbyIsICJpY28iIH0sCisgICAgICAg
IHsgImNvbS5uZXRzY2FwZS5qYXZhc2NyaXB0LXNvdXJjZSIsICJqcyIgfSwKKyAgICAgICAgeyAi
Y29tLnNnaS5zZ2ktaW1hZ2UiLCAic2dpIiB9LAorICAgICAgICB7ICJjb20udHJ1ZXZpc2lvbi50
Z2EtaW1hZ2UiLCAidGdhIiB9LAorICAgIH0pOworICAgIHJldHVybiBtYXAuZ2V0KCkuZ2V0KHR5
cGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAppbmRl
eCA4M2ZmMjdlYTUyNTYyMjhhOGQ1NzViYWVmMTdjNjc1NjU2YzIxN2E0Li43OTE5NWEyMzUxN2E5
NmY3ZDgxNzYyMzdkMWE0ODI3MDVjMzY4ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSA8aGIt
b3QuaD4KICNpbmNsdWRlIDxoYi5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDggKzc1LDggQEAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8RmFjZUNhY2hlRW50cnk+LCBXVEY6OkludEhhc2g8dWludDY0X3Q+
LCBXVEY6OlUKIAogc3RhdGljIEhhcmZCdXp6RmFjZUNhY2hlKiBoYXJmQnV6ekZhY2VDYWNoZSgp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhcmZCdXp6RmFjZUNhY2hl
LCBzX2hhcmZCdXp6RmFjZUNhY2hlLCAoKSk7Ci0gICAgcmV0dXJuICZzX2hhcmZCdXp6RmFjZUNh
Y2hlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXJmQnV6ekZhY2VDYWNoZT4gc19oYXJm
QnV6ekZhY2VDYWNoZTsKKyAgICByZXR1cm4gJnNfaGFyZkJ1enpGYWNlQ2FjaGUuZ2V0KCk7CiB9
CiAKIEhhcmZCdXp6RmFjZTo6SGFyZkJ1enpGYWNlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3Jt
RGF0YSwgdWludDY0X3QgdW5pcXVlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDc4MWI2ZjgwMzhkY2RmZTI3
YzM2MTM4Mzc0NmFhYWZjZjA3MmVhNjkuLmFjZmU3OWU2YWI0MjY3YTVlNWIyNjcxNWJiNzMwZTdk
NjhhY2VkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0zNDAsOCArMzQwLDkgQEAgUmVmUHRyPEZvbnQ+IEZv
bnRDYWNoZTo6Zm9udEZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb24KIAogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmYWxsYmFja0ZvbnROYW1lLCAoKSk7
Ci0gICAgaWYgKCFmYWxsYmFja0ZvbnROYW1lLmlzRW1wdHkoKSkKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBmYWxsYmFja0ZvbnROYW1lOworCisgICAgaWYgKCFmYWxs
YmFja0ZvbnROYW1lLmdldCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICpmb250Rm9yRmFt
aWx5KGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250TmFtZSk7CiAKICAgICAvLyBGSVhNRTog
V291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZv
bnQgaGVyZS4gIEZvciBub3cgd2UnbGwgcGljawpAQCAtMzYwLDcgKzM2MSw3IEBAIFJlZjxGb250
PiBGb250Q2FjaGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpCiAgICAgUmVmUHRyPEZvbnQ+IHNpbXBsZUZvbnQ7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGZhbGxiYWNrRm9udHMpOyArK2kpIHsK
ICAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwg
ZmFsbGJhY2tGb250c1tpXSkpIHsKLSAgICAgICAgICAgIGZhbGxiYWNrRm9udE5hbWUgPSBmYWxs
YmFja0ZvbnRzW2ldOworICAgICAgICAgICAgZmFsbGJhY2tGb250TmFtZS5nZXQoKSA9IGZhbGxi
YWNrRm9udHNbaV07CiAgICAgICAgICAgICByZXR1cm4gKnNpbXBsZUZvbnQ7CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5oCmluZGV4IDM3N2I4MjI2
ZTRhZjgxM2RmOWVmNTBlNjIxNzA0MjU5ZDQ4YTk4MjkuLjcwYjYxYWJhYWY5ZDBkNGMzMTQ3YWY3
ZGZiNGY5YjZmODdkODI5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9UaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5o
CkBAIC0yMywyMSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhl
bWVJT1NfaAotI2RlZmluZSBUaGVtZUlPU19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRo
ZW1lQ29jb2EuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZUlPUyA6IHB1
YmxpYyBUaGVtZUNvY29hIHsKLXB1YmxpYzoKLSAgICBUaGVtZUlPUygpIHsgfQotICAgIHZpcnR1
YWwgflRoZW1lSU9TKCkgeyB9Ci0KLSAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworY2xhc3MgVGhlbWVJT1MgZmluYWwgOiBwdWJsaWMgVGhlbWVDb2Nv
YSB7Citwcml2YXRlOgorICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Qg
ZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZUlP
U19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KaW5kZXggMDcyMGQ2NDZk
OTUwMjAyNmIyMjRiYzA2ZjVlZGQ5YzRlYzA3ZDVkZS4uMzE1MDJjYmFhMDE0Y2QwNjU3ZmI3N2Rk
NWVlZjk2OTdiNDFmNDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1RoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiwxMSArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUlPUy5o
IgogCi0jaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlNjcm9sbFZpZXcuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtp
bmcuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJB
TUVXT1JLKFVJS2l0KQogU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1v
dGlvbkVuYWJsZWQsIEJPT0wsICh2b2lkKSwgKCkpCkBAIC0zOSwxMiArMzYsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogSW1wbGVt
ZW50IGJlZm9yZSBlbmFibGluZyBVU0UoTkVXX1RIRU1FKS4KLQotVGhlbWUqIHBsYXRmb3JtVGhl
bWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUaGVtZUlPUz4gdGhlbWVJT1M7Ci0gICAgcmV0dXJuICZ0aGVtZUlPUy5nZXQoKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVJT1M+IHRoZW1lOworICAgIHJldHVybiB0aGVt
ZTsKIH0KIAogYm9vbCBUaGVtZUlPUzo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggYjM0NmE2NWVkMDE2YTQ4
MDc5MTA0ZTkzZTI4NTg0YTYyYjBjYWYzYy4uMTY3Y2Y0MDZjYmIwNGI4ZGIwZTdhZDZmYTg0Mjg5
NmM2MjNiYzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDYg
KzIzLDM2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFRoZW1lTWFjX2gKLSNk
ZWZpbmUgVGhlbWVNYWNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUaGVtZUNvY29hLmgi
CiAKLUBpbnRlcmZhY2UgTlNGb250KFdlYkNvcmVUaGVtZSkKLS0gKE5TU3RyaW5nKil3ZWJDb3Jl
RmFtaWx5TmFtZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZU1h
YyA6IHB1YmxpYyBUaGVtZUNvY29hIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2Ns
YXNzIFRoZW1lTWFjIGZpbmFsIDogcHVibGljIFRoZW1lQ29jb2EgewogcHVibGljOgotICAgIFRo
ZW1lTWFjKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVNYWMoKSB7IH0KLSAgICAKLSAgICBpbnQg
YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVyIHRvIHVz
ZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgorICAgIHN0YXRp
YyBOU1ZpZXcgKmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3RhdGVzJiwg
Ym9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRGb2N1
c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3ICosIGJvb2wgLyogZHJhd0J1dHRvbkNlbGwgKi8s
IGJvb2wgLyogZHJhd0ZvY3VzUmluZyAqLywgYm9vbCAvKiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxv
YXQgLyogZGV2aWNlU2NhbGVGYWN0b3IgKi8pOwogCi0gICAgc3RkOjpvcHRpb25hbDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICAKLSAgICBMZW5ndGhT
aXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExl
bmd0aFNpemUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICBMZW5ndGhT
aXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBm
bG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgaW50IGJhc2Vs
aW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdCBmaW5hbDsKIAotICAgIExl
bmd0aEJveCBjb250cm9sUGFkZGluZyhDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgTGVuZ3RoQm94IGNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IG92ZXJyaWRlOworICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4g
Y29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZh
Y3RvcikgY29uc3QgZmluYWw7CiAKLSAgICBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3Bh
Y2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFydCA9PSBQdXNo
QnV0dG9uUGFydDsgfQorICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IGZpbmFsOworICAgIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9s
U3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBm
aW5hbDsKKyAgICBMZW5ndGhCb3ggY29udHJvbEJvcmRlcihDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3QgZmluYWw7CiAKLSAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9s
UGFydCBwYXJ0KSBjb25zdCBmaW5hbCB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9
CiAKLSAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0
byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0byBUaGVtZU1hYy4KLSAgICBz
dGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgY29uc3QgQ29udHJvbFN0YXRl
cyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBmYWxzZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0
Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgc3RhdGljIGJvb2wgZHJh
d0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9vbCAvKiBkcmF3QnV0dG9uQ2VsbCAq
LywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVzZUltYWdlQnVmZmVyICovLCBm
bG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CisgICAgdm9pZCBwYWludChDb250cm9sUGFy
dCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxv
YXQgcGFnZVNjYWxlRmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRS
ZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQg
em9vbUZhY3RvcikgY29uc3QgZmluYWw7CisKKyAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbigpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gVGhlbWVNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmlu
ZGV4IDJlMWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIuLjBlNTk1OGI1YmVk
YjQ3Njc5ODc5NGFhZTJiOTU4ZjViMzdmM2ViY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMsNyArMTMsNyBAQAogICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCiAgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKQEAgLTI3LDggKzI3LDEwIEBACiAjaW1wb3J0ICJUaGVtZU1hYy5o
IgogCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJDb250cm9sU3RhdGVzLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisj
aW1wb3J0ICJMZW5ndGhTaXplLmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCIKICNpbXBvcnQgIk5TQnV0dG9uQ2VsbFNQSS5oIgogI2ltcG9ydCAiU2Nyb2xsVmlldy5o
IgpAQCAtNDQsNiArNDYsOSBAQCBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFu
Y2U7CiBAaW50ZXJmYWNlIFdlYkNvcmVUaGVtZVdpbmRvdyA6IE5TV2luZG93CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgV2ViQ29yZVRoZW1lVmlldyA6IE5TQ29udHJvbAorQGVuZAorCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZVRoZW1lV2luZG93CiAKIC0gKEJPT0wpaGFzS2V5QXBwZWFyYW5jZQpAQCAt
NTgsOSArNjMsNiBAQCAtIChCT09MKWlzS2V5V2luZG93CiAKIEBlbmQKIAotQGludGVyZmFjZSBX
ZWJDb3JlVGhlbWVWaWV3IDogTlNDb250cm9sCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBXZWJD
b3JlVGhlbWVWaWV3CiAKIC0gKE5TV2luZG93ICopd2luZG93CkBAIC0xMDgsMTggKzExMCw2IEBA
IC0gKHZvaWQpYWRkU3VidmlldzooTlNWaWV3KilzdWJ2aWV3CiAKIEBlbmQKIAotQGltcGxlbWVu
dGF0aW9uIE5TRm9udCAoV2ViQ29yZVRoZW1lKQotCi0tIChOU1N0cmluZyopd2ViQ29yZUZhbWls
eU5hbWUKLXsKLSAgICBpZiAoW1tzZWxmIGZhbWlseU5hbWVdIGhhc1ByZWZpeDpAIi4iXSkKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIGZvbnROYW1lXTsKLQotICAgIHJldHVybiBbc2VsZiBmYW1pbHlO
YW1lXTsKLX0KLQotQGVuZAotCiAvLyBGSVhNRTogRGVmYXVsdCBidXR0b25zIHJlYWxseSBzaG91
bGQgYmUgbW9yZSBsaWtlIHB1c2ggYnV0dG9ucyBhbmQgbm90IGxpa2UgYnV0dG9ucy4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTMxLDEwICsxMjEsMTAgQEAgZW51bSB7CiAgICAgbGVmdE1h
cmdpbgogfTsKIAotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0
b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZU1hYz4gdGhlbWVNYWM7Ci0g
ICAgcmV0dXJuICZ0aGVtZU1hYy5nZXQoKTsKKyAgICByZXR1cm4gdGhlbWVNYWM7CiB9CiAKIC8v
IEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSBhIGJ1bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBh
cnRzLgpAQCAtMjQxLDggKzIzMSw4IEBAIHN0YXRpYyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29u
dHJvbFN0YXRlc1RvVGhlbWVEcmF3U3RhdGUoVGhlbWVCdXR0b25LaW5kIGtpbmQsCiAKIHN0YXRp
YyBGbG9hdFJlY3QgaW5mbGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBjb25z
dCBJbnRTaXplJiB6b29tZWRTaXplLCBjb25zdCBpbnQqIG1hcmdpbnMsIGZsb2F0IHpvb21GYWN0
b3IpCiB7Ci0gICAgLy8gT25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lk
dGgvaGVpZ2h0IGFyZSB0b28gc21hbGwuICBPdGhlcndpc2UgdHJ5IHRvCi0gICAgLy8gZml0IHRo
ZSBnbG93L2NoZWNrIHNwYWNlIGludG8gdGhlIGF2YWlsYWJsZSBib3gncyB3aWR0aC9oZWlnaHQu
CisgICAgLy8gT25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVp
Z2h0IGFyZSB0b28gc21hbGwuCisgICAgLy8gT3RoZXJ3aXNlIHRyeSB0byBmaXQgdGhlIGdsb3cv
Y2hlY2sgc3BhY2UgaW50byB0aGUgYXZhaWxhYmxlIGJveCdzIHdpZHRoL2hlaWdodC4KICAgICBp
bnQgd2lkdGhEZWx0YSA9IHpvb21lZFJlY3Qud2lkdGgoKSAtICh6b29tZWRTaXplLndpZHRoKCkg
KyBtYXJnaW5zW2xlZnRNYXJnaW5dICogem9vbUZhY3RvciArIG1hcmdpbnNbcmlnaHRNYXJnaW5d
ICogem9vbUZhY3Rvcik7CiAgICAgaW50IGhlaWdodERlbHRhID0gem9vbWVkUmVjdC5oZWlnaHQo
KSAtICh6b29tZWRTaXplLmhlaWdodCgpICsgbWFyZ2luc1t0b3BNYXJnaW5dICogem9vbUZhY3Rv
ciArIG1hcmdpbnNbYm90dG9tTWFyZ2luXSAqIHpvb21GYWN0b3IpOwogICAgIEZsb2F0UmVjdCBy
ZXN1bHQoem9vbWVkUmVjdCk7CkBAIC02ODksMzcgKzY3OSwzNyBAQCBpbnQgVGhlbWVNYWM6OmJh
c2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiBzdGQ6Om9w
dGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lTWFjOjpjb250cm9sRm9udChDb250
cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFy
dDogewotICAgICAgICAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0K
LSAgICAgICAgICAgIE5TRm9udCogbnNGb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltO
U0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpjb250cm9sU2l6ZUZvckZvbnQoZm9u
dCldXTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoQXRvbWljU3Ry
aW5nKCItYXBwbGUtc3lzdGVtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkp
OwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbbnNGb250IHBv
aW50U2l6ZV0gKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRT
cGVjaWZpZWRTaXplKFtuc0ZvbnQgcG9pbnRTaXplXSAqIHpvb21GYWN0b3IpOwotICAgICAgICAg
ICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sRm9udChwYXJ0LCBmb250LCB6b29tRmFj
dG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OiB7CisgICAgICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNB
YnNvbHV0ZVNpemUodHJ1ZSk7CisKKyAgICAgICAgTlNGb250KiBuc0ZvbnQgPSBbTlNGb250IHN5
c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOmNvbnRy
b2xTaXplRm9yRm9udChmb250KV1dOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFt
aWx5KEF0b21pY1N0cmluZygiLWFwcGxlLXN5c3RlbSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShb
bnNGb250IHBvaW50U2l6ZV0gKiB6b29tRmFjdG9yKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFNwZWNpZmllZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZhY3Rvcik7CisgICAg
ICAgIHJldHVybiBmb250RGVzY3JpcHRpb247CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCiBMZW5ndGhTaXplIFRoZW1lTWFjOjpj
b250cm9sU2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgICAg
ICByZXR1cm4gY2hlY2tib3hTaXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwotICAg
ICAgICBjYXNlIFJhZGlvUGFydDoKLSAgICAgICAgICAgIHJldHVybiByYWRpb1NpemUoZm9udCwg
em9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6Ci0g
ICAgICAgICAgICAvLyBIZWlnaHQgaXMgcmVzZXQgdG8gYXV0byBzbyB0aGF0IHNwZWNpZmllZCBo
ZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgotICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9tRm9udChm
b250LCB7IHpvb21lZFNpemUud2lkdGgsIHsgfSB9LCB6b29tRmFjdG9yLCBidXR0b25TaXplcygp
KTsKLSAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICAgICAgaWYgKCF6
b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0
LmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7
Ci0gICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21OU0NvbnRyb2xTaXplKHN0ZXBwZXJDb250cm9s
U2l6ZUZvckZvbnQoZm9udCksIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygp
KTsKLSAgICAgICAgZGVmYXVsdDoKKyAgICBjYXNlIENoZWNrYm94UGFydDoKKyAgICAgICAgcmV0
dXJuIGNoZWNrYm94U2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKKyAgICBjYXNl
IFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIHJhZGlvU2l6ZShmb250LCB6b29tZWRTaXplLCB6
b29tRmFjdG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgorICAgICAgICAvLyBIZWlnaHQg
aXMgcmVzZXQgdG8gYXV0byBzbyB0aGF0IHNwZWNpZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVk
LgorICAgICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwg
eyB9IH0sIHpvb21GYWN0b3IsIGJ1dHRvblNpemVzKCkpOworICAgIGNhc2UgSW5uZXJTcGluQnV0
dG9uUGFydDoKKyAgICAgICAgaWYgKCF6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRv
KCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAg
ICByZXR1cm4gem9vbWVkU2l6ZTsKKyAgICAgICAgcmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6
ZShzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGZvbnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9y
LCBzdGVwcGVyU2l6ZXMoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHpvb21lZFNp
emU7CiAgICAgfQogfQogCkBAIC03NDQsMjggKzczNCwyOCBAQCBMZW5ndGhCb3ggVGhlbWVNYWM6
OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbgogewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBh
cnQ6Ci0gICAgICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgQnV0dG9u
UGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCwgem9vbWVkQm94LnJpZ2h0KCku
dmFsdWUoKSwgMCwgem9vbWVkQm94LmxlZnQoKS52YWx1ZSgpKTsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJvbEJvcmRlcihwYXJ0LCBmb250LCB6b29t
ZWRCb3gsIHpvb21GYWN0b3IpOworICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2Fz
ZSBCdXR0b25QYXJ0OgorICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDAsIHpvb21lZEJveC5yaWdo
dCgpLnZhbHVlKCksIDAsIHpvb21lZEJveC5sZWZ0KCkudmFsdWUoKSk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sQm9yZGVyKHBhcnQsIGZvbnQsIHpvb21lZEJv
eCwgem9vbUZhY3Rvcik7CiAgICAgfQogfQogCiBMZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRyb2xQ
YWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBM
ZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0
Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewotICAgICAgICAgICAg
Ly8gSnVzdCB1c2UgOHB4LiAgQXBwS2l0IHdhbnRzIHRvIHVzZSAxMXB4IGZvciBtaW5pIGJ1dHRv
bnMsIGJ1dCB0aGF0IHBhZGRpbmcgaXMganVzdCB0b28gbGFyZ2UKLSAgICAgICAgICAgIC8vIGZv
ciByZWFsLXdvcmxkIFdlYiBzaXRlcyAoY3JlYXRpbmcgYSBodWdlIG5lY2Vzc2FyeSBtaW5pbXVt
IHdpZHRoIGZvciBidXR0b25zIHdob3NlIHNwYWNlIGlzCi0gICAgICAgICAgICAvLyBieSBkZWZp
bml0aW9uIGNvbnN0cmFpbmVkLCBzaW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZvciBzbWFsbCBj
cmFtcGVkIGVudmlyb25tZW50cy4KLSAgICAgICAgICAgIC8vIFRoaXMgYWxzbyBndWFyYW50ZWVz
IHRoZSBIVE1MIDxidXR0b24+IHdpbGwgbWF0Y2ggb3VyIHJlbmRlcmluZyBieSBkZWZhdWx0LCBz
aW5jZSB3ZSdyZSB1c2luZyBhIGNvbnNpc3RlbnQKLSAgICAgICAgICAgIC8vIHBhZGRpbmcuCi0g
ICAgICAgICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDggKiB6b29tRmFjdG9yOwotICAgICAgICAg
ICAgcmV0dXJuIExlbmd0aEJveCgyLCBwYWRkaW5nLCAzLCBwYWRkaW5nKTsKLSAgICAgICAgfQot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sUGFkZGlu
ZyhwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3IpOworICAgIGNhc2UgUHVzaEJ1dHRv
blBhcnQ6IHsKKyAgICAgICAgLy8gSnVzdCB1c2UgOHB4LiBBcHBLaXQgd2FudHMgdG8gdXNlIDEx
cHggZm9yIG1pbmkgYnV0dG9ucywgYnV0IHRoYXQgcGFkZGluZyBpcyBqdXN0IHRvbyBsYXJnZQor
ICAgICAgICAvLyBmb3IgcmVhbC13b3JsZCBXZWIgc2l0ZXMgKGNyZWF0aW5nIGEgaHVnZSBuZWNl
c3NhcnkgbWluaW11bSB3aWR0aCBmb3IgYnV0dG9ucyB3aG9zZSBzcGFjZSBpcworICAgICAgICAv
LyBieSBkZWZpbml0aW9uIGNvbnN0cmFpbmVkLCBzaW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZv
ciBzbWFsbCBjcmFtcGVkIGVudmlyb25tZW50cy4KKyAgICAgICAgLy8gVGhpcyBhbHNvIGd1YXJh
bnRlZXMgdGhlIEhUTUwgPGJ1dHRvbj4gd2lsbCBtYXRjaCBvdXIgcmVuZGVyaW5nIGJ5IGRlZmF1
bHQsIHNpbmNlIHdlJ3JlIHVzaW5nIGEgY29uc2lzdGVudAorICAgICAgICAvLyBwYWRkaW5nLgor
ICAgICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDggKiB6b29tRmFjdG9yOworICAgICAgICByZXR1
cm4gTGVuZ3RoQm94KDIsIHBhZGRpbmcsIDMsIHBhZGRpbmcpOworICAgIH0KKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gVGhlbWU6OmNvbnRyb2xQYWRkaW5nKHBhcnQsIGZvbnQsIHpvb21l
ZEJveCwgem9vbUZhY3Rvcik7CiAgICAgfQogfQogCkBAIC03NzYsNyArNzY2LDcgQEAgdm9pZCBU
aGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3Qg
Q29udHJvbFN0YXRlcyYgc3QKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVj
a2JveFBhcnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVk
IHRvIGFjY291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2Rh
dGUgdGhlIGNoZWNrYm94Ci0gICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBX
ZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBp
biBXZWJLaXQuCisgICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suIFdlIGRvbid0
IGNvbnNpZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9sIGluIFdlYktp
dC4KICAgICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IHNoYXJlZENoZWNrYm94Q2VsbChzdGF0ZXMs
IHpvb21SZWN0U2l6ZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICBOU0NvbnRyb2xTaXplIGNv
bnRyb2xTaXplID0gW2NlbGwgY29udHJvbFNpemVdOwogICAgICAgICAgICAgSW50U2l6ZSB6b29t
ZWRTaXplID0gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXTsKQEAgLTc4Nyw3ICs3NzcsNyBA
QCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0
LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAgICAgICB9CiAgICAgICAgIGNhc2UgUmFkaW9Q
YXJ0OiB7CiAgICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBh
Y2NvdW50IGZvciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRo
ZSByYWRpbyBidXR0b24KLSAgICAgICAgICAgIC8vIHNoYWRvdyIuICBXZSBkb24ndCBjb25zaWRl
ciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCisgICAg
ICAgICAgICAvLyBzaGFkb3ciLiBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJv
dW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCiAgICAgICAgICAgICBOU0NlbGwgKmNlbGwg
PSBzaGFyZWRSYWRpb0NlbGwoc3RhdGVzLCB6b29tUmVjdFNpemUsIHpvb21GYWN0b3IpOwogICAg
ICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsK
ICAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6
ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCmluZGV4IDI3MmVhMTM2
NjE1NmZjYzE5ZDY0OGNkNjE2MDc1MWUxMmEyYjI4ZWEuLjcyZTc4ZDc4ZTY1ODQzZDQ5N2RmOWZi
ZjdmNDNjODg0N2NkYzU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5oCkBAIC0zMiw3ICszMiw2IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5j
bHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5o
IgogI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKaW5kZXggNWQ4
NmZmMjU0N2NhMTUzNmJjMzVjNGU3ZGE4YjMyZGE5ZTQwYTVjNC4uNjZmODExN2FiNzZmOGJiMzdl
YTM1YjlkMWM0OTQxOGQxODEwMTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAK
LSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291
cmNlLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5k
ZXggMTIyYmJkZjNjNGRmYjFkZjJjYmEwODQyNDdmOGIxOTJiY2MxYjRiOC4uMGM0YjVjYmM2MjAx
N2Q5YWI3ZGE5ZjcyZjVhNjcyNmVhOTIxZWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtMzIsNyArMzIs
NiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5k
ZXggZmY1MmI3ZDM5MTYzZDVkOWY4NDE0NjQzMGJjM2U4NTY2MmZkN2Q2NS4uZTAwZGU5NjY1YTBh
MDNkZmU4MWNhY2UwMjI2ZTU0OTg5MGY1NjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBzdGF0aWMgdWludDMyX3QgbWFnaWNOdW1iZXIoKQogCiBjb25zdCBTdHJpbmcm
IGZpbGVFeHRlbnNpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIGV4dGVuc2lvbiwgKEFTQ0lJTGl0ZXJhbCgiLmRvd25sb2FkIikpKTsKKyAg
ICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBleHRlbnNpb24geyBBU0NJSUxp
dGVyYWwgeyAiLmRvd25sb2FkIiB9IH07CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmNwcAppbmRleCBmOGU1NmI2ZWU0NGU5ODI0NjkzMDgxOTQ2NjQ1MjFmMWU4NjEwODJlLi4yZGRj
MzcwYjljMjJiY2UwYjUzZmI2NGJjMDMxOGQwYjVmZGI2ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjk5
LDEzICsyOTksMTIgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwg
Y29uc3QgU3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmUKIAogdm9pZCByZXBsYWNlTmV3
bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3RyaW5nJiBzdHIpCiB7Ci0gICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgd2luZG93c05ld2xpbmUsIChBU0NJSUxp
dGVyYWwoIlxyXG4iKSkpOwogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgKytpbmRleCkgewogICAgICAg
ICBpZiAoc3RyW2luZGV4XSAhPSAnXG4nIHx8IChpbmRleCA+IDAgJiYgc3RyW2luZGV4IC0gMV0g
PT0gJ1xyJykpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0cltpbmRleF0pOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHdpbmRvd3NOZXdsaW5lKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcclxuIik7CiAgICAgfQogICAgIHN0ciA9IHJl
c3VsdC50b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCmluZGV4IDA3NzIzNzZlZGI2YzdjNDc4ZTliZDg4MzA4M2ZiNTExMzQ2YWVk
YmUuLmVjZjllOTA4ZGQ3MDQ5ZTEyMGUxZWMwYTFmNjk2MmQ1ODc2MjA2YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQyLDcgKzQyLDYg
QEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1Nl
Y29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CkBAIC0yNTcsMjEgKzI1Niwy
MSBAQCBTdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBT
dHJpbmcgYnVuZGxlTmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgbmFtZSwgKEFTQ0lJTGl0ZXJhbCgiV2ViS2l0IikpKTsKKyAgICBzdGF0aWMgY29u
c3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBTdHJpbmcgbmFt
ZSB7IEFTQ0lJTGl0ZXJhbCB7ICJXZWJLaXQiIH0gfTsKIAogI2lmIFVTRShDRikKLSAgICBzdGF0
aWMgYm9vbCBpbml0aWFsaXplZDsKLQotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBD
RkJ1bmRsZUdldE1haW5CdW5kbGUoKSkKLSAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxl
RXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUs
IGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxl
ID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYg
YnVuZGxlRXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShi
dW5kbGUsIGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKENG
R2V0VHlwZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCiAgICAg
ICAgICAgICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5k
bGVFeGVjdXRhYmxlKTsKLSAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICNlbmRpZgog
CisgICAgICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKwogICAgIHJldHVybiBuYW1lOwogfQog
CkBAIC0yODMsOCArMjgyLDcgQEAgc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JE
IHBhdGhJZGVudGlmaWVyKQogICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkp
KTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikp
OwogCi0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29tcGFueU5h
bWVEaXJlY3RvcnksIChBU0NJSUxpdGVyYWwoIkFwcGxlIENvbXB1dGVyXFwiKSkpOwotICAgIGRp
cmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNvbXBhbnlOYW1l
RGlyZWN0b3J5ICsgYnVuZGxlTmFtZSgpKTsKKyAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkp
OwogICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1Ro
ZW1lV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAKaW5k
ZXggZDVhZDk3NzNkODQxMjlmMmUwMzRiNWEzNmZmYzFjZjYyMTFhZWRhYi4uNzI3ZTRmZWNiNmMx
MzM1ZjZjZjczMGM3YmU4ZmFiZWRkMWNjMGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
cGUvVGhlbWVXUEUuY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1UaGVtZSogcGxhdGZvcm1UaGVtZSgpCitUaGVtZSYgVGhlbWVXUEU6OnNpbmdsZXRvbigp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1lV1BFPiB0aGVtZTsKLSAgICByZXR1
cm4gJnRoZW1lLmdldCgpOworICAgIHJldHVybiB0aGVtZTsKIH0KIAogTGVuZ3RoU2l6ZSBUaGVt
ZVdQRTo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnRDYXNjYWRlLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9y
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BF
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaAppbmRleCA3MzlmNWMx
ZTFjYWFiZjRjNDA0MzQzNWY0OTdmODllNjkxMzRiMDNmLi5iNTI0YzQ4OTdjNWFmZDhiMDA5MTc4
ODkwNDJkNDMzYWYzM2IzM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
cGUvVGhlbWVXUEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUu
aApAQCAtMjksMTYgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGhl
bWVXUEUgOiBwdWJsaWMgVGhlbWUgewotcHVibGljOgotICAgIFRoZW1lV1BFKCkgeyB9Ci0gICAg
dmlydHVhbCB+VGhlbWVXUEUoKSB7IH0KLQotICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29u
dHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0KSBj
b25zdCBvdmVycmlkZTsKK2NsYXNzIFRoZW1lV1BFIGZpbmFsIDogcHVibGljIFRoZW1lIHsKK3By
aXZhdGU6CisgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQpIGNvbnN0IGZpbmFsOwogCi0gICAg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3JvbGxWaWV3KiwgZmxvYXQsIGZsb2F0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwg
ZmxvYXQpIGZpbmFsOwogCi1wcml2YXRlOgogICAgIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9s
U3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpOwogICAg
IHZvaWQgcGFpbnRSYWRpbyhDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQpOwogICAgIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFN0YXRlcyYs
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDI4MTI2NGRkOGI4YzgxYzNiNzgxZWU0
MmZhMDA5ZjMxMmE5ZWQ2NTEuLmVjMWY1NTJmOTUwYzMyNjYzOGVmNjI2ZTVjYWIyYTRjYzFiMmJl
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMSw3ICsx
LDUgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUgaW1wbGVtZW50YXRp
b24gZm9yIGZvcm0gY29udHJvbHMgaW4gV2ViQ29yZS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAxMCwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCkBAIC01OSw3ICs1Nyw5IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2VuZGlmCiAKLS8vIFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUgc2hhcmVkIGJ5IGFs
bCB0aGVtZXMgb24gZXZlcnkgcGxhdGZvcm0uCisjaWYgVVNFKE5FV19USEVNRSkKKyNpbmNsdWRl
ICJUaGVtZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzIsOSArNzIs
NiBAQCBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkKIH0KIAogUmVuZGVyVGhl
bWU6OlJlbmRlclRoZW1lKCkKLSNpZiBVU0UoTkVXX1RIRU1FKQotICAgIDogbV90aGVtZShwbGF0
Zm9ybVRoZW1lKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMTIyLDcgKzExOSw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRl
clN0eWxlJiBzdHlsZSwKICAgICBjYXNlIEJ1dHRvblBhcnQ6IHsKICAgICAgICAgLy8gQm9yZGVy
CiAgICAgICAgIExlbmd0aEJveCBib3JkZXJCb3goc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSwgc3R5
bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpLCBzdHlsZS5i
b3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgIGJvcmRlckJveCA9IG1fdGhlbWUtPmNvbnRyb2xC
b3JkZXIocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgYm9yZGVyQm94LCBzdHlsZS5lZmZlY3Rp
dmVab29tKCkpOworICAgICAgICBib3JkZXJCb3ggPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJv
bEJvcmRlcihwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBib3JkZXJCb3gsIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKSk7CiAgICAgICAgIGlmIChib3JkZXJCb3gudG9wKCkudmFsdWUoKSAhPSBzdGF0
aWNfY2FzdDxpbnQ+KHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpKSB7CiAgICAgICAgICAgICBpZiAo
Ym9yZGVyQm94LnRvcCgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgc3R5bGUuc2V0Qm9yZGVy
VG9wV2lkdGgoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpOwpAQCAtMTUxLDMyICsxNDgsMzIgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICB9CiAKICAgICAgICAgLy8gUGFkZGluZwot
ICAgICAgICBMZW5ndGhCb3ggcGFkZGluZ0JveCA9IG1fdGhlbWUtPmNvbnRyb2xQYWRkaW5nKHBh
cnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnBhZGRpbmdCb3goKSwgc3R5bGUuZWZmZWN0
aXZlWm9vbSgpKTsKKyAgICAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3ggPSBUaGVtZTo6c2luZ2xl
dG9uKCkuY29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUucGFk
ZGluZ0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAocGFkZGluZ0Jv
eCAhPSBzdHlsZS5wYWRkaW5nQm94KCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRQYWRkaW5nQm94
KFdURk1vdmUocGFkZGluZ0JveCkpOwogCiAgICAgICAgIC8vIFdoaXRlc3BhY2UKLSAgICAgICAg
aWYgKG1fdGhlbWUtPmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UocGFydCkpCisgICAgICAg
IGlmIChUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShwYXJ0
KSkKICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKLSAgICAgICAgICAgIAor
CiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAgICAgICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVp
Z2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6b29tLgogICAgICAgICAvLyBGSVhNRTogQ2hl
Y2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdpZHRoL21heC13aWR0aCBp
bnRvIGFjY291bnQuCi0gICAgICAgIExlbmd0aFNpemUgY29udHJvbFNpemUgPSBtX3RoZW1lLT5j
b250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCB7IHN0eWxlLndpZHRoKCksIHN0
eWxlLmhlaWdodCgpIH0sIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIExlbmd0aFNp
emUgY29udHJvbFNpemUgPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFNpemUocGFydCwgc3R5
bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQoKSB9LCBzdHls
ZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAoY29udHJvbFNpemUud2lkdGggIT0gc3R5
bGUud2lkdGgoKSkKICAgICAgICAgICAgIHN0eWxlLnNldFdpZHRoKFdURk1vdmUoY29udHJvbFNp
emUud2lkdGgpKTsKICAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCAhPSBzdHlsZS5oZWln
aHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldEhlaWdodChXVEZNb3ZlKGNvbnRyb2xTaXplLmhl
aWdodCkpOwogCiAgICAgICAgIC8vIE1pbi1XaWR0aCAvIE1pbi1IZWlnaHQKLSAgICAgICAgTGVu
Z3RoU2l6ZSBtaW5Db250cm9sU2l6ZSA9IG1fdGhlbWUtPm1pbmltdW1Db250cm9sU2l6ZShwYXJ0
LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBM
ZW5ndGhTaXplIG1pbkNvbnRyb2xTaXplID0gVGhlbWU6OnNpbmdsZXRvbigpLm1pbmltdW1Db250
cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkp
OwogICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lkdGggIT0gc3R5bGUubWluV2lkdGgoKSkK
ICAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdURk1vdmUobWluQ29udHJvbFNpemUud2lk
dGgpKTsKICAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLmhlaWdodCAhPSBzdHlsZS5taW5IZWln
aHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChXVEZNb3ZlKG1pbkNvbnRyb2xT
aXplLmhlaWdodCkpOwogCiAgICAgICAgIC8vIEZvbnQKLSAgICAgICAgaWYgKGF1dG8gdGhlbWVG
b250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5
bGUuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgICAgICBpZiAoYXV0byB0aGVtZUZvbnQgPSBUaGVt
ZTo6c2luZ2xldG9uKCkuY29udHJvbEZvbnQocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5
bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAgICAgLy8gSWYgb3ZlcnJpZGluZyB0aGUg
c3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9udCwgYWxzbyBvdmVycmlkZSB0aGUgbGlu
ZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBoZWlnaHQuCiAgICAgICAgICAgICBzdHls
ZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKICAgICAg
ICAgICAgIGlmIChzdHlsZS5zZXRGb250RGVzY3JpcHRpb24odGhlbWVGb250LnZhbHVlKCkpKQpA
QCAtMzA2LDcgKzMwMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJv
eCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBCdXR0
b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRlQ29u
dHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIG1fdGhl
bWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0KCksIGRldmlj
ZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3
KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IpOworICAg
ICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJ
bmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0
aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBh
Z2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKQEAgLTY4Niw3ICs2ODMsNyBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZv
cm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAogaW50IFJl
bmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAog
ewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgcmV0dXJuIGJveC5oZWlnaHQoKSArIGJveC5tYXJn
aW5Ub3AoKSArIG1fdGhlbWUtPmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KGJveC5zdHlsZSgp
LmFwcGVhcmFuY2UoKSkgKiBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CisgICAgcmV0dXJu
IGJveC5oZWlnaHQoKSArIGJveC5tYXJnaW5Ub3AoKSArIFRoZW1lOjpzaW5nbGV0b24oKS5iYXNl
bGluZVBvc2l0aW9uQWRqdXN0bWVudChib3guc3R5bGUoKS5hcHBlYXJhbmNlKCkpICogYm94LnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogI2Vsc2UKICAgICByZXR1cm4gYm94LmhlaWdodCgpICsg
Ym94Lm1hcmdpblRvcCgpOwogI2VuZGlmCkBAIC03MzAsNyArNzI3LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZTo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgRmxv
YXRSZWN0JiByZWMKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIENvbnRyb2xTdGF0ZXMgc3Rh
dGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIocmVuZGVyZXIpKTsKLSAgICBtX3Ro
ZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChyZW5kZXJlci5zdHlsZSgpLmFwcGVhcmFuY2Uo
KSwgc3RhdGVzLCByZWN0LCByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAg
VGhlbWU6OnNpbmdsZXRvbigpLmluZmxhdGVDb250cm9sUGFpbnRSZWN0KHJlbmRlcmVyLnN0eWxl
KCkuYXBwZWFyYW5jZSgpLCBzdGF0ZXMsIHJlY3QsIHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsKICAgICBVTlVTRURf
UEFSQU0ocmVjdCk7CkBAIC05NDUsNiArOTQyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0
TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW4K
IH0KIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorCiB2b2lkIFJlbmRlclRoZW1lOjphZGp1
c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVs
ZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLnNldEJveFNoYWRvdyhudWxscHRyKTsKQEAgLTk2
NCw3ICs5NjIsOCBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludE1ldGVyKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlYwogewogICAgIHJldHVybiB0cnVl
OwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBNRVRFUl9FTEVNRU5UCiAKIHZvaWQgUmVuZGVyVGhl
bWU6OmFkanVzdENhcHNMb2NrSW5kaWNhdG9yU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CkBAIC05NzYsNiArOTc1LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZTo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLAogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwog
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0QXR0YWNobWVudFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogfQpAQCAtOTg0LDkgKzk4NCwx
MSBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSQogewogICAgIHJldHVybiBmYWxzZTsKIH0KKwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKwogTGF5b3V0VW5pdCBSZW5k
ZXJUaGVtZTo6c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gMDsKQEAgLTEwNjksNiArMTA3MSw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVy
VGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAgIH0KIH0KKwog
I2VuZGlmCiAKIFNlY29uZHMgUmVuZGVyVGhlbWU6OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9y
UHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MmKSBjb25zdApAQCAtMTI4NSwxMCArMTI4OCwxMiBA
QCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRD
b2xvcigpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiBDb2xvciBSZW5k
ZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogewogICAgIHJldHVybiBzaW5nbGV0b24oKS5w
bGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7CiB9CisKICNlbmRpZgogCiAvLyBWYWx1ZSBjaG9z
ZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMgY2FuIGJlIHR3ZWFrZWQuCkBAIC0xMzE1LDkgKzEzMjAs
OSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRl
eHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncgogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwog
fQogCi12b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xv
ciYgYykKK3ZvaWQgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKIHsKLSAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0gYzsKKyAgICBjdXN0
b21Gb2N1c1JpbmdDb2xvcigpID0gY29sb3I7CiB9CiAKIENvbG9yIFJlbmRlclRoZW1lOjpmb2N1
c1JpbmdDb2xvcigpCkBAIC0xMzQ5LDEzICsxMzU0LDE0IEBAIFN0cmluZyBSZW5kZXJUaGVtZTo6
ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0LCBjb25zdCBGb250
Q2FzCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiBDb2xvciBSZW5kZXJUaGVtZTo6
cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2xvciBp
cyBleHBlY3RlZCB0byBiZSBkcmF3biBvbiBhIHNlbWktdHJhbnNwYXJlbnQgb3ZlcmxheSwKICAg
ICAvLyBtYWtpbmcgaXQgbW9yZSB0cmFuc3BhcmVudCB0aGFuIGl0cyBhbHBoYSB2YWx1ZSBpbmRp
Y2F0ZXMuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IENvbG9yPiBkZWZhdWx0VGFw
SGlnaGxpZ2h0Q29sb3IgPSBDb2xvcigwLCAwLCAwLCAxMDIpOwotICAgIHJldHVybiBkZWZhdWx0
VGFwSGlnaGxpZ2h0Q29sb3I7CisgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAsIDEwMik7CiB9CisK
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZS5oCmluZGV4IGM3MjgwMWRkZjAzNWFmM2Y2ZTYyZTAzOTY3NWNjN2ZiYWRkNjg1
MWMuLmEyOGJhYWNhN2Q1MDcyZGI2YjY0NjUwNjRlZmI1Mzc0ZTlkM2UyYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yNCwxMiArMjQsNyBAQAogI2luY2x1ZGUg
IlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBvcHVwTWVudVN0eWxlLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKLQotI2lmIFVTRShORVdfVEhFTUUpCi0jaW5jbHVkZSAiVGhlbWUuaCIKLSNl
bHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDA0LDEwICszOTksNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgQ29sb3IgbV9p
bmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xv
ciBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBD
b2xvciBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKLQotI2lmIFVT
RShORVdfVEhFTUUpCi0gICAgVGhlbWUqIG1fdGhlbWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZp
YyB0aGVtZS4KLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKaW5kZXggZDkzODkzZTk4NDllZWFj
NjVkOWZlOTNhMjAzZTJmZDg3Njg0NDM0My4uNjU4NTg3N2Y5ZDNiNDdlYTIyN2FjN2RhZmMzZjUz
MzhlOTExOTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtl
ci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlkb3dAZ21haWwuY29t
PgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBBbGwgcmlnaHQgcmVz
ZXJ2ZWQuCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRm9u
dENhc2NhZGUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxpbmVJ
bmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IDU2Y2E1ZWEzNmMy
ZjBiNjUzY2E2YzI5MjIzYWVhMGRhYTA4NDM1ZDkuLjQ4N2U4MjI0M2M0OGNmYTdlZDhkZWQ1OTBi
YzExODQyOTYxYzU2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtNjQsMjcgKzY0LDE3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlUG9zaXRpb24uaD4KICNp
bXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+Ci0KICNpbXBvcnQgPFdlYkNvcmUvV0FLQXBw
S2l0U3R1YnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXVzaW5nIFdlYkNvcmU6
OkZsb2F0UG9pbnQ7Ci11c2luZyBXZWJDb3JlOjpGb250Q2FzY2FkZTsKLXVzaW5nIFdlYkNvcmU6
OkhUTUxBcmVhRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ7Ci11c2lu
ZyBXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OklubGluZUJveDsK
LXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7CiB1c2luZyBXZWJDb3JlOjpOb2RlOwogdXNpbmcgV2Vi
Q29yZTo6UG9zaXRpb247CiB1c2luZyBXZWJDb3JlOjpSYW5nZTsKIHVzaW5nIFdlYkNvcmU6OlJl
bmRlckJsb2NrOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVyQm94OwogdXNpbmcgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyU3R5bGU7CiB1c2luZyBXZWJDb3JlOjpS
ZW5kZXJUZXh0OwotdXNpbmcgV2ViQ29yZTo6Um9vdElubGluZUJveDsKIHVzaW5nIFdlYkNvcmU6
OlZpc2libGVQb3NpdGlvbjsKIAogQGltcGxlbWVudGF0aW9uIERPTVJhbmdlIChVSUtpdEV4dGVu
c2lvbnMpCkBAIC0xNjEsNyArMTUxLDcgQEAgLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXMKICAg
ICB9CiAKICAgICBpZiAoIVtyZWN0cyBjb3VudF0pCi0gICAgICAgIHJlY3RzID0gW05TQXJyYXkg
YXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6Ym91bmRzXV07CisgICAgICAg
IHJlY3RzID0gQFtbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OmJvdW5kc11dOwogCiAgICAgcmV0dXJu
IHJlY3RzOwogfQpAQCAtMTgyLDcgKzE3Miw3IEBAIC0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRz
CiAKICAgICBpZiAoIVtxdWFkcyBjb3VudF0pIHsKICAgICAgICAgV0tRdWFkT2JqZWN0KiBxdWFk
T2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0
ZVF1YWRdXTsKLSAgICAgICAgcXVhZHMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cXVhZE9i
amVjdF07CisgICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0XTsKICAgICAgICAgW3F1YWRPYmpl
Y3QgcmVsZWFzZV07CiAgICAgfQogCkBAIC0yNTAsMTIgKzI0MCwxMSBAQCAtIChDR0Zsb2F0KXRl
eHRIZWlnaHQKIAogLSAoRE9NTm9kZSAqKWZpbmRFeHBsb2RlZFRleHROb2RlQXRQb2ludDooQ0dQ
b2ludClwb2ludAogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjb3JlKHNlbGYpLT5y
ZW5kZXJlcigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsK
ICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIpKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgUmVuZGVyQmxvY2tGbG93KiBibG9jayA9IGRvd25jYXN0PFJlbmRlckJsb2Nr
Rmxvdz4ocmVuZGVyZXIpOwotICAgIFJlbmRlclRleHQqIHJlbmRlclRleHQgPSBibG9jay0+Zmlu
ZENsb3Nlc3RUZXh0QXRBYnNvbHV0ZVBvaW50KHBvaW50KTsKKyAgICBhdXRvKiByZW5kZXJUZXh0
ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIpLmZpbmRDbG9zZXN0VGV4dEF0
QWJzb2x1dGVQb2ludChwb2ludCk7CiAgICAgaWYgKHJlbmRlclRleHQgJiYgcmVuZGVyVGV4dC0+
dGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGtpdChyZW5kZXJUZXh0LT50ZXh0Tm9kZSgpKTsK
IApAQCAtMjY2LDEwICsyNTUsOCBAQCBAZW5kCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0KIAotQGlt
cGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpIAot
CitAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9u
cykKIC0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiAwOyB9
Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVtZW50IChET01VSUtpdENvbXBs
ZXhpdHlFeHRlbnNpb25zKSAKQEAgLTMwOCw3ICsyOTUsNiBAQCBAaW1wbGVtZW50YXRpb24gRE9N
SFRNTEJvZHlFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0
cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIDA7IH0KIEBlbmQKIAotCiAv
LyBNYXhpbWFsbHkgY29tcGxleCBlbGVtZW50cwogCiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEZv
cm1FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQpAQCAtMzQzLDIzICszMjks
MjAgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxTZWxlY3RFbGVtZW50IChET01VSUtpdENvbXBs
ZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9u
IHsgcmV0dXJuIElOVF9NQVg7IH0KIEBlbmQKIAotCiAvLy0tLS0tLS0tLS0tLS0tLS0tCiAgICAg
ICAgIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxBcmVhRWxlbWVudCAoRE9NVUlLaXRFeHRlbnNp
b25zKQogCi0tIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVy
CistIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewogICAg
IC8vIGlnbm9yZXMgdHJhbnNmb3JtcwotICAgIHJldHVybiBhbk93bmVyID8gc25hcHBlZEludFJl
Y3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpIDog
Q0dSZWN0WmVybzsKKyAgICByZXR1cm4gb3duZXIgPyBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYp
LT5jb21wdXRlUmVjdChjb3JlKG93bmVyKS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKIH0K
IAotLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKKy0g
KFdLUXVhZClhYnNvbHV0ZVF1YWRXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewotICAgIGlm
IChhbk93bmVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBFQ0xBSVIKLSAgICAgICAgLy9XZWJDb3Jl
OjpGbG9hdFF1YWQgdGhlUXVhZCA9IGNvcmUoc2VsZiktPmdldEFic29sdXRlUXVhZChjb3JlKGFu
T3duZXIpLT5yZW5kZXJlcigpKTsKLSAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc25h
cHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVyKS0+cmVuZGVy
ZXIoKSkpOworICAgIGlmIChvd25lcikgeworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qg
PSBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKG93bmVyKS0+cmVu
ZGVyZXIoKSkpOwogICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAgICAgcXVhZC5wMSA9IENHUG9p
bnRNYWtlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1YWQucDIgPSBDR1BvaW50TWFr
ZShyZWN0Lm1heFgoKSwgcmVjdC55KCkpOwpAQCAtMzcyLDE1ICszNTUsMTUgQEAgLSAoV0tRdWFk
KWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKICAgICByZXR1cm4gemVy
b1F1YWQ7CiB9CiAKLS0gKE5TQXJyYXkgKilib3VuZGluZ0JveGVzV2l0aE93bmVyOihET01Ob2Rl
ICopYW5Pd25lcgorLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUg
Kilvd25lcgogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUg
dmFsdWVXaXRoUmVjdDpbc2VsZiBib3VuZGluZ0JveFdpdGhPd25lcjphbk93bmVyXV1dOworICAg
IHJldHVybiBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYgYm91bmRpbmdCb3hXaXRoT3du
ZXI6b3duZXJdXV07CiB9CiAKLS0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihE
T01Ob2RlICopYW5Pd25lcgorLSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHNXaXRoT3duZXI6KERP
TU5vZGUgKilvd25lcgogewotICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtbV0tRdWFk
T2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOmFu
T3duZXJdXTsKLSAgICBOU0FycmF5KiAgICBxdWFkQXJyYXkgPSBbTlNBcnJheSBhcnJheVdpdGhP
YmplY3Q6cXVhZE9iamVjdF07CisgICAgV0tRdWFkT2JqZWN0ICpxdWFkT2JqZWN0ID0gW1tXS1F1
YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6
b3duZXJdXTsKKyAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBAW3F1YWRPYmplY3RdOwogICAgIFtx
dWFkT2JqZWN0IHJlbGVhc2VdOwogICAgIHJldHVybiBxdWFkQXJyYXk7CiB9CkBAIC00MDUsMTMg
KzM4OCwxMyBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdlRWxlbWVudCAoV2ViRE9NSFRN
TEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRlKQogCiAtIChOU0RhdGEgKilkYXRhUmVwcmVz
ZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiB7Ci0gICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBhdXRvKiBjYWNo
ZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CiAgICAgaWYgKCFjYWNoZWRJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpJbWFnZSogaW1hZ2UgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgp
OwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOworICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwpAQCAtNDE5LDcgKzQwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXBy
ZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQog
ewotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlICpjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNh
Y2hlZEltYWdlKCk7CisgICAgYXV0byAqY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJ
bWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZSgpKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAwYmY4YjU5MGQyZDI3MzhlODVhMmVm
NzUwODQ5MGNmN2U5YzdjZDYxLi5iMGU2MDZlOTQzMzUzNjBmYzg4MzQyNjM3OTEzYzZhNWRiZmZi
MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcApAQCAtMzAsMjYgKzMwLDI5IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisjaW5jbHVkZSA8c3RkbGli
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjZW5kaWYK
LSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsdWdp
blBhY2thZ2U+ID4gUGx1Z2luUGFja2FnZUJ5TmFtZU1hcDsKIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCisKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVBl
cnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4OwogCiBzdGF0aWMgYm9vbCBn
UGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVJc0VuYWJsZWQ7CiAKIFN0cmluZyYgcGVyc2lz
dGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBjYWNoZVBhdGgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBjYWNoZVBhdGg7CiAgICAgcmV0dXJuIGNhY2hlUGF0aDsKIH0KKwogI2Vu
ZGlmCiAKIFBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1
bGVyLmNwcAppbmRleCAxMjAxMmUwMmZlN2RhYmIwOTBiMWM3MmIyOTZiODVmOTkzZjAzNzc2Li5k
YTEzMTQ3N2U2NDlkOWIwOWJjNDQ3ZmM1MmY1Y2I3NjFmMWVlZTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlci5jcHAKQEAgLTMwLDggKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyJiBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVs
ZXIoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChQbHVnaW5NYWluVGhy
ZWFkU2NoZWR1bGVyLCBzY2hlZHVsZXIsICgpKTsKLQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyPiBzY2hlZHVsZXI7CiAgICAgcmV0dXJuIHNjaGVk
dWxlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggMzFhMDhlODU3
Mjg0NGQ2ZDZmN2EzYmMyOTBiZjgyNTI3ZjgyNGMzYS4uM2E5OGM2ZjY2MDY3MWZkYzBiODI5Yzk4
MjhjOGE5MmMwY2NmMDI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1T
dHJhdGVnaWVzOwogfQogCiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRl
Z2llcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IGFhZTk5ZWI1
MjI5MTk0MDA2MjU3OTljNWI3MGQyMTZiMjM3OGM1NWYuLjIyYjA4NDZhOTA2Yjc4Mjg2NTZiOGQ5
NTdjMTBhMGRmYWZmOGIzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3Bw
CkBAIC0yMzYsOSArMjM2LDkgQEAgVUxPTkcgV2ViSGlzdG9yeTo6UmVsZWFzZSgpCiAKIC8vIElX
ZWJIaXN0b3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotc3RhdGljIGlubGluZSBDT01QdHI8V2ViSGlzdG9yeT4mIHNo
YXJlZEhpc3RvcnlTdG9yYWdlKCkKK3N0YXRpYyBDT01QdHI8V2ViSGlzdG9yeT4mIHNoYXJlZEhp
c3RvcnlTdG9yYWdlKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoQ09N
UHRyPFdlYkhpc3Rvcnk+LCBzaGFyZWRIaXN0b3J5LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPENPTVB0cjxXZWJIaXN0b3J5Pj4gc2hhcmVkSGlzdG9yeTsKICAgICByZXR1cm4gc2hh
cmVkSGlzdG9yeTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5jcHAKaW5kZXggOGZmMGVmY2M4YTU4NmFlMTNjODI5ODZjN2RlZDBkMDQy
OTVmYWMwZi4uYjc1NzM5MTU5ZmVmZDIxZWQ2ZmEzMzY4ODgwYTE5YjliYzE0MjFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBA
IC00NywyNSArNDcsMjUgQEAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTG9jYWxpemVkU3RyaW5n
Kj4gTG9jYWxpemVkU3RyaW5nTWFwOwogCiBzdGF0aWMgTG9jayYgbWFpbkJ1bmRsZUxvY1N0cmlu
Z3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExvY2ssIG11
dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExvY2s+IG11dGV4OwogICAgIHJl
dHVybiBtdXRleDsKIH0KIAogc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCYgbWFpbkJ1bmRsZUxv
Y1N0cmluZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NhbGl6
ZWRTdHJpbmdNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NhbGl6
ZWRTdHJpbmdNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCiBzdGF0aWMgTG9jayYgZnJh
bWV3b3JrTG9jU3RyaW5nc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoTG9jaywgbXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jaz4g
bXV0ZXg7CiAgICAgcmV0dXJuIG11dGV4OwogfQogCiBzdGF0aWMgTG9jYWxpemVkU3RyaW5nTWFw
IGZyYW1ld29ya0xvY1N0cmluZ3MoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChMb2NhbGl6ZWRTdHJpbmdNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NhbGl6ZWRTdHJpbmdNYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGQwNjZkM2FhMTA4OTVmNmI2MGZhYTdlODU3
OTNkMzcxMjc2NGNlNjQuLjliNzgzMTEwZmU2MzI0Njg1YjZlM2IxY2UyNzc2MGRiNjE4YWFmNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0yMjYsMTcgKzIyNiwxOCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBKU0M6
OkpTTG9jazsKIAorc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCk7CisKK3N0YXRp
YyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXkgPSBDRlNUUigiV2ViS2l0
TG9jYWxDYWNoZSIpOworCiBzdGF0aWMgSE1PRFVMRSBhY2Nlc3NpYmlsaXR5TGliOworCiBzdGF0
aWMgSGFzaFNldDxXZWJWaWV3Kj4mIHBlbmRpbmdEZWxldGVCYWNraW5nU3RvcmVTZXQoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlZpZXcqPj4gcGVuZGluZ0RlbGV0
ZUJhY2tpbmdTdG9yZVNldDsKICAgICByZXR1cm4gcGVuZGluZ0RlbGV0ZUJhY2tpbmdTdG9yZVNl
dDsKIH0KIAotc3RhdGljIENGU3RyaW5nUmVmIFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSA9
IENGU1RSKCJXZWJLaXRMb2NhbENhY2hlIik7Ci0KLXN0YXRpYyBTdHJpbmcgd2ViS2l0VmVyc2lv
blN0cmluZygpOwotCiBXZWJWaWV3KiBraXQoUGFnZSogcGFnZSkKIHsKICAgICBpZiAoIXBhZ2Up
CkBAIC0xNTU1LDEwICsxNTU2LDggQEAgYm9vbCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogU3RyaW5nIFdlYlZpZXc6
OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uTmFtZSkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBvc1ZlcnNpb24sICh3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5nKCkpKTsKLSAgICBERVBSRUNB
VEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB3ZWJLaXRWZXJzaW9uLCAod2ViS2l0VmVy
c2lvblN0cmluZygpKSk7Ci0KLSAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIs
IG9zVmVyc2lvbiwgIikgQXBwbGVXZWJLaXQvIiwgd2ViS2l0VmVyc2lvbiwgIiAoS0hUTUwsIGxp
a2UgR2Vja28pIiwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBhcHBsaWNh
dGlvbk5hbWUpOworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHByZWZp
eCA9IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCB3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5n
KCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb25TdHJpbmcoKSwgIiAoS0hUTUwsIGxp
a2UgR2Vja28pIik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJlZml4LmdldCgpLCBhcHBsaWNh
dGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiAiICIsIGFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKIFBh
Z2UqIFdlYlZpZXc6OnBhZ2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDJlODg4ODQ1MDE5MGM5YjRjOWRjNWU1YjhkZjJmZjJiYWZjZGY1NDIu
LjU4NTMxMThjNmE3MjU1NWM1OTllMGVkZDJjNjQ2MjJkYTFlMmRjZjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ny0wNy0yMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBO
ZXZlckRlc3Ryb3llZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoamF2YVNjcmlwdFRocmVhZHNNdXRleCk6CisgICAgICAgIChq
YXZhU2NyaXB0VGhyZWFkcyk6CisKIDIwMTctMDctMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dURl0gRXh0ZW5kIFRocmVhZEdyb3VwOjphZGQg
cmVzdWx0cyBmcm9tIGJvb2wgdG8gVGhyZWFkR3JvdXBBZGRSZXN1bHQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKaW5kZXggMmVhZmJiZWJmYjViYjk5ZGIx
NmJlNGE2NDBmZjU0ZDMwNmYxODVmOS4uOTJkYTdlMTk3OGM1ZDAzOGU2YmI5OTk1ZTRiMjA1YTIy
MWQ5YTY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVh
ZGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAw
NyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqICAgICAgICAgICAo
QykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogICAgICAgICAgIChDKSAy
MDEyIFBhdHJpY2sgR2Fuc3RlcmUgPHBhcm9nYUBwYXJvZ2EuY29tPgpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0
aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ3LDE0ICs0OCwxNCBAQCBzdGF0
aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlwdFRocmVhZHNHcm91cDsKIAogc3RhdGljIExv
Y2smIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChMb2NrLCBzdGF0aWNNdXRleCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxMb2NrPiBzdGF0aWNNdXRleDsKICAgICByZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8VGhyZWFkPj4gVGhyZWFkU2V0Owogc3RhdGljIFRocmVhZFNl
dCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19M
T0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFRocmVhZFNldD4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiAgICAg
QVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkudHJ5TG9jaygpKTsKICAgICByZXR1cm4g
c3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316233</attachid>
            <date>2017-07-23 13:20:51 -0700</date>
            <delta_ts>2017-07-23 14:57:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170723132050.patch</filename>
            <type>text/plain</type>
            <size>111832</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxY2M3NWVmMjQyOTIw
YTcxOGY1MzYxZWIxY2RiYzJkMzM1NjU3YS4uNGQ1OTI0YjcwNzgwNmMwMWUyNjNmMDNjMmJkN2Ix
MmQ5MDY5ODE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAxNy0wNy0yMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOgorICAg
ICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpRdWFsaWZpZWRO
YW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6UXVhbGlmaWVkTmFtZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVhbGlmaWVkTmFtZTo6aGFzUHJlZml4KToKKyAgICAgICAgKiBodG1sL0F1dG9maWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkZExvY2FsTmFtZVRvU2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSk6CisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6V2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1l
bnRNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50
TmFtZUNvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0
Y2hlcyk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNob3VsZEJlRXhwb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6dXBkYXRlRXhwb3NlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVjb2du
aXplZFRhZ05hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1l
bnQ6OnVwZGF0ZURvY05hbWVkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1RoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRy
b2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
OjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6dXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9s
Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUGFkZGluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjp+VGhlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OlRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEhhc0luYWN0aXZlQXBwZWFyYW5jZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbHNDYW5IYXZlSW5hY3RpdmVBcHBl
YXJhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sc0Nhbkhh
dmVIb3ZlcmVkQXBwZWFyYW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6
Y29udHJvbERyYXdzQm9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpj
b250cm9sRHJhd3NCYWNrZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojpjb250cm9sRHJhd3NGb2N1c091dGxpbmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnNlbGVjdGlvbkNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
Ojp0ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
VGhlbWU6OnN5c3RlbUNvbG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpz
eXN0ZW1Gb250KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjYXJldEJsaW5r
SW50ZXJ2YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnRoZW1lQ2hhbmdl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbEZvbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xTaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUaGVtZUNvY29hOjpUaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRo
ZW1lQ29jb2E6On5UaGVtZUNvY29hKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9UaGVtZUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFk
c0dsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2FtcGxlR2FtZXBhZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZCk6CisgICAgICAgIChXZWJDb3JlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhP
dmVyZmxvdzo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpleHRl
bmRUbyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE92ZXJmbG93OjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoT3ZlcmZsb3c6OkdseXBoT3ZlcmZsb3cpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlU3Rh
cnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VEdXJhdGlvbktleSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hhbmdlc0ZsdXNoZXI6OnNpbmdsZXRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omxhc3RS
ZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5oOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVJT1M6OlRoZW1lSU9TKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlRoZW1lSU9TOjp+VGhlbWVJT1MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjpzaW5nbGV0b24p
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UaGVtZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6VGhl
bWVNYWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6On5UaGVtZU1hYyk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjppbmZsYXRlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6Y29udHJvbEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmNvbnRyb2xTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjpjb250cm9sQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpjb250cm9s
UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWlu
dFJlY3QpOgorICAgICAgICAoLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVGhlbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VO
ZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpzdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUv
VGhlbWVXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVXUEU6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRoZW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS93cGUvVGhlbWVXUEUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lV1BFOjpUaGVtZVdQ
RSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaGVtZVdQRTo6flRoZW1lV1BFKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisKIDIwMTctMDctMjIgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBidWlsZGluZyBmb3IgbWFj
T1MgMTAuMTIgd2l0aCB0aGUgbWFjT1MgMTAuMTMgU0RLIGFmdGVyIHIyMTk2NDQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggZDU4YmEyNGFmYWEwMzgwODNlZTg3NWU3MTU4YTI3NmNj
M2Y5NzMyMi4uMWU2Mjk1ZWVkMjc1NGRhMmMyNTNlZmZjM2MwNDAzNTAzZjg1ZDNiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA3LTIxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3JlIE5ldmVyRGVzdHJveWVk
IGFuZCByZWxhdGVkIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVBhdGgpOgorICAgICAgICAqIFBsdWdp
bnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5NYWluVGhyZWFkU2NoZWR1bGVyOjpzY2hlZHVsZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAo
c2hhcmVkSGlzdG9yeVN0b3JhZ2UpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHA6CisgICAgICAgIChtYWluQnVuZGxlTG9jU3RyaW5ncyk6CisgICAgICAgIChmcmFtZXdvcmtM
b2NTdHJpbmdzTXV0ZXgpOgorICAgICAgICAoZnJhbWV3b3JrTG9jU3RyaW5ncyk6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhB
cHBsaWNhdGlvbk5hbWUpOgorCiAyMDE3LTA3LTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIGV2ZW50IGRpc3BhdGNo
IGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxl
bWVudEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4IGM2MGIwNWE3ZjUwOTlkZTVjNjNhNzg5NWI4ZDMwMjQz
M2U4Mzc1YmQuLmY3MTIwZmI2ZmE1ZDA1OTllMjI4YTM0MjU4MDBjOWFkMzI5ZGFiMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkbwogUmVm
PEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhG
YWxsYmFjayhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7
CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IHRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChkb2N1
bWVudCwgbmFtZS5sb2NhbE5hbWUoKSkpIHsKLSAgICAgICAgaWYgKG5hbWUucHJlZml4KCkgIT0g
bnVsbEF0b20oKSkKKyAgICAgICAgaWYgKCFuYW1lLnByZWZpeCgpLmlzTnVsbCgpKQogICAgICAg
ICAgICAgZWxlbWVudC0+c2V0UHJlZml4KG5hbWUucHJlZml4KCkpOwogICAgICAgICByZXR1cm4g
ZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBmZGIyZDk2OGM3N2FhYWRkNzczMDc2NTJlOWNhNjdk
NDg2YTgxNTc1Li44NzNkYjlkN2IzNTU2ZWQwYTc2ZWQyMzdjOGUyMDBkOTkxZjQwNjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC02ODMsMTQgKzY4
MywxOCBAQCBzdGF0aWMgYm9vbCBwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVl
KiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZQogewogICAgIGJvb2wgdXNlclByZWZlcnNS
ZWR1Y2VkTW90aW9uID0gZmFsc2U7CiAKLSAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQ
cmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlWYWx1ZSgpID09IFNldHRpbmdzOjpGb3Jj
ZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQorICAgIHN3aXRjaCAoZnJhbWUuc2V0dGluZ3MoKS5m
b3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2liaWxpdHlWYWx1ZSgpKSB7CisgICAgY2Fz
ZSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbjoKICAgICAgICAgdXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uID0gdHJ1ZTsKLSAgICBlbHNlIGlmIChmcmFtZS5zZXR0aW5ncygp
LmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9uQWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gU2V0dGlu
Z3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZTo6T2ZmKQotICAgICAgICB1c2VyUHJlZmVyc1Jl
ZHVjZWRNb3Rpb24gPSBmYWxzZTsKLSNpZiBQTEFURk9STShJT1MpIHx8IFVTRShORVdfVEhFTUUp
Ci0gICAgZWxzZQotICAgICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBwbGF0Zm9ybVRo
ZW1lKCktPnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZjoKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpTeXN0ZW06
CisjaWYgVVNFKE5FV19USEVNRSkKKyAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0g
VGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpOwogI2VuZGlmCisg
ICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiB1
c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRl
eCAwOGZhMmI2OTRjZjM0YzljYzg1Mjk4NDYzYTMzNDk2Zjc3YjVlN2VlLi4yZjM4YzE5ODQ1MTgw
Y2ExNmU0ZDE3ZjQ4NGVkNDQ0MzNiOTk5MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1l
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00Nyw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICB1bnNpZ25lZCBjb21w
dXRlSGFzaCgpIGNvbnN0OwogCi0gICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9leGlzdGluZ0hh
c2g7CisgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9leGlzdGluZ0hhc2ggeyAwIH07CiAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX3ByZWZpeDsKICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nIG1fbG9jYWxOYW1lOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7
CkBAIC01NiwxMiArNTQsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHN0
YXRpYyBwdHJkaWZmX3QgbG9jYWxOYW1lTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFF1YWxpZmllZE5hbWVJbXBsLCBtX2xvY2FsTmFtZSk7IH0KICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBuYW1lc3BhY2VNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoUXVhbGlmaWVkTmFtZUltcGwsIG1fbmFtZXNwYWNlKTsgfQotI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisjZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpCi0gICAgICAgICAgICA6IG1fZXhpc3Rp
bmdIYXNoKDApCi0gICAgICAgICAgICAsIG1fcHJlZml4KHByZWZpeCkKKyAgICAgICAgICAgIDog
bV9wcmVmaXgocHJlZml4KQogICAgICAgICAgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiAg
ICAgICAgICAgICAsIG1fbmFtZXNwYWNlKG5hbWVzcGFjZVVSSSkKICAgICAgICAgewpAQCAtODEs
NyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA9PSBvdGhlci5tX2ltcGwgfHwgKGxvY2Fs
TmFtZSgpID09IG90aGVyLmxvY2FsTmFtZSgpICYmIG5hbWVzcGFjZVVSSSgpID09IG90aGVyLm5h
bWVzcGFjZVVSSSgpKTsgfQogCi0gICAgYm9vbCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiBt
X2ltcGwtPm1fcHJlZml4ICE9IG51bGxBdG9tKCk7IH0KKyAgICBib29sIGhhc1ByZWZpeCgpIGNv
bnN0IHsgcmV0dXJuICFtX2ltcGwtPm1fcHJlZml4LmlzTnVsbCgpOyB9CiAgICAgdm9pZCBzZXRQ
cmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgpIHsgKnRoaXMgPSBRdWFsaWZpZWROYW1l
KHByZWZpeCwgbG9jYWxOYW1lKCksIG5hbWVzcGFjZVVSSSgpKTsgfQogCiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fcHJlZml4OyB9CkBA
IC05Niw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBRdWFsaWZpZWROYW1lSW1wbCogaW1wbCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBpbXBsTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFF1
YWxpZmllZE5hbWUsIG1faW1wbCk7IH0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VuZGlmCiAg
ICAgCiAgICAgLy8gSW5pdCByb3V0aW5lIGZvciBnbG9iYWxzCiAgICAgc3RhdGljIHZvaWQgaW5p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAppbmRleCA1YTFhYWQzNDZlMjM2M2RmNDk1NmFl
NmQ3YTc0MDljZmYwMWE3ZjZjLi5lMzEzNDE5ODQ4MGVkYmZmMTg5OGNiMTY2OWRiZmIyZjViYzI4
ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEF1dG9m
aWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IEhUTUxGb3JtQ29udHJvCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1
ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmF1
dG9jb21wbGV0ZUF0dHIpOwogCiAgICAgLy8gMS4gSWYgdGhlIGVsZW1lbnQgaGFzIG5vIGF1dG9j
b21wbGV0ZSBhdHRyaWJ1dGUsIHRoZW4ganVtcCB0byB0aGUgc3RlcCBsYWJlbGVkIGRlZmF1bHQu
Ci0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09IG51bGxBdG9tKCkpCisgICAgaWYgKGF0dHJpYnV0
ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAKICAgICAv
LyAyLiBMZXQgdG9rZW5zIGJlIHRoZSByZXN1bHQgb2Ygc3BsaXR0aW5nIHRoZSBhdHRyaWJ1dGUn
cyB2YWx1ZSBvbiBzcGFjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXgg
ZTMwNWM0ODIyMzZiNTRmZjUwODY3OGNiZDExODE5MWMxZDZkMjA3Ni4uY2JkZmRkM2VmY2FhZGFm
OGZiZjQwMGI2YzI1NDgwYTQzYWVkMzIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50
LmNwcApAQCAtMTExLDY2ICsxMTEsNiBAQCBSZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKCkKICAgICByZXR1cm4gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUo
KnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRMb2NhbE5hbWVUb1NldChIYXNoU2V0PEF0b21p
Y1N0cmluZ0ltcGwqPiogc2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSkKLXsKLSAgICBz
ZXQtPmFkZChxTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwotfQotCi1zdGF0aWMgSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4qIGNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0
KCkKLXsKLSAgICAvLyBUaGlzIGlzIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgaW4gSFRNTCA0LjAx
IHdpdGggdmFsdWVzIG1hcmtlZCBhcyAiW0NJXSIgb3IgY2FzZS1pbnNlbnNpdGl2ZQotICAgIC8v
IE1vemlsbGEgdHJlYXRzIGFsbCBvdGhlciB2YWx1ZXMgYXMgY2FzZS1zZW5zaXRpdmUsIHRodXMg
c28gZG8gd2UuCi0gICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGF0dHJTZXQgPSBuZXcg
SGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj47Ci0KLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBhY2NlcHRfY2hhcnNldEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQs
IGFjY2VwdEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFsaWduQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYWxpbmtBdHRyKTsKLSAgICBhZGRMb2Nh
bE5hbWVUb1NldChhdHRyU2V0LCBheGlzQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0
clNldCwgYmdjb2xvckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNoYXJz
ZXRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBjaGVja2VkQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY2xlYXJBdHRyKTsKLSAgICBhZGRMb2NhbE5h
bWVUb1NldChhdHRyU2V0LCBjb2RldHlwZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0
dHJTZXQsIGNvbG9yQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29tcGFj
dEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGRlY2xhcmVBdHRyKTsKLSAg
ICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBkZWZlckF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIGRpckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQs
IGRpc2FibGVkQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZW5jdHlwZUF0
dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGZhY2VBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBmcmFtZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIGhyZWZsYW5nQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
aHR0cF9lcXVpdkF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGxhbmdBdHRy
KTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBsYW5ndWFnZUF0dHIpOwotICAgIGFk
ZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGxpbmtBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCBtZWRpYUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG1l
dGhvZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG11bHRpcGxlQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbm9ocmVmQXR0cik7Ci0gICAgYWRkTG9j
YWxOYW1lVG9TZXQoYXR0clNldCwgbm9yZXNpemVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCBub3NoYWRlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
bm93cmFwQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgcmVhZG9ubHlBdHRy
KTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCByZWxBdHRyKTsKLSAgICBhZGRMb2Nh
bE5hbWVUb1NldChhdHRyU2V0LCByZXZBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBydWxlc0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNjb3BlQXR0
cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2Nyb2xsaW5nQXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2VsZWN0ZWRBdHRyKTsKLSAgICBhZGRMb2NhbE5h
bWVUb1NldChhdHRyU2V0LCBzaGFwZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJT
ZXQsIHRhcmdldEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHRleHRBdHRy
KTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB0eXBlQXR0cik7Ci0gICAgYWRkTG9j
YWxOYW1lVG9TZXQoYXR0clNldCwgdmFsaWduQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQo
YXR0clNldCwgdmFsdWV0eXBlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
dmxpbmtBdHRyKTsKLQotICAgIHJldHVybiBhdHRyU2V0OwotfQotCiAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRpdGVt
CiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50
PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKQEAgLTIzNSw5ICsxNzUsNjQgQEAgdm9pZCBIVE1MRG9j
dW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1l
LCBFbGVtZW50JgogCiBib29sIEhUTUxEb2N1bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBodG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldCA9
IGNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KCk7Ci0gICAgYm9vbCBpc1Bv
c3NpYmxlSFRNTEF0dHIgPSAhYXR0cmlidXRlTmFtZS5oYXNQcmVmaXgoKSAmJiAoYXR0cmlidXRl
TmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBudWxsQXRvbSgpKTsKLSAgICByZXR1cm4gIWlzUG9zc2li
bGVIVE1MQXR0ciB8fCAhaHRtbENhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRhaW5z
KGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBzdGF0aWMgY29uc3QgYXV0
byBjYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVTZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewor
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgaW4gSFRNTCA0LjAxIHdp
dGggdmFsdWVzIG1hcmtlZCBhcyAiW0NJXSIgb3IgY2FzZS1pbnNlbnNpdGl2ZQorICAgICAgICAv
LyBNb3ppbGxhIHRyZWF0cyBhbGwgb3RoZXIgdmFsdWVzIGFzIGNhc2Utc2Vuc2l0aXZlLCB0aHVz
IHNvIGRvIHdlLgorICAgICAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgbmFt
ZXNbXSA9IHsKKyAgICAgICAgICAgICZhY2NlcHRfY2hhcnNldEF0dHIsCisgICAgICAgICAgICAm
YWNjZXB0QXR0ciwKKyAgICAgICAgICAgICZhbGlnbkF0dHIsCisgICAgICAgICAgICAmYWxpbmtB
dHRyLAorICAgICAgICAgICAgJmF4aXNBdHRyLAorICAgICAgICAgICAgJmJnY29sb3JBdHRyLAor
ICAgICAgICAgICAgJmNoYXJzZXRBdHRyLAorICAgICAgICAgICAgJmNoZWNrZWRBdHRyLAorICAg
ICAgICAgICAgJmNsZWFyQXR0ciwKKyAgICAgICAgICAgICZjb2RldHlwZUF0dHIsCisgICAgICAg
ICAgICAmY29sb3JBdHRyLAorICAgICAgICAgICAgJmNvbXBhY3RBdHRyLAorICAgICAgICAgICAg
JmRlY2xhcmVBdHRyLAorICAgICAgICAgICAgJmRlZmVyQXR0ciwKKyAgICAgICAgICAgICZkaXJB
dHRyLAorICAgICAgICAgICAgJmRpc2FibGVkQXR0ciwKKyAgICAgICAgICAgICZlbmN0eXBlQXR0
ciwKKyAgICAgICAgICAgICZmYWNlQXR0ciwKKyAgICAgICAgICAgICZmcmFtZUF0dHIsCisgICAg
ICAgICAgICAmaHJlZmxhbmdBdHRyLAorICAgICAgICAgICAgJmh0dHBfZXF1aXZBdHRyLAorICAg
ICAgICAgICAgJmxhbmdBdHRyLAorICAgICAgICAgICAgJmxhbmd1YWdlQXR0ciwKKyAgICAgICAg
ICAgICZsaW5rQXR0ciwKKyAgICAgICAgICAgICZtZWRpYUF0dHIsCisgICAgICAgICAgICAmbWV0
aG9kQXR0ciwKKyAgICAgICAgICAgICZtdWx0aXBsZUF0dHIsCisgICAgICAgICAgICAmbm9ocmVm
QXR0ciwKKyAgICAgICAgICAgICZub3Jlc2l6ZUF0dHIsCisgICAgICAgICAgICAmbm9zaGFkZUF0
dHIsCisgICAgICAgICAgICAmbm93cmFwQXR0ciwKKyAgICAgICAgICAgICZyZWFkb25seUF0dHIs
CisgICAgICAgICAgICAmcmVsQXR0ciwKKyAgICAgICAgICAgICZyZXZBdHRyLAorICAgICAgICAg
ICAgJnJ1bGVzQXR0ciwKKyAgICAgICAgICAgICZzY29wZUF0dHIsCisgICAgICAgICAgICAmc2Ny
b2xsaW5nQXR0ciwKKyAgICAgICAgICAgICZzZWxlY3RlZEF0dHIsCisgICAgICAgICAgICAmc2hh
cGVBdHRyLAorICAgICAgICAgICAgJnRhcmdldEF0dHIsCisgICAgICAgICAgICAmdGV4dEF0dHIs
CisgICAgICAgICAgICAmdHlwZUF0dHIsCisgICAgICAgICAgICAmdmFsaWduQXR0ciwKKyAgICAg
ICAgICAgICZ2YWx1ZXR5cGVBdHRyLAorICAgICAgICAgICAgJnZsaW5rQXR0ciwKKyAgICAgICAg
fTsKKyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNldDsKKyAgICAgICAgZm9yIChhdXRv
KiBuYW1lIDogbmFtZXMpCisgICAgICAgICAgICBzZXQuYWRkKG5hbWUtPmxvY2FsTmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9KCkpOworCisgICAgYm9vbCBpc1Bvc3NpYmxlSFRN
TEF0dHIgPSAhYXR0cmlidXRlTmFtZS5oYXNQcmVmaXgoKSAmJiBhdHRyaWJ1dGVOYW1lLm5hbWVz
cGFjZVVSSSgpLmlzTnVsbCgpOworICAgIHJldHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFj
YXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVTZXQuZ2V0KCkuY29udGFpbnMoYXR0cmlidXRlTmFtZS5s
b2NhbE5hbWUoKSk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKaW5kZXggZWU0M2RkMjQ1MWIwMzIwZmQ1Nzk3OGM0ODU2MWFhMGQyNDdiNzBiMi4uYjdiN2Uw
NTI0ZmVjMTY2MjBkMmEwZTg3OTQxYjY4NDYwY2VjNTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRD
YWNoZSgpIGNvbnN0CiAgICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlPigpOwogCiAgICAgYm9vbCBvd25lcklzRm9ybUVsZW1lbnQgPSBp
czxIVE1MRm9ybUVsZW1lbnQ+KG93bmVyTm9kZSgpKTsKLSAgICBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGZv
dW5kSW5wdXRFbGVtZW50czsKIAogICAgIGZvciAoYXV0byYgZWxlbWVudFB0ciA6IGZvcm1Db250
cm9sRWxlbWVudHMoKSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIGFzc29jaWF0
ZWRFbGVtZW50ID0gKmVsZW1lbnRQdHI7CkBAIC0xMjgsMTMgKzEyOCwxMyBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAg
ICAgICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNhY2hlLT5h
cHBlbmRUb0lkQ2FjaGUoaWQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChvd25lcklz
Rm9ybUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kSW5wdXRFbGVtZW50cy5hZGQo
aWQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChp
ZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUg
PSBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKTsKICAgICAgICAgICAgIGlmICghbmFtZS5pc0Vt
cHR5KCkgJiYgaWQgIT0gbmFtZSkgewogICAgICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb05h
bWVDYWNoZShuYW1lLCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAob3duZXJJc0Zvcm1F
bGVtZW50KQotICAgICAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKG5hbWUu
aW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmRJbnB1dEVsZW1lbnRzLmFkZChuYW1l
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE0MiwxMCArMTQyLDEwIEBA
IHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hl
KCkgY29uc3QKICAgICAgICAgZm9yIChhdXRvKiBlbGVtZW50UHRyIDogZm9ybUltYWdlRWxlbWVu
dHMoKSkgewogICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCA9ICplbGVtZW50
UHRyOwogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVsZW1lbnQuZ2V0SWRB
dHRyaWJ1dGUoKTsKLSAgICAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpICYmICFmb3VuZElucHV0
RWxlbWVudHMuY29udGFpbnMoaWQuaW1wbCgpKSkKKyAgICAgICAgICAgIGlmICghaWQuaXNFbXB0
eSgpICYmICFmb3VuZElucHV0RWxlbWVudHMuY29udGFpbnMoaWQpKQogICAgICAgICAgICAgICAg
IGNhY2hlLT5hcHBlbmRUb0lkQ2FjaGUoaWQsIGVsZW1lbnQpOwogICAgICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lID0gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCk7Ci0gICAgICAg
ICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpICYmIGlkICE9IG5hbWUgJiYgIWZvdW5kSW5wdXRFbGVt
ZW50cy5jb250YWlucyhuYW1lLmltcGwoKSkpCisgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0
eSgpICYmIGlkICE9IG5hbWUgJiYgIWZvdW5kSW5wdXRFbGVtZW50cy5jb250YWlucyhuYW1lKSkK
ICAgICAgICAgICAgICAgICBjYWNoZS0+YXBwZW5kVG9OYW1lQ2FjaGUobmFtZSwgZWxlbWVudCk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
YW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5jcHAKaW5kZXggNmUyMDNhZWZiNDU4YzI5NDNhMThlOTk2NTAxZDE4MDU1NGZmYjQ3ZS4uZDEw
YzM3ZmIyMjg4MWMxM2MzMGYwN2M3YjkzNGY5MzI3NTQ2ZjFlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtNDEsNDUgKzQxLDQ5IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRN
YXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAg
ICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVt
ZW50PihlbGVtZW50KSB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKLSAgICAgICAg
fHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTE9iamVjdEVsZW1lbnQ+
KGVsZW1lbnQpOworICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKKyAg
ICAgICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRN
TEZvcm1FbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KQorICAgICAgICB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CiB9CiAK
IGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCiB7Ci0gICAgLy8gRmluZCBv
bmx5IGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcyBhbmQgb2JqZWN0cyBieSBuYW1lLCBi
dXQgYW55dGhpbmcgYnkgaWQKLSAgICBpZiAoZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVN
YXRjaChlbGVtZW50KSAmJiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFt
ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVsZW1lbnQuZ2V0SWRBdHRyaWJ1
dGUoKS5pbXBsKCkgPT0gbmFtZTsKKyAgICAvLyBGaW5kIG9ubHkgaW1hZ2VzLCBmb3JtcywgYXBw
bGV0cywgZW1iZWRzIGFuZCBvYmplY3RzIGJ5IG5hbWUsIGJ1dCBhbnl0aGluZyBieSBpZC4KKyAg
ICByZXR1cm4gKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goZWxlbWVudCkgJiYg
ZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpCisgICAgICAgIHx8IGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBuYW1lOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbihjb25zdCBFbGVtZW50JiBl
bGVtZW50KQoreworICAgIHJldHVybiBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYg
ZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRXhwb3NlZCgpOwogfQogCiBi
b29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1h
dGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
Zml4IEhUTUxJbWFnZUVsZW1lbnQgdG8gdXBkYXRlIHRoZSBoYXNoIG1hcCBmb3IgdXMgd2hlbiBu
YW1lIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLgotICAgIHJldHVybiBpczxIVE1MQXBwbGV0
RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBk
b3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkKKyAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1cGRhdGUgdGhl
IGhhc2ggbWFwIGZvciB1cyB3aGVuIHRoZSBuYW1lIGF0dHJpYnV0ZSBpcyByZW1vdmVkLgorICAg
IHJldHVybiBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGVsZW1lbnQp
CisgICAgICAgIHx8IGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQogICAgICAgICB8fCAo
aXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwogfQog
CiBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmli
dXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXM8SFRNTEZv
cm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBp
czxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkKLSAgICAgICAgfHwgaXM8SFRNTEFwcGxldEVs
ZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93
bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCkpCisgICAg
cmV0dXJuIGlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50TmFtZUNvbGxlY3Rpb24oZWxlbWVudCkK
KyAgICAgICAgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlz
PEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxGb3JtRWxlbWVu
dD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQpCiAg
ICAgICAgIHx8IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwogfQogCiBib29sIERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCiB7CiAgICAgLy8gRmluZCBpbWFnZXMsIGZv
cm1zLCBhcHBsZXRzLCBlbWJlZHMsIG9iamVjdHMgYW5kIGlmcmFtZXMgYnkgbmFtZSwgYXBwbGV0
cyBhbmQgb2JqZWN0IGJ5IGlkLCBhbmQgaW1hZ2VzIGJ5IGlkCi0gICAgLy8gYnV0IG9ubHkgaWYg
dGhleSBoYXZlIGEgbmFtZSBhdHRyaWJ1dGUgKHRoaXMgdmVyeSBzdHJhbmdlIHJ1bGUgbWF0Y2hl
cyBJRSkKLSAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1i
ZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkpCi0g
ICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZTsK
LSAgICBpZiAoaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICByZXR1cm4g
ZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJ
ZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChpczxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybiAoZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCku
aW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1l
KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0o
KTsKLSAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVy
biBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCAoZWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lICYmIGVsZW1lbnQuaGFzTmFtZSgpKTsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgLy8gYnV0IG9ubHkgaWYgdGhleSBoYXZlIGEgbmFtZSBhdHRy
aWJ1dGUgKHRoaXMgdmVyeSBzdHJhbmdlIHJ1bGUgbWF0Y2hlcyBJRSkuCisgICAgcmV0dXJuIChl
bGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQuZ2V0
TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQorICAgICAgICB8fCAoZWxlbWVudE1hdGNo
ZXNJZklkQXR0cmlidXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgp
LmltcGwoKSA9PSBuYW1lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcAppbmRleCA0M2FiYzAyZWQ3OTQyMGJjMDY3YzVjMDljYWRkMmU0NmNlYWI5M2Zi
Li5jZjIwNjdkY2Q4MjBjMzJlMDFlNDE0ZWVmMmFjMzJmMjVkMmFhMmIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNjMsOCArNjMsNiBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50OjpIVE1MT2JqZWN0
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpCiAg
ICAgLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQoZm9ybSkKLSAgICAsIG1fZG9jTmFtZWRJdGVtKHRy
dWUpCi0gICAgLCBtX3VzZUZhbGxiYWNrQ29udGVudChmYWxzZSkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShvYmplY3RUYWcpKTsKIH0KQEAgLTMzNyw4ICszMzUsOCBAQCB2b2lkIEhUTUxPYmpl
Y3RFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIAog
dm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
JiBjaGFuZ2UpCiB7Ci0gICAgdXBkYXRlRG9jTmFtZWRJdGVtKCk7Ci0gICAgaWYgKGlzQ29ubmVj
dGVkKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CisgICAgdXBkYXRlRXhwb3NlZFN0YXRl
KCk7CisgICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgIW1fdXNlRmFsbGJhY2tDb250ZW50KSB7CiAg
ICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBpbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlKCk7CiAgICAgfQpAQCAtMzU3LDcgKzM1NSw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIAogdm9pZCBI
VE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIHsKLSAgICBpZiAodXNl
RmFsbGJhY2tDb250ZW50KCkpCisgICAgaWYgKG1fdXNlRmFsbGJhY2tDb250ZW50KQogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQpAQCAtMzg1LDczICszODMs
ODEgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKICAg
ICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIH0KIAotLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHJlbW92ZWQsIGFsbCBjYWxsZXJzIGFyZSBhbG1vc3QgY2VydGFpbmx5IHdyb25n
Lgotc3RhdGljIGJvb2wgaXNSZWNvZ25pemVkVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lKQorc3RhdGljIGlubGluZSBib29sIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4cG9z
dXJlKGNvbnN0IEVsZW1lbnQmIGNoaWxkKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHRhZ0xp
c3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmlu
Z0ltcGwqPiBtYXA7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gbW9zdEtub3duVGFncyA9IG1ha2VO
ZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gc2V0Owog
ICAgICAgICBhdXRvKiB0YWdzID0gSFRNTE5hbWVzOjpnZXRIVE1MVGFncygpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7Ci0g
ICAgICAgICAgICBpZiAoKnRhZ3NbaV0gPT0gYmdzb3VuZFRhZwotICAgICAgICAgICAgICAgIHx8
ICp0YWdzW2ldID09IGNvbW1hbmRUYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tpXSA9PSBk
ZXRhaWxzVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gZmlnY2FwdGlvblRhZwot
ICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGZpZ3VyZVRhZwotICAgICAgICAgICAgICAg
IHx8ICp0YWdzW2ldID09IHN1bW1hcnlUYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tpXSA9
PSB0cmFja1RhZykgewotICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGhhdmUgYXRv
bXMgZm9yIHRoZXNlIHRhZ3MsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAvLyB0
cmVhdCB0aGVtIGFzICJyZWNvZ25pemVkIHRhZ3MiIGZvciB0aGUgcHVycG9zZSBvZiBwYXJzaW5n
Ci0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93IHdlIHBhcnNlIGRv
Y3VtZW50cy4KKyAgICAgICAgICAgIGF1dG8mIHRhZyA9ICp0YWdzW2ldOworICAgICAgICAgICAg
Ly8gT25seSB0aGUgcGFyYW0gZWxlbWVudCB3YXMgZXhwbGljaXRseSBtZW50aW9uZWQgaW4gdGhl
IEhUTUwgc3BlY2lmaWNhdGlvbiBydWxlCisgICAgICAgICAgICAvLyB3ZSB3ZXJlIHRyeWluZyB0
byBpbXBsZW1lbnQsIGJ1dCB0aGVzZSBhcmUgb3RoZXIga25vd24gSFRNTCBlbGVtZW50cyB0aGF0
IHdlCisgICAgICAgICAgICAvLyBoYXZlIGRlY2lkZWQsIG92ZXIgdGhlIHllYXJzLCB0byB0cmVh
dCBhcyBjaGlsZHJlbiB0aGF0IGRvIG5vdCBwcmV2ZW50IG9iamVjdAorICAgICAgICAgICAgLy8g
bmFtZXMgZnJvbSBiZWluZyBleHBvc2VkLgorICAgICAgICAgICAgaWYgKHRhZyA9PSBiZ3NvdW5k
VGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IGNvbW1hbmRUYWcKKyAgICAgICAgICAgICAg
ICB8fCB0YWcgPT0gZGV0YWlsc1RhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBmaWdjYXB0
aW9uVGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IGZpZ3VyZVRhZworICAgICAgICAgICAg
ICAgIHx8IHRhZyA9PSBwYXJhbVRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBzdW1tYXJ5
VGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IHRyYWNrVGFnKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWFwLmFkZCh0YWdzW2ldLT5s
b2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICAgICAgc2V0LmFkZCh0YWcpOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAgICAgIHJldHVybiBzZXQ7CiAgICAgfSgpKTsKLSAg
ICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmltcGwo
KSk7CisgICAgcmV0dXJuIG1vc3RLbm93blRhZ3MuZ2V0KCkuY29udGFpbnMoY2hpbGQudGFnUU5h
bWUoKSk7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRlbSgp
CitzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUoY29u
c3QgTm9kZSYgY2hpbGQpCiB7Ci0gICAgLy8gVGhlIHJ1bGUgaXMgIjxvYmplY3Q+IGVsZW1lbnRz
IHdpdGggbm8gY2hpbGRyZW4gb3RoZXIgdGhhbgotICAgIC8vIDxwYXJhbT4gZWxlbWVudHMsIHVu
a25vd24gZWxlbWVudHMgYW5kIHdoaXRlc3BhY2UgY2FuIGJlCi0gICAgLy8gZm91bmQgYnkgbmFt
ZSBpbiBhIGRvY3VtZW50LCBhbmQgb3RoZXIgPG9iamVjdD4gZWxlbWVudHMgY2Fubm90LiIKLSAg
ICBib29sIHdhc05hbWVkSXRlbSA9IG1fZG9jTmFtZWRJdGVtOwotICAgIGJvb2wgaXNOYW1lZEl0
ZW0gPSB0cnVlOwotICAgIE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChj
aGlsZCAmJiBpc05hbWVkSXRlbSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4oKmNoaWxkKSkg
ewotICAgICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpjaGls
ZCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIG9mIGlzUmVjb2duaXplZFRhZ05hbWUgaXMg
YWxtb3N0IGNlcnRhaW5seSB3cm9uZyBoZXJlLgotICAgICAgICAgICAgaWYgKGlzUmVjb2duaXpl
ZFRhZ05hbWUoZWxlbWVudC50YWdRTmFtZSgpKSAmJiAhZWxlbWVudC5oYXNUYWdOYW1lKHBhcmFt
VGFnKSkKLSAgICAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwotICAgICAgICB9IGVs
c2UgaWYgKGlzPFRleHQ+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgIGlmICghZG93bmNhc3Q8VGV4
dD4oKmNoaWxkKS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAgaXNO
YW1lZEl0ZW0gPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpc05hbWVkSXRl
bSA9IGZhbHNlOwotICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOworICAgIGlm
IChpczxFbGVtZW50PihjaGlsZCkpCisgICAgICAgIHJldHVybiBwcmV2ZW50c1BhcmVudE9iamVj
dEZyb21FeHBvc3VyZShkb3duY2FzdDxFbGVtZW50PihjaGlsZCkpOworICAgIGlmIChpczxUZXh0
PihjaGlsZCkpCisgICAgICAgIHJldHVybiAhZG93bmNhc3Q8VGV4dD4oY2hpbGQpLmNvbnRhaW5z
T25seVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIHNob3VsZEJlRXhwb3NlZChjb25zdCBIVE1MT2JqZWN0RWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVkb25lIHRvIHVzZSB0aGUgY29uY2VwdCBv
ZiBhbiBleHBvc2VkIG9iamVjdCBlbGVtZW50LAorICAgIC8vIGFzIGRvY3VtZW50ZWQgaW4gdGhl
IEhUTUwgc3BlY2lmaWNhdGlvbiBzZWN0aW9uIGRlc2NyaWJpbmcgRE9NIHRyZWUgYWNjZXNzb3Jz
LgorCisgICAgLy8gVGhlIHJ1bGUgd2UgdHJ5IHRvIGltcGxlbWVudCBoZXJlLCBmcm9tIG9sZGVy
IEhUTUwgc3BlY2lmaWNhdGlvbnMsIGlzICJvYmplY3QgZWxlbWVudHMKKyAgICAvLyB3aXRoIG5v
IGNoaWxkcmVuIG90aGVyIHRoYW4gcGFyYW0gZWxlbWVudHMsIHVua25vd24gZWxlbWVudHMgYW5k
IHdoaXRlc3BhY2UgY2FuIGJlIGZvdW5kCisgICAgLy8gYnkgbmFtZSBpbiBhIGRvY3VtZW50LCBh
bmQgb3RoZXIgb2JqZWN0IGVsZW1lbnRzIGNhbm5vdCIuCisKKyAgICBmb3IgKGF1dG8qIGNoaWxk
ID0gZWxlbWVudC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CisgICAgICAgIGlmIChwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSgqY2hp
bGQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoaXNOYW1lZEl0
ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGlzQ29ubmVjdGVkKCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkg
JiYgaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkgewotICAgICAgICBIVE1MRG9jdW1lbnQm
IGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlRXhwb3Nl
ZFN0YXRlKCkKK3sKKyAgICBib29sIHdhc0V4cG9zZWQgPSBzdGQ6OmV4Y2hhbmdlKG1faXNFeHBv
c2VkLCBzaG91bGRCZUV4cG9zZWQoKnRoaXMpKTsKKworICAgIGlmIChtX2lzRXhwb3NlZCAhPSB3
YXNFeHBvc2VkICYmIGlzQ29ubmVjdGVkKCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkgJiYgaXM8SFRN
TERvY3VtZW50Pihkb2N1bWVudCgpKSkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQoKSk7CiAKLSAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBpZCA9IGdldElkQXR0cmlidXRlKCk7CisgICAgICAgIGF1dG8mIGlkID0gZ2V0
SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
IGlmIChpc05hbWVkSXRlbSkKKyAgICAgICAgICAgIGlmIChtX2lzRXhwb3NlZCkKICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5hZGREb2N1bWVudE5hbWVkSXRlbSgqaWQuaW1wbCgpLCAqdGhpcyk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9jdW1l
bnROYW1lZEl0ZW0oKmlkLmltcGwoKSwgKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOworICAgICAgICBhdXRv
JiBuYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgp
ICYmIGlkICE9IG5hbWUpIHsKLSAgICAgICAgICAgIGlmIChpc05hbWVkSXRlbSkKKyAgICAgICAg
ICAgIGlmIChtX2lzRXhwb3NlZCkKICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGREb2N1bWVu
dE5hbWVkSXRlbSgqbmFtZS5pbXBsKCksICp0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCks
ICp0aGlzKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2RvY05hbWVkSXRlbSA9IGlzTmFtZWRJ
dGVtOwogfQogCiBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpjb250YWluc0phdmFBcHBsZXQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDZjZDE0MDU0
NzUzZWVmMDc0YjAxZjJlNGY5NDIyNzcyOWFkYTNhZmQuLmVjMDg5MjdiZTY2ZmVlMzQ4MDc1NGQz
Y2Y4NjliMGMxYTgyMzgyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50
LmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE9iamVjdEVs
ZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVs
ZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE9iamVjdEVs
ZW1lbnQoKTsKIAotICAgIGJvb2wgaXNEb2NOYW1lZEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2Rv
Y05hbWVkSXRlbTsgfQorICAgIGJvb2wgaXNFeHBvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V4
cG9zZWQ7IH0KICAgICBib29sIGNvbnRhaW5zSmF2YUFwcGxldCgpIGNvbnN0OwogCiAgICAgYm9v
bCBoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZVdpZGdldChDcmVhdGVQbHVnaW5zKSBmaW5h
bDsKLSAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOworICAgIHZvaWQgdXBkYXRlRXhwb3Nl
ZFN0YXRlKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGRlYWwg
d2l0aCB1cmwgb3Igc2VydmljZVR5cGUKICAgICAvLyBzbyB0aGF0IHdlIGNhbiBiZXR0ZXIgc2hh
cmUgY29kZSBiZXR3ZWVuIDxvYmplY3Q+IGFuZCA8ZW1iZWQ+LgpAQCAtMTAzLDggKzEwMyw4IEBA
IHByaXZhdGU6CiAKICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgZmlu
YWw7CiAKLSAgICBib29sIG1fZG9jTmFtZWRJdGVtIDogMTsKLSAgICBib29sIG1fdXNlRmFsbGJh
Y2tDb250ZW50IDogMTsKKyAgICBib29sIG1faXNFeHBvc2VkIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV91c2VGYWxsYmFja0NvbnRlbnQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDE5MzRiMzU2NTMyNTFlMzgzZjQ4
ODU5YzExNzIwN2U2MmNmODk0ZGIuLjdlNGQzNzNkNTRjZDFkNTYzNDc4M2YzMTJjOTBmOTJkZDIx
NjdkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI3LDczIEBACiAjaW5j
bHVkZSAiVGhlbWUuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
Ikxlbmd0aEJveC5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitpbnQgVGhlbWU6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0
KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24+IFRoZW1lOjpjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBmbG9hdCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitM
ZW5ndGhTaXplIFRoZW1lOjpjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gem9vbWVkU2l6ZTsKK30KKworTGVuZ3RoU2l6ZSBUaGVtZTo6bWluaW11bUNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAoreworICAg
IHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07Cit9CisKK2Jvb2wgVGhlbWU6
OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRoZW1lOjpwYWludChDb250cm9sUGFydCwgQ29udHJv
bFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3Jv
bGxWaWV3KiwgZmxvYXQsIGZsb2F0KQoreworfQorCit2b2lkIFRoZW1lOjppbmZsYXRlQ29udHJv
bFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYs
IGZsb2F0KSBjb25zdAoreworfQorCitib29sIFRoZW1lOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogTGVuZ3RoQm94IFRoZW1lOjpj
b250cm9sQm9yZGVyKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
TGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0KSBjb25zdAogewogICAgIHN3aXRjaCAocGFydCkg
ewotICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIE1lbnVsaXN0UGFy
dDoKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFBhcnQ6Ci0gICAgICAgIGNhc2UgQ2hlY2tib3hQ
YXJ0OgotICAgICAgICBjYXNlIFJhZGlvUGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhC
b3goMCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gem9vbWVkQm94Owor
ICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6CisgICAgY2Fz
ZSBTZWFyY2hGaWVsZFBhcnQ6CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgY2FzZSBSYWRp
b1BhcnQ6CisgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIHpvb21lZEJveDsKICAgICB9CiB9CiAKIExlbmd0aEJveCBUaGVtZTo6Y29udHJv
bFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5n
dGhCb3gmIHpvb21lZEJveCwgZmxvYXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0g
ICAgICAgIGNhc2UgTWVudWxpc3RQYXJ0OgotICAgICAgICBjYXNlIE1lbnVsaXN0QnV0dG9uUGFy
dDoKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgIGNhc2UgUmFkaW9QYXJ0Ogot
ICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiB6b29tZWRCb3g7CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6CisgICAgY2Fz
ZSBNZW51bGlzdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgY2FzZSBS
YWRpb1BhcnQ6CisgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHpvb21lZEJveDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5o
CmluZGV4IDk0MDI5ZDc3MTJmMjUxMWFiZGE4OTEzYjk2OTI5ZjEwYjA3N2FmYmYuLjU4ZDgwOThj
M2UzZjAyN2M4MWExYWIwNjY2YjZhMjdlMGI2NmU4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywxMDUgKzIzLDY5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFRoZW1l
X2gKLSNkZWZpbmUgVGhlbWVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvci5oIgot
I2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgotI2lu
Y2x1ZGUgIkxlbmd0aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJU
aGVtZVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250cm9sU3RhdGVzOwor
Y2xhc3MgRmxvYXRSZWN0OworY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGb250Q2FzY2FkZURl
c2NyaXB0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgTGVuZ3RoQm94OwogY2xh
c3MgU2Nyb2xsVmlldzsKIAotLy8gVW5saWtlIG90aGVyIHBsYXRmb3JtIGNsYXNzZXMsIFRoZW1l
IGRvZXMgZXh0ZW5zaXZlbHkgdXNlIHZpcnR1YWwgZnVuY3Rpb25zLiAgVGhpcyBkZXNpZ24gYWxs
b3dzIGEgcGxhdGZvcm0gdG8gc3dpdGNoIGJldHdlZW4gbXVsdGlwbGUgdGhlbWVzIGF0IHJ1bnRp
bWUuCitzdHJ1Y3QgTGVuZ3RoU2l6ZTsKKwogY2xhc3MgVGhlbWUgewogcHVibGljOgotICAgIFRo
ZW1lKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWUoKSB7IH0KKyAgICBzdGF0aWMgVGhlbWUmIHNp
bmdsZXRvbigpOwogCi0gICAgLy8gQSBtZXRob2QgdG8gb2J0YWluIHRoZSBiYXNlbGluZSBwb3Np
dGlvbiBhZGp1c3RtZW50IGZvciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkgYmUg
dXNlZCBpZiBhIGJhc2VsaW5lCisgICAgLy8gQSBmdW5jdGlvbiB0byBvYnRhaW4gdGhlIGJhc2Vs
aW5lIHBvc2l0aW9uIGFkanVzdG1lbnQgZm9yIGEgImxlYWYiIGNvbnRyb2wuIFRoaXMgd2lsbCBi
ZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5l
ZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9u
cyBhcmUgZXhhbXBsZXMgb2YKLSAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4g
IFRoZSBhZGp1c3RtZW50IGlzIGFuIG9mZnNldCB0aGF0IGFkZHMgdG8gdGhlIGJhc2VsaW5lLCBl
LmcuLCBtYXJnaW5Ub3AoKSArIGhlaWdodCgpICsgfG9mZnNldHwuCisgICAgLy8gY29udHJvbHMg
dGhhdCBuZWVkIHRvIGRvIHRoaXMuIFRoZSBhZGp1c3RtZW50IGlzIGFuIG9mZnNldCB0aGF0IGFk
ZHMgdG8gdGhlIGJhc2VsaW5lLCBlLmcuLCBtYXJnaW5Ub3AoKSArIGhlaWdodCgpICsgfG9mZnNl
dHwuCiAgICAgLy8gVGhlIG9mZnNldCBpcyBub3Qgem9vbWVkLgotICAgIHZpcnR1YWwgaW50IGJh
c2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQp
IGNvbnN0OwogCi0gICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMg
aXRzIGFwcGVhcmFuY2Ugd2hlbiB0aGUgd2luZG93IGlzIGluYWN0aXZlLgotICAgIHZpcnR1YWwg
Ym9vbCBjb250cm9sSGFzSW5hY3RpdmVBcHBlYXJhbmNlKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIAotICAgIC8vIEdlbmVyYWwgbWV0aG9kcyBmb3Igd2hldGhlciBv
ciBub3QgYW55IG9mIHRoZSBjb250cm9scyBpbiB0aGUgdGhlbWUgY2hhbmdlIGFwcGVhcmFuY2Ug
d2hlbiB0aGUgd2luZG93IGlzIGluYWN0aXZlIG9yCi0gICAgLy8gd2hlbiBob3ZlcmVkIG92ZXIu
Ci0gICAgdmlydHVhbCBib29sIGNvbnRyb2xzQ2FuSGF2ZUluYWN0aXZlQXBwZWFyYW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbnRyb2xzQ2FuSGF2ZUhv
dmVyZWRBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIFVzZWQg
YnkgUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBuYXRp
dmUgbG9vayBhbmQgZmVlbCBzaG91bGQgYmUgdHVybmVkIG9mZi4KLSAgICB2aXJ0dWFsIGJvb2wg
Y29udHJvbERyYXdzQm9yZGVyKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0JhY2tncm91bmQoQ29udHJvbFBhcnQpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERyYXdzRm9jdXNPdXRs
aW5lKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBNZXRob2Rz
IGZvciBvYnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgY29sb3JzLgotICAgIHZpcnR1YWwgQ29s
b3Igc2VsZWN0aW9uQ29sb3IoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBTZWxl
Y3Rpb25QYXJ0KSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAgdmlydHVhbCBDb2xvciB0
ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAg
Ci0gICAgLy8gQ1NTIHN5c3RlbSBjb2xvcnMgYW5kIGZvbnRzCi0gICAgdmlydHVhbCBDb2xvciBz
eXN0ZW1Db2xvcihUaGVtZUNvbG9yKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAgdmly
dHVhbCBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KFRoZW1lRm9udCwgRm9udERlc2NyaXB0aW9uJikg
Y29uc3QgeyByZXR1cm4gRm9udENhc2NhZGUoKTsgfQotICAgIAotICAgIC8vIEhvdyBmYXN0IHRo
ZSBjYXJldCBibGlua3MgaW4gdGV4dCBmaWVsZHMuCi0gICAgdmlydHVhbCBTZWNvbmRzIGNhcmV0
QmxpbmtJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIDUwMF9tczsgfQotCi0gICAgLy8gTm90aWZp
Y2F0aW9uIHdoZW4gdGhlIHRoZW1lIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIHRoZW1l
Q2hhbmdlZCgpIHsgfQotCi0gICAgLy8gTWV0aG9kcyB1c2VkIHRvIGFkanVzdCB0aGUgUmVuZGVy
U3R5bGVzIG9mIGNvbnRyb2xzLgotICAgIAogICAgIC8vIFRoZSBmb250IGRlc2NyaXB0aW9uIHJl
c3VsdCBzaG91bGQgaGF2ZSBhIHpvb21lZCBmb250IHNpemUuCi0gICAgdmlydHVhbCBzdGQ6Om9w
dGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KLSAgICAKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2Nh
ZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CisKICAgICAvLyBUaGUgc2l6ZSBoZXJlIGlzIGlu
IHpvb21lZCBjb29yZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXplIGlzIHJldHVybmVkLCBp
dCBhbHNvIG5lZWRzIHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIExl
bmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsg
cmV0dXJuIHpvb21lZFNpemU7IH0KLSAgICAKLSAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHNp
emUgZm9yIGEgY29udHJvbCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuICAKLSAgICB2aXJ0dWFsIExl
bmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB7IHsgMCwgRml4ZWQgfSwg
eyAwLCBGaXhlZCB9IH07IH0KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29u
dHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6
ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVt
IHNpemUgZm9yIGEgY29udHJvbCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCisgICAgdmlydHVhbCBM
ZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKICAgICAKICAgICAvLyBBbGxvd3MgdGhlIHRo
ZW1lIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgcGFkZGluZy9ib3JkZXIuCiAgICAgdmlydHVhbCBM
ZW5ndGhCb3ggY29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwogICAg
IHZpcnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0OwotICAgIAorCiAgICAgLy8gV2hldGhlciBvciBub3Qgd2hpdGVzcGFjZTogcHJlIHNob3Vs
ZCBiZSBmb3JjZWQgb24gYWx3YXlzLgotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQ
cmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0KSBjb25z
dDsKIAogICAgIC8vIE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBpcyBp
biB6b29tZWQgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0
LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiAvKnpv
b21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqLCBmbG9hdCAvKmRl
dmljZVNjYWxlRmFjdG9yKi8sIGZsb2F0IC8qcGFnZVNjYWxlRmFjdG9yKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Ip
OwogCiAgICAgLy8gU29tZSBjb250cm9scyBtYXkgc3BpbGwgb3V0IG9mIHRoZWlyIGNvbnRhaW5l
cnMgKGUuZy4sIHRoZSBjaGVjayBvbiBhbiBPUyBYIGNoZWNrYm94KS4gIFdoZW4gdGhlc2UgY29u
dHJvbHMgcmVwYWludCwKICAgICAvLyB0aGUgdGhlbWUgbmVlZHMgdG8gY29tbXVuaWNhdGUgdGhp
cyBpbmZsYXRlZCByZWN0IHRvIHRoZSBlbmdpbmUgc28gdGhhdCBpdCBjYW4gaW52YWxpZGF0ZSB0
aGUgd2hvbGUgY29udHJvbC4KICAgICAvLyBUaGUgcmVjdCBwYXNzZWQgaW4gaXMgaW4gem9vbWVk
IGNvb3JkaW5hdGVzLCBzbyB0aGUgaW5mbGF0aW9uIHNob3VsZCB0YWtlIHRoYXQgaW50byBhY2Nv
dW50IGFuZCBtYWtlIHN1cmUgdGhlIGluZmxhdGlvbgogICAgIC8vIGFtb3VudCBpcyBhbHNvIHNj
YWxlZCBieSB0aGUgem9vbUZhY3Rvci4KLSAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQ
YWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmIC8q
em9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9CisgICAgdmlydHVh
bCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9s
U3RhdGVzJiwgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCB1
c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKIAotICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0
U3R5bGVTaGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKLSAgICAvLyB0aGUgZGVm
YXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5jc3MuCi0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0U3R5
bGVTaGVldCgpOworcHJvdGVjdGVkOgorICAgIFRoZW1lKCkgPSBkZWZhdWx0OworICAgIHZpcnR1
YWwgflRoZW1lKCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZVNl
bGVjdGlvbkNvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZVNlbGVjdGlvbkNvbG9y
OworICAgIFRoZW1lKGNvbnN0IFRoZW1lJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRvcj0o
Y29uc3QgVGhlbWUmKSA9IGRlbGV0ZTsKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUg
dGhlbWUuICBUaGlzIGlzIGltcGxlbWVudGVkIGluIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzdWJj
bGFzc2VzLgotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gVGhlbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVGhlbWVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhl
bWVDb2NvYS5oCmluZGV4IGRjNTE4NDcwZDZjYjU2YWI3NTQ2MTEyMWUwYmUzYTRkYjcyNzdhZDQu
LmViNTk4ZTM0NDE5NWNjMGEwNTYxMzQ0NDRkMjQ3YWIyOWI4NzAxMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKQEAgLTIzLDIxICsyMywxNSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRoZW1lQ29jb2FfaAotI2RlZmluZSBUaGVtZUNv
Y29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGhlbWUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUaGVtZUNvY29hIDogcHVibGljIFRoZW1lIHsKLXB1YmxpYzoKLSAg
ICBUaGVtZUNvY29hKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVDb2NvYSgpIHsgfQotCi0gICAg
dm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKK3ByaXZhdGU6CisgICAgdm9pZCBkcmF3TmFt
ZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSBjb25zdCBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IFRoZW1lQ29jb2FfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KaW5kZXggNDhiMmU1ZTRiNTI3ZWExZGEwNGQ5MzJhMzc4MDRjMGNiNTdjZTA2Yy4uODYxNTBl
NWE4YWUzN2JjYWFjZTE0MmUxMmFmOGFkMDMwOTViOWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogI2ltcG9ydCAiVGhlbWVDb2NvYS5oIgogCisjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0IDxkbGZjbi5oPgogCkBAIC01MSw2
ICs1Miw3IEBAIHN0YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTCiB9CiAKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQorCiBzdGF0aWMgTlNCdW5kbGUgKnBhc3NLaXRCdW5kbGUoKQogewogICAgIHN0YXRpYyBO
U0J1bmRsZSAqcGFzc0tpdEJ1bmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHAKaW5kZXggYjhiZDIxYTVlODY2MjI2MjRk
M2NkN2E5ZGM4MzUyYzI0ZTI0NTg0Yi4uM2M4ZGQ3M2ZlZWQxZjMwMTE2ZTFjYzM0MzdmN2RlNDI2
NGZlNGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9nbGli
L0dhbWVwYWRzR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9n
bGliL0dhbWVwYWRzR2xpYi5jcHAKQEAgLTIxMCw4ICsyMTAsOCBAQCBnYm9vbGVhbiBHYW1lcGFk
c0dsaWI6OmlzR2FtZXBhZERldmljZShHVWRldkRldmljZSogZGV2aWNlKQogCiB2b2lkIHNhbXBs
ZUdhbWVwYWRzKEdhbWVwYWRMaXN0KiBpbnRvKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChHYW1lcGFkc0dsaWIsIGdhbWVwYWRzR2xpYiwgKGludG8tPmxlbmd0aCgpKSk7
Ci0gICAgZ2FtZXBhZHNHbGliLnVwZGF0ZUdhbWVwYWRMaXN0KGludG8pOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxHYW1lcGFkc0dsaWI+IGdhbWVwYWRzR2xpYihpbnRvLT5sZW5ndGgoKTsK
KyAgICBnYW1lcGFkc0dsaWIuZ2V0KCkudXBkYXRlR2FtZXBhZExpc3QoaW50byk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBkN2M5ZDQyNGEyYmZhMjI2MTY2MDRiYWQ0NThmNmZi
YjQyMjg3MmRkLi40NTFlMGU1MWEzYmJlMzRkZTE0ZGY4NDJkNTk3YWY4NjA4MjliNTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNCwxNSArMzQs
MTYgQEAKICNpbmNsdWRlICJTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2lkdGhJdGVyYXRvci5oIgotI2lmIFVTRShDQUlS
TykKLSNpbmNsdWRlIDxjYWlyby5oPgotI2VuZGlmCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSA8
Y2Fpcm8uaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNl
IFVuaWNvZGU7CiAKQEAgLTUwLDM0ICs1MSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKTsKIAorc3Rh
dGljIHZvaWQgYWRkKEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2V0LCBjb25zdCBjaGFyKiBuYW1l
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXI+IHVuaWNvZGVOYW1lKQoreworICAgIHVuc2ln
bmVkIG5hbWVMZW5ndGggPSBzdHJsZW4obmFtZSk7CisgICAgc2V0LmFkZChBdG9taWNTdHJpbmcg
eyBuYW1lLCBuYW1lTGVuZ3RoLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH0p
OworICAgIHVuc2lnbmVkIHVuaWNvZGVOYW1lTGVuZ3RoID0gdW5pY29kZU5hbWUuc2l6ZSgpOwor
ICAgIHNldC5hZGQoQXRvbWljU3RyaW5nIHsgdW5pY29kZU5hbWUuYmVnaW4oKSwgdW5pY29kZU5h
bWVMZW5ndGggfSk7Cit9CisKIHN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBpZiAoZmFtaWx5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0
cmluZz4qIHNldDsKLSAgICBpZiAoIXNldCkgewotICAgICAgICBzZXQgPSBuZXcgSGFzaFNldDxB
dG9taWNTdHJpbmc+OwotICAgICAgICBzZXQtPmFkZCgiTVMgUEdvdGhpYyIpOwotICAgICAgICBV
Q2hhciB1bmljb2RlTmFtZU1TUEdvdGhpY1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4
RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKLSAgICAgICAgc2V0LT5hZGQo
QXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQR290aGljLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNv
ZGVOYW1lTVNQR290aGljKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNUyBQTWluY2hvIik7Ci0g
ICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQTWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMsIDB4
MDAyMCwgMHhGRjMwLCAweDY2MEUsIDB4NjcxRH07Ci0gICAgICAgIHNldC0+YWRkKEF0b21pY1N0
cmluZyh1bmljb2RlTmFtZU1TUE1pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1T
UE1pbmNobykpKTsKLQotICAgICAgICBzZXQtPmFkZCgiTVMgR290aGljIik7Ci0gICAgICAgIFVD
aGFyIHVuaWNvZGVOYW1lTVNHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDMw
QjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUZ9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJp
bmcodW5pY29kZU5hbWVNU0dvdGhpYywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1TR290
aGljKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNUyBNaW5jaG8iKTsKLSAgICAgICAgVUNoYXIg
dW5pY29kZU5hbWVNU01pbmNob1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4NjYwRSwg
MHg2NzFEfTsKLSAgICAgICAgc2V0LT5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNNaW5j
aG8sIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU01pbmNobykpKTsKLQotICAgICAgICBz
ZXQtPmFkZCgiTWVpcnlvIik7Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTWVpcnlvW10gPSB7
MHgzMEUxLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBfTsKLSAgICAgICAgc2V0LT5hZGQoQXRvbWlj
U3RyaW5nKHVuaWNvZGVOYW1lTWVpcnlvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTWVp
cnlvKSkpOwotICAgIH0KLSAgICByZXR1cm4gc2V0LT5jb250YWlucyhmYW1pbHkpOworICAgIHN0
YXRpYyBjb25zdCBhdXRvIHNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiBzZXQ7CisgICAgICAgIGFkZChzZXQsICJNUyBQR290aGljIiwg
eyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMs
IDB4MzBBRiB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1TIFBNaW5jaG8iLCB7IDB4RkYyRCwgMHhG
RjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUQgfSk7CisgICAgICAgIGFkZChzZXQs
ICJNUyBHb3RoaWMiLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAw
eDMwQzMsIDB4MzBBRiB9KTsKKyAgICAgICAgYWRkKHNldCwgIk1TIE1pbmNobyIsIHsgMHhGRjJE
LCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUQgfSk7CisgICAgICAgIGFkZChzZXQsICJN
ZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQSB9KTsKKyAgICAgICAgcmV0
dXJuIHNldDsKKyAgICB9KCkpOworICAgIHJldHVybiBzZXQuZ2V0KCkuY29udGFpbnMoZmFtaWx5
KTsKIH0KIAogRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpzX2NvZGVQYXRoID0g
QXV0bzsKQEAgLTg4LDExICs4Myw2IEBAIEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2Fk
ZTo6c19jb2RlUGF0aCA9IEF1dG87CiAKIEZvbnRDYXNjYWRlOjpGb250Q2FzY2FkZSgpCiAgICAg
OiBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0gICAgLCBtX2xldHRlclNwYWNpbmcoMCkKLSAgICAs
IG1fd29yZFNwYWNpbmcoMCkKLSAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2woZmFsc2Up
Ci0gICAgLCBtX2VuYWJsZUtlcm5pbmcoZmFsc2UpCi0gICAgLCBtX3JlcXVpcmVzU2hhcGluZyhm
YWxzZSkKIHsKIH0KIApAQCAtMTExLDkgKzEwMSw2IEBAIEZvbnRDYXNjYWRlOjpGb250Q2FzY2Fk
ZShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBmZCwgZmxvYXQgbGV0dGVyU3BhY2luZywK
IEZvbnRDYXNjYWRlOjpGb250Q2FzY2FkZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBmb250RGF0
YSwgRm9udFNtb290aGluZ01vZGUgZm9udFNtb290aGluZ01vZGUpCiAgICAgOiBtX2ZvbnRzKEZv
bnRDYXNjYWRlRm9udHM6OmNyZWF0ZUZvclBsYXRmb3JtRm9udChmb250RGF0YSkpCiAgICAgLCBt
X3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0gICAgLCBtX2xldHRlclNwYWNpbmcoMCkKLSAgICAsIG1f
d29yZFNwYWNpbmcoMCkKLSAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2woZmFsc2UpCiAg
ICAgLCBtX2VuYWJsZUtlcm5pbmcoY29tcHV0ZUVuYWJsZUtlcm5pbmcoKSkKICAgICAsIG1fcmVx
dWlyZXNTaGFwaW5nKGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDc3MWM2ZmJlNmMyNGI4
YTQ2ZjJkMGJhNjUyNDllMDUxZmE2MWUyOGUuLjNjZDIxNDQyN2NjOWNhMzljYjRmNTUxZWYzYWNm
MmFjMTZhZTNjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDEw
LCAyMDExLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAt
MjIsMTUgKzIyLDEzIEBACiAgKgogICovCiAKLSNpZm5kZWYgRm9udENhc2NhZGVfaAotI2RlZmlu
ZSBGb250Q2FzY2FkZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRhc2hBcnJheS5oIgog
I2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZUZvbnRzLmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgotI2luY2x1ZGUgIlRleHRG
bGFncy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ0LDEzICs0Miw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNzIEZsb2F0UmVjdDsKLWNs
YXNzIEZvbnREYXRhOwotY2xhc3MgRm9udE1ldHJpY3M7Ci1jbGFzcyBGb250UGxhdGZvcm1EYXRh
OwotY2xhc3MgRm9udFNlbGVjdG9yOwotY2xhc3MgR2x5cGhCdWZmZXI7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CiBjbGFzcyBMYXlvdXRSZWN0OwogY2xhc3MgUmVuZGVyVGV4dDsKQEAgLTYwLDIx
ICs1MSwxMiBAQCBjbGFzcyBUZXh0UnVuOwogc3RydWN0IEdseXBoRGF0YTsKIAogc3RydWN0IEds
eXBoT3ZlcmZsb3cgewotICAgIEdseXBoT3ZlcmZsb3coKQotICAgICAgICA6IGxlZnQoMCkKLSAg
ICAgICAgLCByaWdodCgwKQotICAgICAgICAsIHRvcCgwKQotICAgICAgICAsIGJvdHRvbSgwKQot
ICAgICAgICAsIGNvbXB1dGVCb3VuZHMoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIGlubGlu
ZSBib29sIGlzRW1wdHkoKQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gIWxlZnQgJiYgIXJpZ2h0ICYmICF0b3AgJiYgIWJvdHRvbTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgdm9pZCBleHRlbmRUbyhjb25zdCBHbHlwaE92ZXJmbG93JiBvdGhlcikKKyAgICB2
b2lkIGV4dGVuZFRvKGNvbnN0IEdseXBoT3ZlcmZsb3cmIG90aGVyKQogICAgIHsKICAgICAgICAg
bGVmdCA9IHN0ZDo6bWF4KGxlZnQsIG90aGVyLmxlZnQpOwogICAgICAgICByaWdodCA9IHN0ZDo6
bWF4KHJpZ2h0LCBvdGhlci5yaWdodCk7CkBAIC04NCwxNCArNjYsMTUgQEAgc3RydWN0IEdseXBo
T3ZlcmZsb3cgewogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdseXBoT3ZlcmZsb3cmIG90
aGVyKQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFByb2JhYmx5IHNob3VsZCBuYW1lIHRoaXMg
cmF0aGVyIHRoYW4gbWFraW5nIGl0IHRoZSAhPSBvcGVyYXRvciBzaW5jZSBpdCBpZ25vcmVzIHRo
ZSB2YWx1ZSBvZiBjb21wdXRlQm91bmRzLgogICAgICAgICByZXR1cm4gbGVmdCAhPSBvdGhlci5s
ZWZ0IHx8IHJpZ2h0ICE9IG90aGVyLnJpZ2h0IHx8IHRvcCAhPSBvdGhlci50b3AgfHwgYm90dG9t
ICE9IG90aGVyLmJvdHRvbTsKICAgICB9CiAKLSAgICBpbnQgbGVmdDsKLSAgICBpbnQgcmlnaHQ7
Ci0gICAgaW50IHRvcDsKLSAgICBpbnQgYm90dG9tOwotICAgIGJvb2wgY29tcHV0ZUJvdW5kczsK
KyAgICBpbnQgbGVmdCB7IDAgfTsKKyAgICBpbnQgcmlnaHQgeyAwIH07CisgICAgaW50IHRvcCB7
IDAgfTsKKyAgICBpbnQgYm90dG9tIHsgMCB9OworICAgIGJvb2wgY29tcHV0ZUJvdW5kcyB7IGZh
bHNlIH07CiB9OwogCiBjbGFzcyBHbHlwaFRvUGF0aFRyYW5zbGF0b3IgewpAQCAtMzI1LDExICsz
MDgsMTEgQEAgcHJpdmF0ZToKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIG1fZm9udERlc2Ny
aXB0aW9uOwogICAgIG11dGFibGUgUmVmUHRyPEZvbnRDYXNjYWRlRm9udHM+IG1fZm9udHM7CiAg
ICAgV2Vha1B0ckZhY3Rvcnk8Rm9udENhc2NhZGU+IG1fd2Vha1B0ckZhY3Rvcnk7Ci0gICAgZmxv
YXQgbV9sZXR0ZXJTcGFjaW5nOwotICAgIGZsb2F0IG1fd29yZFNwYWNpbmc7Ci0gICAgbXV0YWJs
ZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2w7Ci0gICAgbXV0YWJsZSB1bnNpZ25lZCBt
X2VuYWJsZUtlcm5pbmcgOiAxOyAvLyBDb21wdXRlZCBmcm9tIG1fZm9udERlc2NyaXB0aW9uLgot
ICAgIG11dGFibGUgdW5zaWduZWQgbV9yZXF1aXJlc1NoYXBpbmcgOiAxOyAvLyBDb21wdXRlZCBm
cm9tIG1fZm9udERlc2NyaXB0aW9uLgorICAgIGZsb2F0IG1fbGV0dGVyU3BhY2luZyB7IDAgfTsK
KyAgICBmbG9hdCBtX3dvcmRTcGFjaW5nIHsgMCB9OworICAgIG11dGFibGUgYm9vbCBtX3VzZUJh
Y2tzbGFzaEFzWWVuU3ltYm9sIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9lbmFibGVL
ZXJuaW5nIHsgZmFsc2UgfTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KKyAg
ICBtdXRhYmxlIGJvb2wgbV9yZXF1aXJlc1NoYXBpbmcgeyBmYWxzZSB9OyAvLyBDb21wdXRlZCBm
cm9tIG1fZm9udERlc2NyaXB0aW9uLgogfTsKIAogdm9pZCBpbnZhbGlkYXRlRm9udENhc2NhZGVD
YWNoZSgpOwpAQCAtMzcwLDUgKzM1MywzIEBAIGlubGluZSBmbG9hdCBGb250Q2FzY2FkZTo6dGFi
V2lkdGgoY29uc3QgRm9udCYgZm9udCwgdW5zaWduZWQgdGFiU2l6ZSwgZmxvYXQgcG9zCiB9CiAK
IH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBhMzAwZTBmMWI4ODQ1
ZTcyNDMyMzY5M2MwM2U1N2RkMTZhMjNjNDgzLi4wYWYzMzAyODQwNmNlN2U5NTMyNGU4YjdmM2M0
YzhjMTE3ZTcwNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8g
c3JjUmVjdC5oZWlnaHQoKSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwg
LXNyY1JlY3QueSgpKTsKIAotICAgIHBsYXRmb3JtVGhlbWUoKS0+ZHJhd05hbWVkSW1hZ2UobV9u
YW1lLCBjb250ZXh0LCBkc3RSZWN0KTsKKyAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVk
SW1hZ2UobV9uYW1lLCBjb250ZXh0LCBkc3RSZWN0KTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWREcmF3OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CkBAIC03MSw3
ICs3MSw3IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAgICAgICAgIHJldHVybjsKIAogICAg
IEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQo
KTsKLSAgICBwbGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3ND
b250ZXh0LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkp
OworICAgIFRoZW1lOjpzaW5nbGV0b24oKS5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGdyYXBoaWNz
Q29udGV4dCwgRmxvYXRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkp
KTsKIAogICAgIC8vIFRpbGUgdGhlIGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgogICAg
IGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmNwcAppbmRleCBiNGZhZDA3OTFhMDBhZGIyYzUzZGY1NzcyYjUwM2ZmOWJmMzFk
MzVkLi5mOGVmNGQ1YmU0NGE3NWFiYTI0ZTc2MzUyOTZmOTIxYjE2ZTgxYmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRi5jcHAKQEAgLTI2NSwyMiArMjY1LDE5IEBAIHN0YXRpYyBDRkFycmF5UmVmIG1ldGFkYXRh
S2V5TmFtZXMoKQogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiBBVkNGVGltZWRNZXRh
ZGF0YUdyb3VwLmggZXhwb3J0ZWQgdGhpcyBrZXkuCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgQ01UaW1l
UmFuZ2VTdGFydEtleSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENG
U3RyaW5nUmVmLCBrZXksIChDRlNUUigic3RhcnQiKSkpOwotICAgIHJldHVybiBrZXk7CisgICAg
cmV0dXJuIENGU1RSKCJzdGFydCIpOwogfQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVy
IGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlzIGtleS4KIHN0YXRpYyBD
RlN0cmluZ1JlZiBDTVRpbWVSYW5nZUR1cmF0aW9uS2V5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIGtleSwgKENGU1RSKCJkdXJhdGlvbiIpKSk7
Ci0gICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gQ0ZTVFIoImR1cmF0aW9uIik7CiB9CiAKIC8v
IEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRiBleHBvcnRlZCB0aGlzIG5vdGlmaWNh
dGlvbiBuYW1lLgogc3RhdGljIENGU3RyaW5nUmVmIENBQ0ZDb250ZXh0TmVlZHNGbHVzaE5vdGlm
aWNhdGlvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENGU3RyaW5n
UmVmLCBuYW1lLCAoQ0ZTVFIoImtDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24iKSkp
OwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiBDRlNUUigia0NBQ0ZDb250ZXh0TmVlZHNG
bHVzaE5vdGlmaWNhdGlvbiIpOwogfQogCiAvLyBEZWZpbmUgQVZDRiBvYmplY3QgYWNjZXNzb3Jz
IGFzIGlubGluZSBmdW5jdGlvbnMgaGVyZSBpbnN0ZWFkIG9mIGluIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGIHNvIHdlIGRvbid0IGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmNwcAppbmRleCAwZGI4OGM4NWJjZDhhMDY4MzQyMTU4Y2EzZDcxNzlmYzVhNDY5NzBlLi40MTNj
OTBiZGQ1NmFkYzlmMTM3Nzk2YTQ3ZWM3M2ZlODU0NDIwOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBYnN0cmFjdENBQ0ZM
YXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlZEV4Y2VwdGlvbkhhbmRsZXJTdXBw
cmVzc29yLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzcsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExheWVyQ2hhbmdlc0ZsdXNoZXImIExheWVyQ2hh
bmdlc0ZsdXNoZXI6OnNpbmdsZXRvbigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKExheWVyQ2hhbmdlc0ZsdXNoZXIsIGZsdXNoZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TGF5ZXJDaGFuZ2VzRmx1c2hlcj4gZmx1c2hlcjsKICAgICByZXR1cm4gZmx1
c2hlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmgKaW5kZXggMjhlNjZiOTg1MzlmMDNk
NzExNGU2YTgyMDcyMDE0ZmUxNmJmMGQyMC4uOGQwNjRlZjIwMmJjZmQ0YTlhZTBkZDlkOGRlOWU1
NzIyZWM4ODRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5oCkBAIC0yMywxMCArMjMsMTAg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMYXllckNoYW5nZXNGbHVzaGVyX2gK
LSNkZWZpbmUgTGF5ZXJDaGFuZ2VzRmx1c2hlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTQzLDYgKzQzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2FuY2VsUGVuZGluZ0ZsdXNoKEFic3RyYWN0Q0FDRkxheWVyVHJl
ZUhvc3QqKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8TGF5ZXJDaGFu
Z2VzRmx1c2hlcj47CiAgICAgTGF5ZXJDaGFuZ2VzRmx1c2hlcigpOwogICAgIH5MYXllckNoYW5n
ZXNGbHVzaGVyKCk7CiAKQEAgLTU3LDUgKzU4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIExheWVyQ2hhbmdlc0ZsdXNoZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
V2luLmNwcAppbmRleCA4MDg4MzBiOGI4NTdiZDI4NmI4M2ZlOGQ0NGM0NmE5NDE3MDk3YTM1Li42
ZDUzNzM3YmNlYzNhNzI2MjdmYTM2NTBlZWQ1MWVkZDBiYjhiZDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHV2luLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NiwzOSArNDYsMzcgQEAgU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKIAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7Ci0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAg
IGlmICh0eXBlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFN0cmluZ01hcDsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nTWFwLCBVVElNYXAsICgpKTsKLSAgICBpZiAoVVRJTWFw
LmlzRW1wdHkoKSkgewotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMuaHRtbCIsICJodG1sIik7
Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5qcGVnIiwgImpwZWciKTsKLSAgICAgICAgVVRJ
TWFwLmFkZCgicHVibGljLmpwZWctMjAwMCIsICJqcDIiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgi
cHVibGljLnBsYWluLXRleHQiLCAidHh0Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5w
bmciLCAicG5nIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy50aWZmIiwgInRpZmYiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnhiaXRtYXAtaW1hZ2UiLCAieGJtIik7Ci0gICAg
ICAgIFVUSU1hcC5hZGQoInB1YmxpYy54bWwiLCAieG1sIik7Ci0gICAgICAgIFVUSU1hcC5hZGQo
ImNvbS5hZG9iZS5pbGx1c3RyYXRvci5haS1pbWFnZSIsICJhaSIpOwotICAgICAgICBVVElNYXAu
YWRkKCJjb20uYWRvYmUucGRmIiwgInBkZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYWRv
YmUucGhvdG9zaG9wLWltYWdlIiwgInBzZCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYWRv
YmUucG9zdHNjcmlwdCIsICJwcyIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYXBwbGUuaWNu
cyIsICJpY25zIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hcHBsZS5tYWNwYWludC1pbWFn
ZSIsICJwbnRnIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hcHBsZS5waWN0IiwgInBpY3Qi
KTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFwcGxlLnF1aWNrdGltZS1pbWFnZSIsICJxdGlm
Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hcHBsZS53ZWJhcmNoaXZlIiwgIndlYmFyY2hp
dmUiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmNvbXB1c2VydmUuZ2lmIiwgImdpZiIpOyAg
ICAgICAgCi0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5pbG0ub3BlbmV4ci1pbWFnZSIsICJleHIi
KTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmtvZGFrLmZsYXNocGl4LWltYWdlIiwgImZweCIp
OwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubWljcm9zb2Z0LmJtcCIsICJibXAiKTsKLSAgICAg
ICAgVVRJTWFwLmFkZCgiY29tLm1pY3Jvc29mdC5pY28iLCAiaWNvIik7Ci0gICAgICAgIFVUSU1h
cC5hZGQoImNvbS5uZXRzY2FwZS5qYXZhc2NyaXB0LXNvdXJjZSIsICJqcyIpOwotICAgICAgICBV
VElNYXAuYWRkKCJjb20uc2dpLnNnaS1pbWFnZSIsICJzZ2kiKTsKLSAgICAgICAgVVRJTWFwLmFk
ZCgiY29tLnRydWV2aXNpb24udGdhLWltYWdlIiwgInRnYSIpOwotICAgIH0KLSAgICByZXR1cm4g
VVRJTWFwLmdldCh0eXBlKTsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBtYXAgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiB7CisgICAgICAgIHsgInB1YmxpYy5odG1sIiwgImh0bWwiIH0sCisgICAgICAgIHsgInB1Ymxp
Yy5qcGVnIiwgImpwZWciIH0sCisgICAgICAgIHsgInB1YmxpYy5qcGVnLTIwMDAiLCAianAyIiB9
LAorICAgICAgICB7ICJwdWJsaWMucGxhaW4tdGV4dCIsICJ0eHQiIH0sCisgICAgICAgIHsgInB1
YmxpYy5wbmciLCAicG5nIiB9LAorICAgICAgICB7ICJwdWJsaWMudGlmZiIsICJ0aWZmIiB9LAor
ICAgICAgICB7ICJwdWJsaWMueGJpdG1hcC1pbWFnZSIsICJ4Ym0iIH0sCisgICAgICAgIHsgInB1
YmxpYy54bWwiLCAieG1sIiB9LAorICAgICAgICB7ICJjb20uYWRvYmUuaWxsdXN0cmF0b3IuYWkt
aW1hZ2UiLCAiYWkiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5wZGYiLCAicGRmIiB9LAorICAg
ICAgICB7ICJjb20uYWRvYmUucGhvdG9zaG9wLWltYWdlIiwgInBzZCIgfSwKKyAgICAgICAgeyAi
Y29tLmFkb2JlLnBvc3RzY3JpcHQiLCAicHMiIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5pY25z
IiwgImljbnMiIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5tYWNwYWludC1pbWFnZSIsICJwbnRn
IiB9LAorICAgICAgICB7ICJjb20uYXBwbGUucGljdCIsICJwaWN0IiB9LAorICAgICAgICB7ICJj
b20uYXBwbGUucXVpY2t0aW1lLWltYWdlIiwgInF0aWYiIH0sCisgICAgICAgIHsgImNvbS5hcHBs
ZS53ZWJhcmNoaXZlIiwgIndlYmFyY2hpdmUiIH0sCisgICAgICAgIHsgImNvbS5jb21wdXNlcnZl
LmdpZiIsICJnaWYiIH0sCisgICAgICAgIHsgImNvbS5pbG0ub3BlbmV4ci1pbWFnZSIsICJleHIi
IH0sCisgICAgICAgIHsgImNvbS5rb2Rhay5mbGFzaHBpeC1pbWFnZSIsICJmcHgiIH0sCisgICAg
ICAgIHsgImNvbS5taWNyb3NvZnQuYm1wIiwgImJtcCIgfSwKKyAgICAgICAgeyAiY29tLm1pY3Jv
c29mdC5pY28iLCAiaWNvIiB9LAorICAgICAgICB7ICJjb20ubmV0c2NhcGUuamF2YXNjcmlwdC1z
b3VyY2UiLCAianMiIH0sCisgICAgICAgIHsgImNvbS5zZ2kuc2dpLWltYWdlIiwgInNnaSIgfSwK
KyAgICAgICAgeyAiY29tLnRydWV2aXNpb24udGdhLWltYWdlIiwgInRnYSIgfSwKKyAgICB9KTsK
KyAgICByZXR1cm4gbWFwLmdldCgpLmdldCh0eXBlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKaW5kZXggODNmZjI3ZWE1MjU2MjI4YThkNTc1YmFlZjE3
YzY3NTY1NmMyMTdhNC4uNzkxOTVhMjM1MTdhOTZmN2Q4MTc2MjM3ZDFhNDgyNzA1YzM2OGViMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFy
ZkJ1enpGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6ekZhY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRm9udFBs
YXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgPGhiLW90Lmg+CiAjaW5jbHVkZSA8aGIuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
NCw4ICs3NSw4IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEZhY2VDYWNoZUVu
dHJ5PiwgV1RGOjpJbnRIYXNoPHVpbnQ2NF90PiwgV1RGOjpVCiAKIHN0YXRpYyBIYXJmQnV6ekZh
Y2VDYWNoZSogaGFyZkJ1enpGYWNlQ2FjaGUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChIYXJmQnV6ekZhY2VDYWNoZSwgc19oYXJmQnV6ekZhY2VDYWNoZSwgKCkpOwot
ICAgIHJldHVybiAmc19oYXJmQnV6ekZhY2VDYWNoZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFyZkJ1enpGYWNlQ2FjaGU+IHNfaGFyZkJ1enpGYWNlQ2FjaGU7CisgICAgcmV0dXJuICZz
X2hhcmZCdXp6RmFjZUNhY2hlLmdldCgpOwogfQogCiBIYXJmQnV6ekZhY2U6OkhhcmZCdXp6RmFj
ZShGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEsIHVpbnQ2NF90IHVuaXF1ZUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcAppbmRleCA3ODFiNmY4MDM4ZGNkZmUyN2MzNjEzODM3NDZhYWFmY2YwNzJlYTY5Li5hY2Zl
NzllNmFiNDI2N2E1ZTViMjY3MTViYjczMGU3ZDY4YWNlZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMzQw
LDggKzM0MCw5IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OmZvbnRGcm9tRGVzY3JpcHRpb25B
bmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9uCiAKIFJlZjxGb250PiBGb250Q2Fj
aGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24pCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZmFsbGJhY2tGb250TmFtZSwgKCkpOwotICAgIGlmICghZmFsbGJhY2tGb250TmFtZS5p
c0VtcHR5KCkpCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZmFsbGJh
Y2tGb250TmFtZTsKKworICAgIGlmICghZmFsbGJhY2tGb250TmFtZS5nZXQoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAqZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNr
Rm9udE5hbWUpOwogCiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVo
b3cgZ2V0IHRoZSB1c2VyJ3MgZGVmYXVsdCBmb250IGhlcmUuICBGb3Igbm93IHdlJ2xsIHBpY2sK
QEAgLTM2MCw3ICszNjEsNyBAQCBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJh
Y2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aQogICAgIFJlZlB0cjxG
b250PiBzaW1wbGVGb250OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChmYWxsYmFja0ZvbnRzKTsgKytpKSB7CiAgICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9u
dEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNrRm9udHNbaV0pKSB7Ci0gICAgICAg
ICAgICBmYWxsYmFja0ZvbnROYW1lID0gZmFsbGJhY2tGb250c1tpXTsKKyAgICAgICAgICAgIGZh
bGxiYWNrRm9udE5hbWUuZ2V0KCkgPSBmYWxsYmFja0ZvbnRzW2ldOwogICAgICAgICAgICAgcmV0
dXJuICpzaW1wbGVGb250OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVGhlbWVJT1MuaAppbmRleCAzNzdiODIyNmU0YWY4MTNkZjllZjUwZTYyMTcwNDI1OWQ0OGE5
ODI5Li43MGI2MWFiYWFmOWQwZDRjMzE0N2FmN2RmYjRmOWI2Zjg3ZDgyOWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaApAQCAtMjMsMjEgKzIzLDE1IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFRoZW1lSU9TX2gKLSNkZWZpbmUgVGhlbWVJT1NfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUaGVtZUNvY29hLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgVGhlbWVJT1MgOiBwdWJsaWMgVGhlbWVDb2NvYSB7Ci1wdWJsaWM6Ci0g
ICAgVGhlbWVJT1MoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZUlPUygpIHsgfQotCi0gICAgYm9v
bCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBvdmVycmlkZTsKK2NsYXNzIFRoZW1l
SU9TIGZpbmFsIDogcHVibGljIFRoZW1lQ29jb2EgeworcHJpdmF0ZToKKyAgICBib29sIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gVGhlbWVJT1NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1RoZW1lSU9TLm1tCmluZGV4IDA3MjBkNjQ2ZDk1MDIwMjZiMjI0YmMwNmY1ZWRkOWM0ZWMwN2Q1
ZGUuLjMxNTAyY2JhYTAxNGNkMDY1N2ZiNzdkZDVlZWY5Njk3YjQxZjQzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDggQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiVGhlbWVJT1MuaCIKIAotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
LmgiCi0jaW1wb3J0ICJTY3JvbGxWaWV3LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKIFNPRlRfTElOSyhVSUtp
dCwgVUlBY2Nlc3NpYmlsaXR5SXNSZWR1Y2VNb3Rpb25FbmFibGVkLCBCT09MLCAodm9pZCksICgp
KQpAQCAtMzksMTIgKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotLy8gRklYTUU6IEltcGxlbWVudCBiZWZvcmUgZW5hYmxpbmcgVVNFKE5FV19U
SEVNRSkuCi0KLVRoZW1lKiBwbGF0Zm9ybVRoZW1lKCkKK1RoZW1lJiBUaGVtZTo6c2luZ2xldG9u
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVJT1M+IHRoZW1lSU9TOwotICAg
IHJldHVybiAmdGhlbWVJT1MuZ2V0KCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1l
SU9TPiB0aGVtZTsKKyAgICByZXR1cm4gdGhlbWU7CiB9CiAKIGJvb2wgVGhlbWVJT1M6OnVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5oCmluZGV4IGIzNDZhNjVlZDAxNmE0ODA3OTEwNGU5M2UyODU4NGE2MmIwY2FmM2MuLjE2
N2NmNDA2Y2JiMDRiOGRiMGU3YWQ2ZmE4NDI4OTZjNjIzYmMyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9UaGVtZU1hYy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQ2ICsyMywzNiBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAg
Ki8KIAotI2lmbmRlZiBUaGVtZU1hY19oCi0jZGVmaW5lIFRoZW1lTWFjX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiVGhlbWVDb2NvYS5oIgogCi1AaW50ZXJmYWNlIE5TRm9udChXZWJDb3Jl
VGhlbWUpCi0tIChOU1N0cmluZyopd2ViQ29yZUZhbWlseU5hbWU7Ci1AZW5kCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgVGhlbWVNYWMgOiBwdWJsaWMgVGhlbWVDb2NvYSB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBUaGVtZU1hYyBmaW5hbCA6IHB1YmxpYyBU
aGVtZUNvY29hIHsKIHB1YmxpYzoKLSAgICBUaGVtZU1hYygpIHsgfQotICAgIHZpcnR1YWwgflRo
ZW1lTWFjKCkgeyB9Ci0gICAgCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENv
bnRyb2xQYXJ0KSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVt
ZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRl
cm5hbCB0byBUaGVtZU1hYy4KKyAgICBzdGF0aWMgTlNWaWV3ICplbnN1cmVkVmlldyhTY3JvbGxW
aWV3KiwgY29uc3QgQ29udHJvbFN0YXRlcyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBmYWxz
ZSk7CisgICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0
Jik7CisgICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRl
eHQoTlNDZWxsICosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIE5TVmlldyAq
LCBib29sIC8qIGRyYXdCdXR0b25DZWxsICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJv
b2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8sIGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsK
IAotICAgIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQo
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgCi0gICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwg
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJv
bFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJp
ZGU7Citwcml2YXRlOgorICAgIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9s
UGFydCkgY29uc3QgZmluYWw7CiAKLSAgICBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmcoQ29udHJv
bFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZs
b2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwotICAgIExlbmd0aEJveCBjb250cm9sQm9y
ZGVyKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9v
bWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9v
bCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7IH0KKyAgICBMZW5ndGhTaXpl
IGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0
aFNpemUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKyAgICBMZW5ndGhTaXplIG1p
bmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENv
bnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6
b29tRmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBh
Z2VTY2FsZUZhY3Rvcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVj
dChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpv
b21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOworICAgIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJv
eCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CisgICAgTGVuZ3RoQm94IGNvbnRyb2xC
b3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6
b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCB1c2Vy
UHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRyb2xS
ZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3QgZmluYWwgeyByZXR1
cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAgLy8gRklYTUU6IE9uY2UgUmVuZGVy
VGhlbWVNYWMgaXMgY29udmVydGVkIG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhpcyBjYW4gYmUg
aW50ZXJuYWwgdG8gVGhlbWVNYWMuCi0gICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Ny
b2xsVmlldyosIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBib29sIHVzZVVucGFyZW50ZWRWaWV3ID0g
ZmFsc2UpOwotICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOwotICAgIHN0YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KE5TQ2VsbCosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIE5TVmll
dyosIGJvb2wgLyogZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3VzUmluZyAqLywg
Ym9vbCAvKiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVGYWN0b3IgKi8p
OworICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3Kiwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikgZmluYWw7Cisg
ICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJv
bFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOworCisg
ICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBmaW5hbDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFRoZW1lTWFjX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAyZTFiMmNiNjdlMGRhNjIxMTViMGFkODI1
OGQ3MTU3YzE5YTQ3MDcyLi4wZTU5NThiNWJlZGI0NzY3OTg3OTRhYWUyYjk1OGY1YjM3ZjNlYmNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTEzLDcgKzEzLDcgQEAKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
ICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAogICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCkBAIC0yNyw4ICsy
NywxMCBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKIAogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5o
IgorI2ltcG9ydCAiQ29udHJvbFN0YXRlcy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTGVuZ3RoU2l6ZS5oIgogI2ltcG9y
dCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJOU0J1dHRvbkNlbGxT
UEkuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKQEAgLTQ0LDYgKzQ2LDkgQEAgc3RhdGljIEJP
T0wgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlOwogQGludGVyZmFjZSBXZWJDb3JlVGhlbWVX
aW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCitAaW50ZXJmYWNlIFdlYkNvcmVUaGVtZVZpZXcgOiBO
U0NvbnRyb2wKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVUaGVtZVdpbmRvdwogCiAt
IChCT09MKWhhc0tleUFwcGVhcmFuY2UKQEAgLTU4LDkgKzYzLDYgQEAgLSAoQk9PTClpc0tleVdp
bmRvdwogCiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZVRoZW1lVmlldyA6IE5TQ29udHJvbAot
QGVuZAotCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVRoZW1lVmlldwogCiAtIChOU1dpbmRvdyAq
KXdpbmRvdwpAQCAtMTA4LDE4ICsxMTAsNiBAQCAtICh2b2lkKWFkZFN1YnZpZXc6KE5TVmlldyop
c3VidmlldwogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBOU0ZvbnQgKFdlYkNvcmVUaGVtZSkK
LQotLSAoTlNTdHJpbmcqKXdlYkNvcmVGYW1pbHlOYW1lCi17Ci0gICAgaWYgKFtbc2VsZiBmYW1p
bHlOYW1lXSBoYXNQcmVmaXg6QCIuIl0pCi0gICAgICAgIHJldHVybiBbc2VsZiBmb250TmFtZV07
Ci0KLSAgICByZXR1cm4gW3NlbGYgZmFtaWx5TmFtZV07Ci19Ci0KLUBlbmQKLQogLy8gRklYTUU6
IERlZmF1bHQgYnV0dG9ucyByZWFsbHkgc2hvdWxkIGJlIG1vcmUgbGlrZSBwdXNoIGJ1dHRvbnMg
YW5kIG5vdCBsaWtlIGJ1dHRvbnMuCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzMSwxMCAr
MTIxLDEwIEBAIGVudW0gewogICAgIGxlZnRNYXJnaW4KIH07CiAKLVRoZW1lKiBwbGF0Zm9ybVRo
ZW1lKCkKK1RoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGhlbWVNYWM+IHRoZW1lTWFjOwotICAgIHJldHVybiAmdGhlbWVNYWMuZ2V0KCk7Cisg
ICAgcmV0dXJuIHRoZW1lTWFjOwogfQogCiAvLyBIZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgYSBi
dW5jaCBvZiBkaWZmZXJlbnQgY29udHJvbCBwYXJ0cy4KQEAgLTI0MSw4ICsyMzEsOCBAQCBzdGF0
aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1RoZW1lRHJhd1N0YXRlKFRo
ZW1lQnV0dG9uS2luZCBraW5kLAogCiBzdGF0aWMgRmxvYXRSZWN0IGluZmxhdGVSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgY29uc3QgSW50U2l6ZSYgem9vbWVkU2l6ZSwgY29uc3Qg
aW50KiBtYXJnaW5zLCBmbG9hdCB6b29tRmFjdG9yKQogewotICAgIC8vIE9ubHkgZG8gdGhlIGlu
ZmxhdGlvbiBpZiB0aGUgYXZhaWxhYmxlIHdpZHRoL2hlaWdodCBhcmUgdG9vIHNtYWxsLiAgT3Ro
ZXJ3aXNlIHRyeSB0bwotICAgIC8vIGZpdCB0aGUgZ2xvdy9jaGVjayBzcGFjZSBpbnRvIHRoZSBh
dmFpbGFibGUgYm94J3Mgd2lkdGgvaGVpZ2h0LgorICAgIC8vIE9ubHkgZG8gdGhlIGluZmxhdGlv
biBpZiB0aGUgYXZhaWxhYmxlIHdpZHRoL2hlaWdodCBhcmUgdG9vIHNtYWxsLgorICAgIC8vIE90
aGVyd2lzZSB0cnkgdG8gZml0IHRoZSBnbG93L2NoZWNrIHNwYWNlIGludG8gdGhlIGF2YWlsYWJs
ZSBib3gncyB3aWR0aC9oZWlnaHQuCiAgICAgaW50IHdpZHRoRGVsdGEgPSB6b29tZWRSZWN0Lndp
ZHRoKCkgLSAoem9vbWVkU2l6ZS53aWR0aCgpICsgbWFyZ2luc1tsZWZ0TWFyZ2luXSAqIHpvb21G
YWN0b3IgKyBtYXJnaW5zW3JpZ2h0TWFyZ2luXSAqIHpvb21GYWN0b3IpOwogICAgIGludCBoZWln
aHREZWx0YSA9IHpvb21lZFJlY3QuaGVpZ2h0KCkgLSAoem9vbWVkU2l6ZS5oZWlnaHQoKSArIG1h
cmdpbnNbdG9wTWFyZ2luXSAqIHpvb21GYWN0b3IgKyBtYXJnaW5zW2JvdHRvbU1hcmdpbl0gKiB6
b29tRmFjdG9yKTsKICAgICBGbG9hdFJlY3QgcmVzdWx0KHpvb21lZFJlY3QpOwpAQCAtNjg5LDM3
ICs2NzksMzcgQEAgaW50IFRoZW1lTWFjOjpiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250
cm9sUGFydCBwYXJ0KSBjb25zdAogc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9u
PiBUaGVtZU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldElzQWJzb2x1dGVTaXplKHRydWUpOwotCi0gICAgICAgICAgICBOU0ZvbnQqIG5zRm9udCA9
IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9yQ29udHJv
bFNpemU6Y29udHJvbFNpemVGb3JGb250KGZvbnQpXV07Ci0gICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0T25lRmFtaWx5KEF0b21pY1N0cmluZygiLWFwcGxlLXN5c3RlbSIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZhY3Rvcik7Ci0gICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShbbnNGb250IHBvaW50U2l6
ZV0gKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJldHVybiBmb250RGVzY3JpcHRpb247Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6Y29u
dHJvbEZvbnQocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBQdXNoQnV0dG9uUGFy
dDogeworICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOworCisgICAgICAg
IE5TRm9udCogbnNGb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVt
Rm9udFNpemVGb3JDb250cm9sU2l6ZTpjb250cm9sU2l6ZUZvckZvbnQoZm9udCldXTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShBdG9taWNTdHJpbmcoIi1hcHBsZS1zeXN0
ZW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZhY3Rv
cik7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKFtuc0ZvbnQgcG9p
bnRTaXplXSAqIHpvb21GYWN0b3IpOworICAgICAgICByZXR1cm4gZm9udERlc2NyaXB0aW9uOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIAogTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZs
b2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNh
c2UgQ2hlY2tib3hQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGNoZWNrYm94U2l6ZShmb250LCB6
b29tZWRTaXplLCB6b29tRmFjdG9yKTsKLSAgICAgICAgY2FzZSBSYWRpb1BhcnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gcmFkaW9TaXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwotICAg
ICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgotICAgICAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0
IHRvIGF1dG8gc28gdGhhdCBzcGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KLSAgICAg
ICAgICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgeyB6b29tZWRTaXplLndpZHRoLCB7IH0g
fSwgem9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7Ci0gICAgICAgIGNhc2UgSW5uZXJTcGluQnV0
dG9uUGFydDoKLSAgICAgICAgICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNpY09y
QXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwotICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9t
TlNDb250cm9sU2l6ZShzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGZvbnQpLCB6b29tZWRTaXpl
LCB6b29tRmFjdG9yLCBzdGVwcGVyU2l6ZXMoKSk7Ci0gICAgICAgIGRlZmF1bHQ6CisgICAgY2Fz
ZSBDaGVja2JveFBhcnQ6CisgICAgICAgIHJldHVybiBjaGVja2JveFNpemUoZm9udCwgem9vbWVk
U2l6ZSwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBSYWRpb1BhcnQ6CisgICAgICAgIHJldHVybiBy
YWRpb1NpemUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBQdXNoQnV0
dG9uUGFydDoKKyAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBzcGVj
aWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KKyAgICAgICAgcmV0dXJuIHNpemVGcm9tRm9u
dChmb250LCB7IHpvb21lZFNpemUud2lkdGgsIHsgfSB9LCB6b29tRmFjdG9yLCBidXR0b25TaXpl
cygpKTsKKyAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAgICAgIGlmICghem9vbWVk
U2l6ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0lu
dHJpbnNpY09yQXV0bygpKQogICAgICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7CisgICAgICAg
IHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRyb2xTaXplRm9yRm9udChm
b250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVzKCkpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogICAgIH0KIH0KIApAQCAtNzQ0LDI4ICs3
MzQsMjggQEAgTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250cm9sQm9yZGVyKENvbnRyb2xQYXJ0IHBh
cnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb24KIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsK
ICAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIERlZmF1bHRCdXR0
b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVu
Z3RoQm94KDAsIHpvb21lZEJveC5yaWdodCgpLnZhbHVlKCksIDAsIHpvb21lZEJveC5sZWZ0KCku
dmFsdWUoKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gVGhlbWU6OmNv
bnRyb2xCb3JkZXIocGFydCwgZm9udCwgem9vbWVkQm94LCB6b29tRmFjdG9yKTsKKyAgICBjYXNl
IERlZmF1bHRCdXR0b25QYXJ0OgorICAgIGNhc2UgQnV0dG9uUGFydDoKKyAgICAgICAgcmV0dXJu
IExlbmd0aEJveCgwLCB6b29tZWRCb3gucmlnaHQoKS52YWx1ZSgpLCAwLCB6b29tZWRCb3gubGVm
dCgpLnZhbHVlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJv
bEJvcmRlcihwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3IpOwogICAgIH0KIH0KIAog
TGVuZ3RoQm94IFRoZW1lTWFjOjpjb250cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpv
b21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVz
aEJ1dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIC8vIEp1c3QgdXNlIDhweC4gIEFwcEtpdCB3YW50
cyB0byB1c2UgMTFweCBmb3IgbWluaSBidXR0b25zLCBidXQgdGhhdCBwYWRkaW5nIGlzIGp1c3Qg
dG9vIGxhcmdlCi0gICAgICAgICAgICAvLyBmb3IgcmVhbC13b3JsZCBXZWIgc2l0ZXMgKGNyZWF0
aW5nIGEgaHVnZSBuZWNlc3NhcnkgbWluaW11bSB3aWR0aCBmb3IgYnV0dG9ucyB3aG9zZSBzcGFj
ZSBpcwotICAgICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiBjb25zdHJhaW5lZCwgc2luY2Ugd2Ug
c2VsZWN0IG1pbmkgb25seSBmb3Igc21hbGwgY3JhbXBlZCBlbnZpcm9ubWVudHMuCi0gICAgICAg
ICAgICAvLyBUaGlzIGFsc28gZ3VhcmFudGVlcyB0aGUgSFRNTCA8YnV0dG9uPiB3aWxsIG1hdGNo
IG91ciByZW5kZXJpbmcgYnkgZGVmYXVsdCwgc2luY2Ugd2UncmUgdXNpbmcgYSBjb25zaXN0ZW50
Ci0gICAgICAgICAgICAvLyBwYWRkaW5nLgotICAgICAgICAgICAgY29uc3QgaW50IHBhZGRpbmcg
PSA4ICogem9vbUZhY3RvcjsKLSAgICAgICAgICAgIHJldHVybiBMZW5ndGhCb3goMiwgcGFkZGlu
ZywgMywgcGFkZGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHJldHVybiBUaGVtZTo6Y29udHJvbFBhZGRpbmcocGFydCwgZm9udCwgem9vbWVkQm94LCB6b29t
RmFjdG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OiB7CisgICAgICAgIC8vIEp1c3QgdXNl
IDhweC4gQXBwS2l0IHdhbnRzIHRvIHVzZSAxMXB4IGZvciBtaW5pIGJ1dHRvbnMsIGJ1dCB0aGF0
IHBhZGRpbmcgaXMganVzdCB0b28gbGFyZ2UKKyAgICAgICAgLy8gZm9yIHJlYWwtd29ybGQgV2Vi
IHNpdGVzIChjcmVhdGluZyBhIGh1Z2UgbmVjZXNzYXJ5IG1pbmltdW0gd2lkdGggZm9yIGJ1dHRv
bnMgd2hvc2Ugc3BhY2UgaXMKKyAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiBjb25zdHJhaW5lZCwg
c2luY2Ugd2Ugc2VsZWN0IG1pbmkgb25seSBmb3Igc21hbGwgY3JhbXBlZCBlbnZpcm9ubWVudHMu
CisgICAgICAgIC8vIFRoaXMgYWxzbyBndWFyYW50ZWVzIHRoZSBIVE1MIDxidXR0b24+IHdpbGwg
bWF0Y2ggb3VyIHJlbmRlcmluZyBieSBkZWZhdWx0LCBzaW5jZSB3ZSdyZSB1c2luZyBhIGNvbnNp
c3RlbnQKKyAgICAgICAgLy8gcGFkZGluZy4KKyAgICAgICAgY29uc3QgaW50IHBhZGRpbmcgPSA4
ICogem9vbUZhY3RvcjsKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgyLCBwYWRkaW5nLCAzLCBw
YWRkaW5nKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250
cm9sUGFkZGluZyhwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3IpOwogICAgIH0KIH0K
IApAQCAtNzc2LDcgKzc2Niw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRS
ZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmIHN0CiAgICAgc3dpdGNo
IChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7CiAgICAgICAgICAgICAvLyBX
ZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZvciBwYWRkaW5nIGluY2x1
ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSBjaGVja2JveAotICAgICAgICAgICAg
Ly8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiAgV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBwYXJ0IG9m
IHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0LgorICAgICAgICAgICAgLy8gc2hh
ZG93IiBhbmQgdGhlIGNoZWNrLiBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJv
dW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCiAgICAgICAgICAgICBOU0NlbGwgKmNlbGwg
PSBzaGFyZWRDaGVja2JveENlbGwoc3RhdGVzLCB6b29tUmVjdFNpemUsIHpvb21GYWN0b3IpOwog
ICAgICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXpl
XTsKICAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IGNoZWNrYm94U2l6ZXMoKVtjb250
cm9sU2l6ZV07CkBAIC03ODcsNyArNzc3LDcgQEAgdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRy
b2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgc3QKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFJhZGlvUGFydDogewogICAgICAgICAgICAgLy8gV2UgaW5m
bGF0ZSB0aGUgcmVjdCBhcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgcGFkZGluZyBpbmNsdWRlZCBp
biB0aGUgY2VsbCB0byBhY2NvbW1vZGF0ZSB0aGUgcmFkaW8gYnV0dG9uCi0gICAgICAgICAgICAv
LyBzaGFkb3ciLiAgV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2Yg
dGhlIGNvbnRyb2wgaW4gV2ViS2l0LgorICAgICAgICAgICAgLy8gc2hhZG93Ii4gV2UgZG9uJ3Qg
Y29uc2lkZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0
LgogICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hhcmVkUmFkaW9DZWxsKHN0YXRlcywgem9v
bVJlY3RTaXplLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIE5TQ29udHJvbFNpemUgY29udHJv
bFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAgICAgICAgICBJbnRTaXplIHpvb21lZFNp
emUgPSByYWRpb1NpemVzKClbY29udHJvbFNpemVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWMuaAppbmRleCAyNzJlYTEzNjYxNTZmY2MxOWQ2NDhjZDYxNjA3NTFlMTJhMmIy
OGVhLi43MmU3OGQ3OGU2NTg0M2Q0OTdkZjlmYmY3ZjQzYzg4NDdjZGM1OGQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1
ZGlvVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oCmluZGV4IDVkODZmZjI1NDdjYTE1MzZiYzM1YzRlN2RhOGIzMmRh
OWU0MGE1YzQuLjY2ZjgxMTdhYjc2ZjhiYjM3ZWEzNWI5ZDFjNDk0MThkMTgxMDE3MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCkBAIC0zMiw3ICszMiw2IEBACiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNp
bmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgogI2luY2x1ZGUgIk9yaWVudGF0aW9u
Tm90aWZpZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCmluZGV4IDEyMmJiZGYzYzRkZmIxZGYyY2JhMDg0MjQ3
ZjhiMTkyYmNjMWI0YjguLjBjNGI1Y2JjNjIwMTdkOWFiN2RhOWY3MmY1YTY3MjZlYTkyMWVkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
RG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4IGZmNTJiN2QzOTE2M2Q1ZDlmODQxNDY0MzBi
YzNlODU2NjJmZDdkNjUuLmUwMGRlOTY2NWEwYTAzZGZlODFjYWNlMDIyNmU1NDk4OTBmNTYxYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2Fk
QnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9E
b3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHVpbnQzMl90IG1h
Z2ljTnVtYmVyKCkKIAogY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBleHRlbnNpb24sIChBU0NJ
SUxpdGVyYWwoIi5kb3dubG9hZCIpKSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gZXh0ZW5zaW9uIHsgQVNDSUlMaXRlcmFsIHsgIi5kb3dubG9hZCIgfSB9OwogICAg
IHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggZjhlNTZiNmVlNDRlOTgyNDY5
MzA4MTk0NjY0NTIxZjFlODYxMDgyZS4uMmRkYzM3MGI5YzIyYmNlMGI1M2ZiNjRiYzAzMThkMGI1
ZmRiNjgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI5OSwxMyArMjk5LDEyIEBAIHZvaWQgbWFya3VwVG9D
RkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYgc3JjVVJMLCBWZWN0b3I8
Y2hhcj4mIHJlCiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRvd3NTdHlsZU5ld2xpbmVz
KFN0cmluZyYgc3RyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHdpbmRvd3NOZXdsaW5lLCAoQVNDSUlMaXRlcmFsKCJcclxuIikpKTsKICAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBzdHIu
bGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKHN0cltpbmRleF0gIT0gJ1xuJyB8fCAo
aW5kZXggPiAwICYmIHN0cltpbmRleCAtIDFdID09ICdccicpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdHJbaW5kZXhdKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCh3aW5kb3dzTmV3bGluZSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
XHJcbiIpOwogICAgIH0KICAgICBzdHIgPSByZXN1bHQudG9TdHJpbmcoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAwNzcyMzc2ZWRi
NmM3YzQ3OGU5YmQ4ODMwODNmYjUxMTM0NmFlZGJlLi5lY2Y5ZTkwOGRkNzA0OWUxMjBlMWVjMGEx
ZjY5NjJkNTg3NjIwNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDEx
NjQ0NDczNjAwOwpAQCAtMjU3LDIxICsyNTYsMjEgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQogCiBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5hbWUoKQogewotICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5hbWUsIChBU0NJSUxpdGVyYWwo
IldlYktpdCIpKSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFt
ZSA9IFtdIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgeyBBU0NJSUxpdGVyYWwgeyAiV2ViS2l0IiB9
IH07CiAKICNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7Ci0KLSAgICBp
ZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLQotICAgICAg
ICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCkpCi0gICAg
ICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdldFZhbHVl
Rm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5KSkKKyAg
ICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpKSB7
CisgICAgICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBDRkJ1bmRsZUdl
dFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVjdXRhYmxlS2V5
KSkgewogICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5kbGVFeGVjdXRhYmxlKSA9
PSBDRlN0cmluZ0dldFR5cGVJRCgpKQogICAgICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRl
cnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7Ci0gICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CiAjZW5kaWYKIAorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9
KCk7CisKICAgICByZXR1cm4gbmFtZTsKIH0KIApAQCAtMjgzLDggKzI4Miw3IEBAIHN0YXRpYyBT
dHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKICAgICBidWZmZXIu
cmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CiAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0
cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIAotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGNvbXBhbnlOYW1lRGlyZWN0b3J5LCAoQVNDSUlMaXRlcmFsKCJB
cHBsZSBDb21wdXRlclxcIikpKTsKLSAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGlyZWN0b3J5LCBjb21wYW55TmFtZURpcmVjdG9yeSArIGJ1bmRsZU5hbWUoKSk7Cisg
ICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxl
IENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKICAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmll
cyhkaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwCmluZGV4IGQ1YWQ5NzczZDg0MTI5ZjJlMDM0YjVhMzZm
ZmMxY2Y2MjExYWVkYWIuLjI3MTk0OWFhYjZlY2UyZjEyMmY4YzRhNmM0MzBlZDhhYWFkYTY1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNwcApAQCAtMjcsMTYgKzI3
LDE4IEBACiAjaW5jbHVkZSAiVGhlbWVXUEUuaCIKIAogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5j
bHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVGhl
bWUqIHBsYXRmb3JtVGhlbWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQogewogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZVdQRT4gdGhlbWU7Ci0gICAgcmV0dXJuICZ0aGVtZS5n
ZXQoKTsKKyAgICByZXR1cm4gdGhlbWU7CiB9CiAKIExlbmd0aFNpemUgVGhlbWVXUEU6OmNvbnRy
b2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwg
Y29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmgKaW5kZXggNzM5ZjVjMWUxY2FhYmY0YzQw
NDM0MzVmNDk3Zjg5ZTY5MTM0YjAzZi4uYjUyNGM0ODk3YzVhZmQ4YjAwOTE3ODg5MDQyZDQzM2Fm
MzNiMzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BF
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmgKQEAgLTI5LDE2
ICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRoZW1lV1BFIDogcHVi
bGljIFRoZW1lIHsKLXB1YmxpYzoKLSAgICBUaGVtZVdQRSgpIHsgfQotICAgIHZpcnR1YWwgflRo
ZW1lV1BFKCkgeyB9Ci0KLSAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCkgY29uc3Qgb3ZlcnJp
ZGU7CitjbGFzcyBUaGVtZVdQRSBmaW5hbCA6IHB1YmxpYyBUaGVtZSB7Citwcml2YXRlOgorICAg
IExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcGFpbnQo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmLCBmbG9hdCwgU2Nyb2xsVmlldyosIGZsb2F0LCBmbG9hdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3JvbGxWaWV3KiwgZmxvYXQsIGZsb2F0KSBmaW5h
bDsKIAotcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KTsKICAgICB2b2lkIHBhaW50
UmFkaW8oQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KTsKICAgICB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmNwcAppbmRleCAyODEyNjRkZDhiOGM4MWMzYjc4MWVlNDJmYTAwOWYzMTJh
OWVkNjUxLi5lYzFmNTUyZjk1MGMzMjY2MzhlZjYyNmU1Y2FiMmE0Y2MxYjJiZTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEsNyArMSw1IEBACiAvKgot
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRoZW1lIGltcGxlbWVudGF0aW9uIGZvciBmb3Jt
IGNvbnRyb2xzIGluIFdlYkNvcmUuCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTAsIDIw
MTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpA
QCAtNTksNyArNTcsOSBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNlbmRpZgog
Ci0vLyBUaGUgbWV0aG9kcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBieSBhbGwgdGhlbWVzIG9u
IGV2ZXJ5IHBsYXRmb3JtLgorI2lmIFVTRShORVdfVEhFTUUpCisjaW5jbHVkZSAiVGhlbWUuaCIK
KyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcyLDkgKzcyLDYgQEAgc3RhdGlj
IENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigpCiB9CiAKIFJlbmRlclRoZW1lOjpSZW5kZXJU
aGVtZSgpCi0jaWYgVVNFKE5FV19USEVNRSkKLSAgICA6IG1fdGhlbWUocGxhdGZvcm1UaGVtZSgp
KQotI2VuZGlmCiB7CiB9CiAKQEAgLTEyMiw3ICsxMTksNyBAQCB2b2lkIFJlbmRlclRoZW1lOjph
ZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSYgc3R5
bGUsCiAgICAgY2FzZSBCdXR0b25QYXJ0OiB7CiAgICAgICAgIC8vIEJvcmRlcgogICAgICAgICBM
ZW5ndGhCb3ggYm9yZGVyQm94KHN0eWxlLmJvcmRlclRvcFdpZHRoKCksIHN0eWxlLmJvcmRlclJp
Z2h0V2lkdGgoKSwgc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSwgc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCkpOwotICAgICAgICBib3JkZXJCb3ggPSBtX3RoZW1lLT5jb250cm9sQm9yZGVyKHBhcnQs
IHN0eWxlLmZvbnRDYXNjYWRlKCksIGJvcmRlckJveCwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsK
KyAgICAgICAgYm9yZGVyQm94ID0gVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xCb3JkZXIocGFy
dCwgc3R5bGUuZm9udENhc2NhZGUoKSwgYm9yZGVyQm94LCBzdHlsZS5lZmZlY3RpdmVab29tKCkp
OwogICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkgIT0gc3RhdGljX2Nhc3Q8aW50
PihzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSkgewogICAgICAgICAgICAgaWYgKGJvcmRlckJveC50
b3AoKS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIHN0eWxlLnNldEJvcmRlclRvcFdpZHRoKGJv
cmRlckJveC50b3AoKS52YWx1ZSgpKTsKQEAgLTE1MSwzMiArMTQ4LDMyIEBAIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlJiBzdHlsZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFBhZGRpbmcKLSAgICAgICAgTGVu
Z3RoQm94IHBhZGRpbmdCb3ggPSBtX3RoZW1lLT5jb250cm9sUGFkZGluZyhwYXJ0LCBzdHlsZS5m
b250Q2FzY2FkZSgpLCBzdHlsZS5wYWRkaW5nQm94KCksIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7
CisgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRy
b2xQYWRkaW5nKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnBhZGRpbmdCb3goKSwg
c3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgaWYgKHBhZGRpbmdCb3ggIT0gc3R5bGUu
cGFkZGluZ0JveCgpKQogICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChXVEZNb3ZlKHBh
ZGRpbmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCi0gICAgICAgIGlmIChtX3RoZW1l
LT5jb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQorICAgICAgICBpZiAoVGhlbWU6
OnNpbmdsZXRvbigpLmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UocGFydCkpCiAgICAgICAg
ICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAv
LyBXaWR0aCAvIEhlaWdodAogICAgICAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBoZXJlIGFy
ZSBhZmZlY3RlZCBieSB0aGUgem9vbS4KICAgICAgICAgLy8gRklYTUU6IENoZWNrIGlzIGZsYXdl
ZCwgc2luY2UgaXQgZG9lc24ndCB0YWtlIG1pbi13aWR0aC9tYXgtd2lkdGggaW50byBhY2NvdW50
LgotICAgICAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplID0gbV90aGVtZS0+Y29udHJvbFNpemUo
cGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWlnaHQo
KSB9LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBMZW5ndGhTaXplIGNvbnRyb2xT
aXplID0gVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xTaXplKHBhcnQsIHN0eWxlLmZvbnRDYXNj
YWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUuaGVpZ2h0KCkgfSwgc3R5bGUuZWZmZWN0aXZl
Wm9vbSgpKTsKICAgICAgICAgaWYgKGNvbnRyb2xTaXplLndpZHRoICE9IHN0eWxlLndpZHRoKCkp
CiAgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChXVEZNb3ZlKGNvbnRyb2xTaXplLndpZHRoKSk7
CiAgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWlnaHQgIT0gc3R5bGUuaGVpZ2h0KCkpCiAgICAg
ICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92ZShjb250cm9sU2l6ZS5oZWlnaHQpKTsKIAog
ICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVpZ2h0Ci0gICAgICAgIExlbmd0aFNpemUgbWlu
Q29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVtQ29udHJvbFNpemUocGFydCwgc3R5bGUuZm9u
dENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgTGVuZ3RoU2l6ZSBt
aW5Db250cm9sU2l6ZSA9IFRoZW1lOjpzaW5nbGV0b24oKS5taW5pbXVtQ29udHJvbFNpemUocGFy
dCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAg
aWYgKG1pbkNvbnRyb2xTaXplLndpZHRoICE9IHN0eWxlLm1pbldpZHRoKCkpCiAgICAgICAgICAg
ICBzdHlsZS5zZXRNaW5XaWR0aChXVEZNb3ZlKG1pbkNvbnRyb2xTaXplLndpZHRoKSk7CiAgICAg
ICAgIGlmIChtaW5Db250cm9sU2l6ZS5oZWlnaHQgIT0gc3R5bGUubWluSGVpZ2h0KCkpCiAgICAg
ICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQoV1RGTW92ZShtaW5Db250cm9sU2l6ZS5oZWlnaHQp
KTsKIAogICAgICAgICAvLyBGb250Ci0gICAgICAgIGlmIChhdXRvIHRoZW1lRm9udCA9IG1fdGhl
bWUtPmNvbnRyb2xGb250KHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLmVmZmVjdGl2
ZVpvb20oKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0gVGhlbWU6OnNpbmdsZXRv
bigpLmNvbnRyb2xGb250KHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLmVmZmVjdGl2
ZVpvb20oKSkpIHsKICAgICAgICAgICAgIC8vIElmIG92ZXJyaWRpbmcgdGhlIHNwZWNpZmllZCBm
b250IHdpdGggdGhlIHRoZW1lIGZvbnQsIGFsc28gb3ZlcnJpZGUgdGhlIGxpbmUgaGVpZ2h0IHdp
dGggdGhlIHN0YW5kYXJkIGxpbmUgaGVpZ2h0LgogICAgICAgICAgICAgc3R5bGUuc2V0TGluZUhl
aWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICBpZiAo
c3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKHRoZW1lRm9udC52YWx1ZSgpKSkKQEAgLTMwNiw3ICsz
MDMsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29u
dHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIGNhc2UgQnV0dG9uUGFydDoKICAg
ICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CiAgICAgICAgIHVwZGF0ZUNvbnRyb2xTdGF0ZXNG
b3JSZW5kZXJlcihib3gsIGNvbnRyb2xTdGF0ZXMpOwotICAgICAgICBtX3RoZW1lLT5wYWludChw
YXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBw
ZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmll
dygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgVGhlbWU6
OnNpbmdsZXRvbigpLnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250ZXh0
KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwg
JmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0
b3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CkBAIC02ODYsNyArNjgzLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIGludCBSZW5kZXJUaGVtZTo6
YmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKIHsKICNpZiBVU0Uo
TkVXX1RIRU1FKQotICAgIHJldHVybiBib3guaGVpZ2h0KCkgKyBib3gubWFyZ2luVG9wKCkgKyBt
X3RoZW1lLT5iYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChib3guc3R5bGUoKS5hcHBlYXJhbmNl
KCkpICogYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOworICAgIHJldHVybiBib3guaGVpZ2h0
KCkgKyBib3gubWFyZ2luVG9wKCkgKyBUaGVtZTo6c2luZ2xldG9uKCkuYmFzZWxpbmVQb3NpdGlv
bkFkanVzdG1lbnQoYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAqIGJveC5zdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKTsKICNlbHNlCiAgICAgcmV0dXJuIGJveC5oZWlnaHQoKSArIGJveC5tYXJnaW5U
b3AoKTsKICNlbmRpZgpAQCAtNzMwLDcgKzcyNyw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVz
dFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEZsb2F0UmVjdCYgcmVj
CiB7CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBDb250cm9sU3RhdGVzIHN0YXRlcyhleHRyYWN0
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHJlbmRlcmVyKSk7Ci0gICAgbV90aGVtZS0+aW5mbGF0
ZUNvbnRyb2xQYWludFJlY3QocmVuZGVyZXIuc3R5bGUoKS5hcHBlYXJhbmNlKCksIHN0YXRlcywg
cmVjdCwgcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOworICAgIFRoZW1lOjpzaW5n
bGV0b24oKS5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChyZW5kZXJlci5zdHlsZSgpLmFwcGVhcmFu
Y2UoKSwgc3RhdGVzLCByZWN0LCByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CiAgICAgVU5VU0VEX1BBUkFNKHJlY3Qp
OwpAQCAtOTQ1LDYgKzk0Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdE1lbnVMaXN0U3R5
bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgY29uc3QgRWxlbWVuCiB9CiAKICNpZiBF
TkFCTEUoTUVURVJfRUxFTUVOVCkKKwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0TWV0ZXJTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBFbGVtZW50KikgY29u
c3QKIHsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBAIC05NjQsNyArOTYyLDgg
QEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWMKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRp
ZgorCisjZW5kaWYgLy8gTUVURVJfRUxFTUVOVAogCiB2b2lkIFJlbmRlclRoZW1lOjphZGp1c3RD
YXBzTG9ja0luZGljYXRvclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIGNvbnN0
IEVsZW1lbnQqKSBjb25zdAogewpAQCAtOTc2LDYgKzk3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6
OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJ
bmZvJiwKIH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIHZvaWQgUmVuZGVy
VGhlbWU6OmFkanVzdEF0dGFjaG1lbnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBjb25zdCBFbGVtZW50KikgY29uc3QKIHsKIH0KQEAgLTk4NCw5ICs5ODQsMTEgQEAgYm9vbCBS
ZW5kZXJUaGVtZTo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKIExheW91dFVuaXQgUmVuZGVyVGhlbWU6OnNs
aWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkBAIC0x
MDY5LDYgKzEwNzEsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHRpY2tSZWN0KTsKICAgICB9CiB9CisKICNlbmRpZgogCiBT
ZWNvbmRzIFJlbmRlclRoZW1lOjphbmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFy
KFJlbmRlclByb2dyZXNzJikgY29uc3QKQEAgLTEyODUsMTAgKzEyODgsMTIgQEAgQ29sb3IgUmVu
ZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25z
dAogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogQ29sb3IgUmVuZGVyVGhlbWU6OnRh
cEhpZ2hsaWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gc2luZ2xldG9uKCkucGxhdGZvcm1UYXBI
aWdobGlnaHRDb2xvcigpOwogfQorCiAjZW5kaWYKIAogLy8gVmFsdWUgY2hvc2VuIGJ5IG9ic2Vy
dmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgpAQCAtMTMxNSw5ICsxMzIwLDkgQEAgQ29sb3Ig
UmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNv
bnN0IENvbG9yJiBiYWNrZ3IKICAgICByZXR1cm4gZGlzYWJsZWRDb2xvcjsKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3ImIGMpCit2b2lk
IFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiB7Ci0gICAgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CisgICAgY3VzdG9tRm9jdXNSaW5n
Q29sb3IoKSA9IGNvbG9yOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZTo6Zm9jdXNSaW5nQ29sb3Io
KQpAQCAtMTM0OSwxMyArMTM1NCwxNCBAQCBTdHJpbmcgUmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFt
ZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udENhcwogfQogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFw
SGlnaGxpZ2h0Q29sb3IoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29sb3IgaXMgZXhwZWN0ZWQg
dG8gYmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXksCiAgICAgLy8gbWFraW5n
IGl0IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUgaW5kaWNhdGVzLgotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBDb2xvcj4gZGVmYXVsdFRhcEhpZ2hsaWdodENv
bG9yID0gQ29sb3IoMCwgMCwgMCwgMTAyKTsKLSAgICByZXR1cm4gZGVmYXVsdFRhcEhpZ2hsaWdo
dENvbG9yOworICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAxMDIpOwogfQorCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAppbmRleCBjNzI4MDFkZGYwMzVhZjNmNmU2MmUwMzk2NzVjYzdmYmFkZDY4NTFjLi5hMjhiYWFj
YTdkNTA3MmRiNmI2NDY1MDY0ZWZiNTM3NGU5ZDNlMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaApAQCAtMjQsMTIgKzI0LDcgQEAKICNpbmNsdWRlICJQYWludEluZm8u
aCIKICNpbmNsdWRlICJQb3B1cE1lbnVTdHlsZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
Ci0KLSNpZiBVU0UoTkVXX1RIRU1FKQotI2luY2x1ZGUgIlRoZW1lLmgiCi0jZWxzZQogI2luY2x1
ZGUgIlRoZW1lVHlwZXMuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQw
NCwxMCArMzk5LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVMaXN0
Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwogICAgIG11dGFibGUgQ29sb3IgbV9hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogICAgIG11dGFibGUgQ29sb3IgbV9pbmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0KLSNpZiBVU0UoTkVXX1RIRU1F
KQotICAgIFRoZW1lKiBtX3RoZW1lOyAvLyBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUuCi0j
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCmluZGV4IGQ5Mzg5M2U5ODQ5ZWVhYzY1ZDlmZTkzYTIw
M2UyZmQ4NzY4NDQzNDMuLjY1ODU4NzdmOWQzYjQ3ZWEyMjdhYzdkYWZjM2Y1MzM4ZTkxMTk4MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIuaApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgpAQCAt
MjQsNyArMjQsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmVJbmxpbmVIZWFkZXJzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCA1NmNhNWVhMzZjMmYwYjY1M2NhNmMy
OTIyM2FlYTBkYWEwODQzNWQ5Li40ODdlODIyNDNjNDhjZmE3ZWQ4ZGVkNTkwYmMxMTg0Mjk2MWM1
Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KQEAgLTY0LDI3ICs2NCwxNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVBvc2l0aW9uLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVVbml0cy5oPgotCiAjaW1wb3J0IDxXZWJDb3JlL1dBS0FwcEtpdFN0dWJzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi11c2luZyBXZWJDb3JlOjpGbG9hdFBvaW50
OwotdXNpbmcgV2ViQ29yZTo6Rm9udENhc2NhZGU7Ci11c2luZyBXZWJDb3JlOjpIVE1MQXJlYUVs
ZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OwotdXNpbmcgV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpJbmxpbmVCb3g7Ci11c2luZyBXZWJD
b3JlOjpJbnRSZWN0OwogdXNpbmcgV2ViQ29yZTo6Tm9kZTsKIHVzaW5nIFdlYkNvcmU6OlBvc2l0
aW9uOwogdXNpbmcgV2ViQ29yZTo6UmFuZ2U7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJCbG9jazsK
IHVzaW5nIFdlYkNvcmU6OlJlbmRlckJveDsKIHVzaW5nIFdlYkNvcmU6OlJlbmRlck9iamVjdDsK
LXVzaW5nIFdlYkNvcmU6OlJlbmRlclN0eWxlOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVyVGV4dDsK
LXVzaW5nIFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g7CiB1c2luZyBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb247CiAKIEBpbXBsZW1lbnRhdGlvbiBET01SYW5nZSAoVUlLaXRFeHRlbnNpb25zKQpAQCAt
MTYxLDcgKzE1MSw3IEBAIC0gKE5TQXJyYXkgKilib3VuZGluZ0JveGVzCiAgICAgfQogCiAgICAg
aWYgKCFbcmVjdHMgY291bnRdKQotICAgICAgICByZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OmJvdW5kc11dOworICAgICAgICByZWN0cyA9IEBb
W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpib3VuZHNdXTsKIAogICAgIHJldHVybiByZWN0czsKIH0K
QEAgLTE4Miw3ICsxNzIsNyBAQCAtIChOU0FycmF5ICopYWJzb2x1dGVRdWFkcwogCiAgICAgaWYg
KCFbcXVhZHMgY291bnRdKSB7CiAgICAgICAgIFdLUXVhZE9iamVjdCogcXVhZE9iamVjdCA9IFtb
V0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkXV07Ci0g
ICAgICAgIHF1YWRzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnF1YWRPYmplY3RdOworICAg
ICAgICBxdWFkcyA9IEBbcXVhZE9iamVjdF07CiAgICAgICAgIFtxdWFkT2JqZWN0IHJlbGVhc2Vd
OwogICAgIH0KIApAQCAtMjUwLDEyICsyNDAsMTEgQEAgLSAoQ0dGbG9hdCl0ZXh0SGVpZ2h0CiAK
IC0gKERPTU5vZGUgKilmaW5kRXhwbG9kZWRUZXh0Tm9kZUF0UG9pbnQ6KENHUG9pbnQpcG9pbnQK
IHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsK
KyAgICBhdXRvKiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFp
czxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IFJlbmRlckJsb2NrRmxvdyogYmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRl
cmVyKTsKLSAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gYmxvY2stPmZpbmRDbG9zZXN0VGV4
dEF0QWJzb2x1dGVQb2ludChwb2ludCk7CisgICAgYXV0byogcmVuZGVyVGV4dCA9IGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyKS5maW5kQ2xvc2VzdFRleHRBdEFic29sdXRlUG9p
bnQocG9pbnQpOwogICAgIGlmIChyZW5kZXJUZXh0ICYmIHJlbmRlclRleHQtPnRleHROb2RlKCkp
CiAgICAgICAgIHJldHVybiBraXQocmVuZGVyVGV4dC0+dGV4dE5vZGUoKSk7CiAKQEAgLTI2Niwx
MCArMjU1LDggQEAgQGVuZAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tCiAKLUBpbXBsZW1lbnRhdGlv
biBET01FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKLQorQGltcGxlbWVu
dGF0aW9uIERPTUVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCiAtIChpbnQp
c3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1cm4gMDsgfQotCiBAZW5kCiAK
IEBpbXBsZW1lbnRhdGlvbiBET01IVE1MRWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5z
aW9ucykgCkBAIC0zMDgsNyArMjk1LDYgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxCb2R5RWxl
bWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKIC0gKGludClzdHJ1Y3R1cmFsQ29t
cGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiAwOyB9CiBAZW5kCiAKLQogLy8gTWF4aW1hbGx5
IGNvbXBsZXggZWxlbWVudHMKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxGb3JtRWxlbWVudCAo
RE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5zaW9ucykKQEAgLTM0MywyMyArMzI5LDIwIEBAIEBpbXBs
ZW1lbnRhdGlvbiBET01IVE1MU2VsZWN0RWxlbWVudCAoRE9NVUlLaXRDb21wbGV4aXR5RXh0ZW5z
aW9ucykKIC0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1dGlvbiB7IHJldHVybiBJ
TlRfTUFYOyB9CiBAZW5kCiAKLQogLy8tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAKIEBpbXBs
ZW1lbnRhdGlvbiBET01IVE1MQXJlYUVsZW1lbnQgKERPTVVJS2l0RXh0ZW5zaW9ucykKIAotLSAo
Q0dSZWN0KWJvdW5kaW5nQm94V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoQ0dSZWN0
KWJvdW5kaW5nQm94V2l0aE93bmVyOihET01Ob2RlICopb3duZXIKIHsKICAgICAvLyBpZ25vcmVz
IHRyYW5zZm9ybXMKLSAgICByZXR1cm4gYW5Pd25lciA/IHNuYXBwZWRJbnRSZWN0KGNvcmUoc2Vs
ZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVjdFplcm87
CisgICAgcmV0dXJuIG93bmVyID8gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJl
Y3QoY29yZShvd25lciktPnJlbmRlcmVyKCkpKSA6IENHUmVjdFplcm87CiB9CiAKLS0gKFdLUXVh
ZClhYnNvbHV0ZVF1YWRXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCistIChXS1F1YWQpYWJz
b2x1dGVRdWFkV2l0aE93bmVyOihET01Ob2RlICopb3duZXIKIHsKLSAgICBpZiAoYW5Pd25lcikg
ewotICAgICAgICAvLyBGSVhNRTogRUNMQUlSCi0gICAgICAgIC8vV2ViQ29yZTo6RmxvYXRRdWFk
IHRoZVF1YWQgPSBjb3JlKHNlbGYpLT5nZXRBYnNvbHV0ZVF1YWQoY29yZShhbk93bmVyKS0+cmVu
ZGVyZXIoKSk7Ci0gICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0
KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpKTsKKyAg
ICBpZiAob3duZXIpIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gc25hcHBlZElu
dFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShvd25lciktPnJlbmRlcmVyKCkpKTsK
ICAgICAgICAgV0tRdWFkIHF1YWQ7CiAgICAgICAgIHF1YWQucDEgPSBDR1BvaW50TWFrZShyZWN0
LngoKSwgcmVjdC55KCkpOwogICAgICAgICBxdWFkLnAyID0gQ0dQb2ludE1ha2UocmVjdC5tYXhY
KCksIHJlY3QueSgpKTsKQEAgLTM3MiwxNSArMzU1LDE1IEBAIC0gKFdLUXVhZClhYnNvbHV0ZVF1
YWRXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCiAgICAgcmV0dXJuIHplcm9RdWFkOwogfQog
Ci0tIChOU0FycmF5ICopYm91bmRpbmdCb3hlc1dpdGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIK
Ky0gKE5TQXJyYXkgKilib3VuZGluZ0JveGVzV2l0aE93bmVyOihET01Ob2RlICopb3duZXIKIHsK
LSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6W3NlbGYgYm91bmRpbmdCb3hXaXRoT3duZXI6YW5Pd25lcl1dXTsKKyAgICByZXR1cm4gQFtb
TlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGJvdW5kaW5nQm94V2l0aE93bmVyOm93bmVyXV1d
OwogfQogCi0tIChOU0FycmF5ICopYWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAqKWFu
T3duZXIKKy0gKE5TQXJyYXkgKilhYnNvbHV0ZVF1YWRzV2l0aE93bmVyOihET01Ob2RlICopb3du
ZXIKIHsKLSAgICBXS1F1YWRPYmplY3QqIHF1YWRPYmplY3QgPSBbW1dLUXVhZE9iamVjdCBhbGxv
Y10gaW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZFdpdGhPd25lcjphbk93bmVyXV07Ci0g
ICAgTlNBcnJheSogICAgcXVhZEFycmF5ID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnF1YWRP
YmplY3RdOworICAgIFdLUXVhZE9iamVjdCAqcXVhZE9iamVjdCA9IFtbV0tRdWFkT2JqZWN0IGFs
bG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1dGVRdWFkV2l0aE93bmVyOm93bmVyXV07Cisg
ICAgTlNBcnJheSAqcXVhZEFycmF5ID0gQFtxdWFkT2JqZWN0XTsKICAgICBbcXVhZE9iamVjdCBy
ZWxlYXNlXTsKICAgICByZXR1cm4gcXVhZEFycmF5OwogfQpAQCAtNDA1LDEzICszODgsMTMgQEAg
QGltcGxlbWVudGF0aW9uIERPTUhUTUxJbWFnZUVsZW1lbnQgKFdlYkRPTUhUTUxJbWFnZUVsZW1l
bnRPcGVyYXRpb25zUHJpdmF0ZSkKIAogLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihC
T09MKXJhd0ltYWdlRGF0YQogewotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFn
ZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CisgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBj
b3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgV2ViQ29yZTo6SW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CisgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICBpZiAo
IWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
ZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1h
Z2UtPmRhdGEoKTsKKyAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVh
c2UoKTsKQEAgLTQxOSw3ICs0MDIsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246
KEJPT0wpcmF3SW1hZ2VEYXRhCiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKIHsKLSAgICBXZWJD
b3JlOjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgp
OworICAgIGF1dG8gKmNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKICAg
ICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2UoKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggMGJmOGI1OTBkMmQyNzM4ZTg1YTJlZjc1MDg0OTBjZjdl
OWM3Y2Q2MS4uYjBlNjA2ZTk0MzM1MzYwZmM4ODM0MjYzNzkxM2M2YTVkYmZmYjExNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
QEAgLTMwLDI2ICszMCwyOSBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVU
QURBVEFfQ0FDSEUpCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2VuZGlmCi0jaW5jbHVkZSA8
c3RkbGliLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbHVnaW5QYWNrYWdlPiA+
IFBsdWdpblBhY2thZ2VCeU5hbWVNYXA7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01F
VEFEQVRBX0NBQ0hFKQorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1QZXJzaXN0ZW50UGx1
Z2luTWV0YWRhdGFDYWNoZVNpemUgPSAzMjc2ODsKIAogc3RhdGljIGJvb2wgZ1BlcnNpc3RlbnRQ
bHVnaW5NZXRhZGF0YUNhY2hlSXNFbmFibGVkOwogCiBTdHJpbmcmIHBlcnNpc3RlbnRQbHVnaW5N
ZXRhZGF0YUNhY2hlUGF0aCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgY2FjaGVQYXRoLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gY2FjaGVQYXRoOwogICAgIHJldHVybiBjYWNoZVBhdGg7CiB9CisKICNlbmRpZgogCiBQbHVn
aW5EYXRhYmFzZTo6UGx1Z2luRGF0YWJhc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKaW5k
ZXggMTIwMTJlMDJmZTdkYWJiMDkwYjFjNzJiMjk2Yjg1Zjk5M2YwMzc3Ni4uZGExMzE0NzdlNjQ5
ZDliMDliYzQ0N2ZjNTJmNWNiNzYxZjFlZWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3Bw
CkBAIC0zMCw4ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGx1Z2luTWFpblRocmVh
ZFNjaGVkdWxlciYgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcjo6c2NoZWR1bGVyKCkKIHsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
ciwgc2NoZWR1bGVyLCAoKSk7Ci0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGx1Z2luTWFp
blRocmVhZFNjaGVkdWxlcj4gc2NoZWR1bGVyOwogICAgIHJldHVybiBzY2hlZHVsZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDMxYTA4ZTg1NzI4NDRkNmQ2Zjdh
M2JjMjkwYmY4MjUyN2Y4MjRjM2EuLjNhOThjNmY2NjA2NzFmZGMwYjgyOWM5ODI4YzhhOTJjMGNj
ZjAyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNDEsNyArNDEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluaXRpYWxpemUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMsIHBsYXRmb3JtU3RyYXRlZ2llcywgKCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM+IHBsYXRmb3JtU3RyYXRlZ2llczsK
IH0KIAogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCBhYWU5OWViNTIyOTE5NDAwNjI1
Nzk5YzViNzBkMjE2YjIzNzhjNTVmLi4yMmIwODQ2YTkwNmI3ODI4NjU2YjhkOTU3YzEwYTBkZmFm
ZjhiMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtMjM2LDkg
KzIzNiw5IEBAIFVMT05HIFdlYkhpc3Rvcnk6OlJlbGVhc2UoKQogCiAvLyBJV2ViSGlzdG9yeSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgQ09NUHRyPFdlYkhpc3Rvcnk+JiBzaGFyZWRIaXN0b3J5
U3RvcmFnZSgpCitzdGF0aWMgQ09NUHRyPFdlYkhpc3Rvcnk+JiBzaGFyZWRIaXN0b3J5U3RvcmFn
ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENPTVB0cjxXZWJIaXN0
b3J5Piwgc2hhcmVkSGlzdG9yeSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDT01Q
dHI8V2ViSGlzdG9yeT4+IHNoYXJlZEhpc3Rvcnk7CiAgICAgcmV0dXJuIHNoYXJlZEhpc3Rvcnk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxl
U3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuY3BwCmluZGV4IDhmZjBlZmNjOGE1ODZhZTEzYzgyOTg2YzdkZWQwZDA0Mjk1ZmFjMGYuLmI3
NTczOTE1OWZlZmQyMWVkNmZhMzM2ODg4MGExOWI5YmMxNDIxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtNDcsMjUgKzQ3
LDI1IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIExvY2FsaXplZFN0cmluZyo+IExvY2FsaXpl
ZFN0cmluZ01hcDsKIAogc3RhdGljIExvY2smIG1haW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBtdXRleCwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBtdXRleDsKICAgICByZXR1cm4gbXV0ZXg7
CiB9CiAKIHN0YXRpYyBMb2NhbGl6ZWRTdHJpbmdNYXAmIG1haW5CdW5kbGVMb2NTdHJpbmdzKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxpemVkU3RyaW5nTWFw
LCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jYWxpemVkU3RyaW5nTWFw
PiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAogc3RhdGljIExvY2smIGZyYW1ld29ya0xvY1N0
cmluZ3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKExvY2ss
IG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExvY2s+IG11dGV4OwogICAg
IHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIExvY2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtM
b2NTdHJpbmdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxp
emVkU3RyaW5nTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jYWxp
emVkU3RyaW5nTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAppbmRleCBkMDY2ZDNhYTEwODk1ZjZiNjBmYWE3ZTg1NzkzZDM3MTI3NjRj
ZTY0Li45Yjc4MzExMGZlNjMyNDY4NWI2ZTNiMWNlMjc3NjBkYjYxOGFhZjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMjI2LDE3ICsyMjYsMTggQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgSlNDOjpKU0xvY2s7CiAK
K3N0YXRpYyBTdHJpbmcgd2ViS2l0VmVyc2lvblN0cmluZygpOworCitzdGF0aWMgQ0ZTdHJpbmdS
ZWYgV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5ID0gQ0ZTVFIoIldlYktpdExvY2FsQ2FjaGUi
KTsKKwogc3RhdGljIEhNT0RVTEUgYWNjZXNzaWJpbGl0eUxpYjsKKwogc3RhdGljIEhhc2hTZXQ8
V2ViVmlldyo+JiBwZW5kaW5nRGVsZXRlQmFja2luZ1N0b3JlU2V0KCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJWaWV3Kj4+IHBlbmRpbmdEZWxldGVCYWNraW5nU3Rv
cmVTZXQ7CiAgICAgcmV0dXJuIHBlbmRpbmdEZWxldGVCYWNraW5nU3RvcmVTZXQ7CiB9CiAKLXN0
YXRpYyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXkgPSBDRlNUUigiV2Vi
S2l0TG9jYWxDYWNoZSIpOwotCi1zdGF0aWMgU3RyaW5nIHdlYktpdFZlcnNpb25TdHJpbmcoKTsK
LQogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTU1NSwx
MCArMTU1Niw4IEBAIGJvb2wgV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIFN0cmluZyBXZWJWaWV3OjpzdGFuZGFyZFVz
ZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUp
CiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3NWZXJzaW9u
LCAod2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgd2ViS2l0VmVyc2lvbiwgKHdlYktpdFZlcnNpb25TdHJpbmco
KSkpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBvc1ZlcnNpb24s
ICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIs
IGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6ICIgIiwgYXBwbGljYXRpb25OYW1lKTsK
KyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwcmVmaXggPSBtYWtlU3Ry
aW5nKCJNb3ppbGxhLzUuMCAoIiwgd2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpLCAiKSBBcHBs
ZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uU3RyaW5nKCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeC5nZXQoKSwgYXBwbGljYXRpb25OYW1lLmlz
RW1wdHkoKSA/ICIiIDogIiAiLCBhcHBsaWNhdGlvbk5hbWUpOwogfQogCiBQYWdlKiBXZWJWaWV3
OjpwYWdlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyYjU1NTE2OGQ2MGFkYmNmMmEzYTE3ZjEyYWJjMGIwNDJkZTI1YWQ2Li5lNmI0MzhlNDJi
YTRhZmQzMTNlNTBlMzZkODZiZTY4Yjk0NTRjMThjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDctMjEgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95
ZWQgYW5kIHJlbGF0ZWQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoK
KyAgICAgICAgKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgpOgorICAgICAgICAoamF2YVNjcmlwdFRo
cmVhZHMpOgorCiAyMDE3LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1MgV0syXSBSZW1vdmUgX1dLRHJhZ2dhYmxlRWxlbWVudEluZm8g
YW5kIGZvbGQgUG9zaXRpb25JbmZvcm1hdGlvblRlc3RzIGludG8gV0tSZXF1ZXN0QWN0aXZhdGVk
RWxlbWVudEluZm8KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAKaW5kZXggMmVhZmJiZWJmYjViYjk5ZGIxNmJlNGE2NDBmZjU0ZDMwNmYxODVmOS4uOTJkYTdl
MTk3OGM1ZDAzOGU2YmI5OTk1ZTRiMjA1YTIyMWQ5YTY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICogICAgICAgICAgIChDKSAyMDEyIFBhdHJpY2sgR2Fuc3RlcmUgPHBhcm9nYUBw
YXJvZ2EuY29tPgpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQ3LDE0ICs0OCwxNCBAQCBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlw
dFRocmVhZHNHcm91cDsKIAogc3RhdGljIExvY2smIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBzdGF0aWNNdXRleCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBzdGF0aWNNdXRleDsKICAgICBy
ZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VGhyZWFkPj4g
VGhyZWFkU2V0Owogc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3Jp
cHRUaHJlYWRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZFNldD4gc3Rh
dGljSmF2YVNjcmlwdFRocmVhZHM7CiAgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkudHJ5TG9jaygpKTsKICAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316240</attachid>
            <date>2017-07-23 14:57:32 -0700</date>
            <delta_ts>2017-07-24 09:10:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170723145731.patch</filename>
            <type>text/plain</type>
            <size>116677</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgxY2M3NWVmMjQyOTIw
YTcxOGY1MzYxZWIxY2RiYzJkMzM1NjU3YS4uMjE1ZTg1NzM1ZjQyNTlhNDk1OWFkYmY0NmQzZTM4
YmNjYmRlNTAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxNy0wNy0yMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICBVc2UgaXNOdWxsKCkgcmF0aGVyIHRoYW4gY29t
cGFyaW5nIGFnYWluc3QgbnVsbEF0b20oKSBzaW5jZSBpdCdzCisgICAgICAgIHNsaWdodGx5IG1v
cmUgZWZmaWNpZW50LgorCisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZSk6IFVzZSBhIHN3
aXRjaCBzdGF0ZW1lbnQgZm9yIHRoZQorICAgICAgICB0aHJlZSBzdGF0ZXMgb2YgZm9yY2VkUHJl
ZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUuIEFsc28gdXBkYXRlCisgICAgICAg
IHRvIHVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZCBvZiBwbGF0Zm9ybVRoZW1lKCkuCisK
KyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5j
bHVkZXMsIG1pbm9yIHN0eWxlIHR3ZWFrcywKKyAgICAgICAgYW5kIHVzZSBpc051bGwoKSByYXRo
ZXIgdGhhbiBjb21wYXJpbmcgYWdhaW5zdCBudWxsQXRvbSgpIHNpbmNlIGl0J3MKKyAgICAgICAg
c2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQuCisKKyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJv
bEVsZW1lbnQpOiBVc2UgaXNOdWxsKCkKKyAgICAgICAgcmF0aGVyIHRoYW4gY29tcGFyaW5nIGFn
YWluc3QgbnVsbEF0b20oKSBzaW5jZSBpdCdzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LgorCisg
ICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTG9j
YWxOYW1lVG9TZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSHRtbENhc2VJ
bnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUpOiBNb3ZlZCB0aGUgY2FzZS1zZW5z
aXRpdmUKKyAgICAgICAgYXR0cmlidXRlIHNldCBpbiBoZXJlIGFuZCBtYWRlIGl0IHVzZSBtYWtl
TmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJ
Zk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIEZvcm1hdHRlZCB2ZXJ0aWNhbGx5IGFuZCBz
b3J0ZWQgc28gaXQncyBlYXNpZXIgdG8gc2VlIHdoYXQgaXQgZG9lcy4KKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6IFVzZSBib29sZWFuIGxv
Z2ljIGluc3RlYWQKKyAgICAgICAgb2YgbXVsdGlwbGUgcmV0dXJuIHN0YXRlbWVudHMgdG8gbWFr
ZSB0aGlzIGEgbGl0dGxlIG1vcmUgc3RyYWlnaHRmb3J3YXJkLgorICAgICAgICAoV2ViQ29yZTo6
aXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbik6IEFkZGVkLiBDYWxscyB0
aGUgbmV3CisgICAgICAgIGlzRXhwb3NlZCBmdW5jdGlvbi4gVGhlIG9sZCBjb2RlIGNhbGxlZCB0
aGlzIGlzRG9jTmFtZWRJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVj
dGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICBVc2UgaXNP
YmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbiB0byBjbGVhbiB1cCBsb2dpYy4g
QWxzbworICAgICAgICBzb3J0ZWQgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2gpOgorICAg
ICAgICBVc2UgaXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbiB0byBjbGVh
biB1cCBsb2dpYy4gQWxzbworICAgICAgICBzb3J0ZWQgY2xhc3NlcyBhbmQgZm9ybWF0dGVkIHZl
cnRpY2FsbHkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlcyk6IFdyaXRlIGluIHRlcm1zIG9mCisgICAgICAgIGFib3ZlIGZ1bmN0aW9ucyBm
b3IgY2xhcml0eS4gRWZmaWNpZW5jeSBpcyByb3VnaGx5IHRoZSBzYW1lLgorCisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOiBJbml0aWFsaXplIGRhdGEgbWVtYmVycworICAg
ICAgICBpbiBjbGFzcyBkZWZpbml0aW9uIGluc3RlYWQgb2YgaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBVcGRhdGUgZm9yIG5hbWUg
Y2hhbmdlOworICAgICAgICBmdW5jdGlvbiBpcyBub3cgY2FsbGVkIHVwZGF0ZUV4cG9zZWRTdGF0
ZSByYXRoZXIgdGhhbiB1cGRhdGVEb2NOYW1lZEl0ZW0uCisgICAgICAgIEFsc28gdXNlIG1fdXNl
RmFsbGJhY2tDb250ZW50IGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBhIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhw
b3N1cmUpOiBBZGRlZC4gUmVwbGFjZXMgdGhlIG9sZAorICAgICAgICBpc1JlY29nbml6ZWRUYWdO
YW1lIGZ1bmN0aW9uLCBhbmQgZG9lcyBhbG1vc3QgdGhlIHNhbWUgdGhpbmcsIGJ1dCB0aGUKKyAg
ICAgICAgYXJndW1lbnQgdHlwZSBpcyBkaWZmZXJlbnQgYW5kIHRoZSBwYXJhbSB0YWcgaXMgbm93
IG9uZSBvZiB0aGUgdGFncworICAgICAgICBleGVtcHRlZCBoZXJlLiBBbHNvIGJyb2tlIHVwIGlu
dG8gdHdvIG92ZXJsb2FkcyBzbyB3ZSBjYW4gaGFuZGxlIHRoZQorICAgICAgICBFbGVtZW50LCBU
ZXh0LCBhbmQgb3RoZXIgTm9kZSBjYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEJlRXhw
b3NlZCk6IEFkZGVkLiBIZWxwZXIgZm9yIHRoZSB1cGRhdGVFeHBvc2VkU3RhdGUKKyAgICAgICAg
ZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBsb2dpYyBvZiB3aGVuIHRoZSBlbGVtZW50IHNob3Vs
ZCBiZSBleHBvc2VkLAorICAgICAgICBzZXBhcmF0aW5nIGl0IGZyb20gd2hhdCB0byBkbyB3aGVu
IHRoZSBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6
OnVwZGF0ZUV4cG9zZWRTdGF0ZSk6IFJlbmFtZWQgZnJvbQorICAgICAgICB1cGRhdGVEb2NOYW1l
ZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IFJlbmFtZWQgaXNE
b2NOYW1lZEl0ZW0gLT4gaXNFeHBvc2VkLAorICAgICAgICBtX2RvY05hbWVkSXRlbSAtPiBtX2lz
RXhwb3NlZCwgdXBkYXRlRG9jTmFtZWRJdGVtIC0+IHVwZGF0ZUV4cG9zZWRTdGF0ZSwKKyAgICAg
ICAgc3RvcHBlZCB1c2luZyBiaXQgZmllbGRzIGZvciB0aGUgdHdvIGJvb2xlYW4gZGF0YSBtZW1i
ZXJzLCBhbmQKKyAgICAgICAgaW5pdGlhbGl6ZWQgdGhvc2UgZGF0YSBtZW1iZXJzIGhlcmUgaW4g
dGhlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQpOiBNb3Zl
ZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xGb250
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbFNpemUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xCb3JkZXIpOiBGaXhlZCBzd2l0Y2ggc3RhdGVtZW50
IGluZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xQYWRkaW5nKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5oOiBSZW1vdmVkIHRoZSBtYW55IHVu
bmVjZXNzYXJ5IGluY2x1ZGVzLiBUaGUgb25lCisgICAgICAgIEkgd2FzIHJlYWxseSBhZnRlciBo
ZXJlIHdhcyBGb250Q2FzY2FkZS5oLiBSZXBsYWNlZCB0aGUgcGxhdGZvcm1UaGVtZQorICAgICAg
ICBmdW5jdGlvbiB3aXRoIGEgc2luZ2xldG9uIGZ1bmN0aW9uLCBmb2xsb3dpbmcgb3VyIG5vcm1h
bCBzdHlsZS4gQWxzbworICAgICAgICBjaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSB0byBhIHJlZmVy
ZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIFJlbW92ZWQgbWFueSB1bnVzZWQg
ZnVuY3Rpb24gYW5kIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Ro
ZW1lQ29jb2EuaDogVGlnaHRlbmVkIHVwIGltcGxlbWVudGF0aW9uLCByZW1vdmluZworICAgICAg
ICB1bm5lY2Vzc2FyeSBtZW1iZXJzIGFuZCBtYWtpbmcgb3ZlcnJpZGVzIHByaXZhdGUuCisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbTogTW92ZWQgaW5jbHVkZSBpbiBoZXJl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6IFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0
ZWFkIG9mCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSk6IEJ1aWxkIHRoZSBzZXQgaW4gYSBjbGVh
bmVyCisgICAgICAgIHdheSBhbmQgdXNlIGEgTmV2ZXJEZXN0cm95ZWQgc2V0IGluc3RlYWQgb2Yg
YSBoZWFwLWFsbG9jYXRlZCBvbmUuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Rm9u
dENhc2NhZGUpOiBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBkYXRhIG1lbWJlcnMKKyAgICAgICAg
dG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oOiBJbml0aWFsaXplIEdseXBoT3ZlcmZsb3cgYW5kCisgICAgICAgIEZvbnN0
Q2FzY2FkZSBkYXRhIG1lbWJlcnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIFJlbW92ZSB0aGUg
Y29uc3RydWN0b3IKKyAgICAgICAgZm9yIEdseXBoT3ZlcmZsb3cgZW50aXJlbHkuIEFkZGVkIEZJ
WE1FIGFib3V0IHRoZSBwZWN1bGlhciAhPSBvcGVyYXRvciB3ZQorICAgICAgICBkZWZpbmVkIGZv
ciBHbHlwaE92ZXJmbG93LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyk6IFVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZAorICAgICAgICBv
ZiBwbGF0Zm9ybVRoZW1lKCkuCisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VTdGFydEtleSk6IFVzZSBDRlNUUiBkaXJlY3Rs
eSBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TC4KKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlRHVyYXRpb25LZXkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNBQ0ZDb250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbik6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2luZ2xldG9u
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YKKyAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXll
ckNoYW5nZXNGbHVzaGVyLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRl
bnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOiBVc2UgSGFzaE1hcCBjb25zdHJ1Y3RvcgorICAgICAg
ICBpbnN0ZWFkIG9mIHdyaXRpbmcgb3V0IGEgbG90IG9mIGFkZCBjYWxscy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6IFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9m
CisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLmg6IFRpZ2h0ZW5lZCB1cCBpbXBsZW1lbnRhdGlvbiwgcmVtb3Zp
bmcKKyAgICAgICAgdW5uZWNlc3NhcnkgbWVtYmVycyBhbmQgbWFraW5nIG92ZXJyaWRlcyBwcml2
YXRlLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlRoZW1lOjpzaW5nbGV0b24pOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1UaGVtZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5oOiBUaWdodGVuZWQgdXAgaW1wbGVtZW50YXRp
b24sIHJlbW92aW5nCisgICAgICAgIHVubmVjZXNzYXJ5IG1lbWJlcnMgYW5kIG1ha2luZyBvdmVy
cmlkZXMgcHJpdmF0ZS4gUmVtb3ZlZCB1bm5lZWRlZAorICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRCBzaW5jZSB0aGlzIGlzIG5ldmVyIGFsbG9jYXRlZCBvbiB0aGUgaGVhcC4KKyAgICAg
ICAgUmVtb3ZlZCB1bnVzZWQgLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdIG1ldGhvZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgICgtW05TRm9udCB3ZWJD
b3JlRmFtaWx5TmFtZV0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnNpbmds
ZXRvbik6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybVRoZW1lLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg6CisgICAgICAgIFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBGb250Q2FzY2FkZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
Lmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNp
b24pOiBVc2UgTmV2ZXJEZXN0cm95ZWQKKyAgICAgICAgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VOZXdsaW5lc1dpdGhXaW5k
b3dzU3R5bGVOZXdsaW5lcyk6IFVzZQorICAgICAgICBhcHBlbmRMaXRlcmFsIGluc3RlYWQgb2Yg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMLgorCisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6IFVzZSBO
ZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTCwgYW5kIHVzZWQgYSBsYW1iZGEgdG8gaW5pdGlhbGl6ZQorICAgICAgICByYXRoZXIg
dGhhbiBhIGJvb2xlYW4gdG8gY29udHJvbCBvbmUtdGltZSBjb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6c3RvcmFnZURpcmVjdG9yeSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBmb3IgYSBwcmVmaXggd2UgYXJlIGFwcGVuZGlu
ZyB0bworICAgICAgICBhIFN0cmluZy4gVGhlICsgb3BlcmF0b3IgY2FuIGhhbmRsZSBhIGxpdGVy
YWwganVzdCBhcyBlZmZpY2llbnRseQorICAgICAgICB3aXRob3V0IGZpcnN0IHN0b3JpbmcgaXQg
aW4gYSBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybVRo
ZW1lLgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9UaGVtZVdQRS5oOiBUaWdodGVuZWQgdXAgaW1w
bGVtZW50YXRpb24sIHJlbW92aW5nCisgICAgICAgIHVubmVjZXNzYXJ5IG1lbWJlcnMgYW5kIG1h
a2luZyBvdmVycmlkZXMgcHJpdmF0ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6UmVuZGVyVGhlbWUpOiBObyBu
ZWVkIHRvIGluaXRpYWxpemUgbV90aGVtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
OjphZGp1c3RTdHlsZSk6IFVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZAorICAgICAgICBv
ZiBhY2Nlc3NpbmcgaXQgdGhyb3VnaCBtX3RoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YmFz
ZWxpbmVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFk
anVzdFJlcGFpbnRSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDogUmVtb3ZlZCB1bm5lZGVkIG1fdGhlbWUgYW5kIHVubmVl
ZGVkCisgICAgICAgIGluY2x1c2lvbiBvZiBUaGVtZS5oLgorCisgICAgICAgICogcmVuZGVyaW5n
L2xpbmUvTGluZUJyZWFrZXIuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mCisgICAgICAg
IEZvbnRDYXNjYWRlLmguCisKIDIwMTctMDctMjIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXhlZCBidWlsZGluZyBmb3IgbWFjT1MgMTAuMTIgd2l0aCB0aGUg
bWFjT1MgMTAuMTMgU0RLIGFmdGVyIHIyMTk2NDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggNzQzZmNkZGZmZWE4OWIyYTA3MmJhODhhYWZkYmQ3YmNlOGJiMGFmNi4uNmI5ZWFiM2Iy
YjA0YTgwNTRjNTNhZGEwZmU2MjhmNDRmMzc2Y2JmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA3LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3JlIE5ldmVyRGVzdHJveWVkIGFuZCByZWxhdGVkIGNsZWFu
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDc0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbTogUmVtb3ZlZCBhIGxvdCBvZiB1bm5lZWRlZCAidXNpbmci
CisgICAgICAgIGZvciBuYW1lcyB0aGF0IGFyZW4ndCBldmVuIHVzZWQgaW4gdGhpcyBmaWxlLgor
ICAgICAgICAoLVtET01Ob2RlIGJvdW5kaW5nQm94ZXNdKTogVXNlIEBbXSBzeW50YXggaW5zdGVh
ZCBvZgorICAgICAgICAtW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ol0uCisgICAgICAgICgtW0RP
TU5vZGUgYWJzb2x1dGVRdWFkc10pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NTm9kZSBmaW5kRXhw
bG9kZWRUZXh0Tm9kZUF0UG9pbnQ6XSk6IFVzZSBhdXRvKiBpbnN0ZWFkCisgICAgICAgIG9mIHdy
aXRpbmcgb3V0IHZhcmlvdXMgdHlwZXMuCisgICAgICAgICgtW0RPTUhUTUxBcmVhRWxlbWVudCBi
b3VuZGluZ0JveGVzV2l0aE93bmVyOl0pOiBVc2UgQFtdCisgICAgICAgIHN5bnRheCBpbnN0ZWEg
b2YgLVtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpdLgorICAgICAgICAoLVtET01IVE1MQXJlYUVs
ZW1lbnQgYWJzb2x1dGVRdWFkc1dpdGhPd25lcjpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUhU
TUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOiBVc2UgYXV0byogaW5zdGVhZAor
ICAgICAgICBvZiB3cml0aW5nIG91dCB2YXJpb3VzIHR5cGVzLgorICAgICAgICAoLVtET01IVE1M
SW1hZ2VFbGVtZW50IG1pbWVUeXBlXSk6IERpdHRvLgorCiAyMDE3LTA3LTIxICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGlu
IGV2ZW50IGRpc3BhdGNoIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBkNThi
YTI0YWZhYTAzODA4M2VlODc1ZTcxNThhMjc2Y2MzZjk3MzIyLi5lMzA1MjYzZTcyYzYxMTY2Zjli
YjlkYWI5ODU4NDNjN2Q0ZGNjZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTctMDctMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95ZWQgYW5kIHJlbGF0ZWQgY2xlYW51cAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdp
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0
YUNhY2hlUGF0aCk6IFVzZSBOZXZlckRlc3Ryb3llZAorICAgICAgICBpbnN0ZWFkIG9mIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpbk1haW5U
aHJlYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luTWFpblRocmVhZFNj
aGVkdWxlcjo6c2NoZWR1bGVyKTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5pdGlhbGl6ZSk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAg
KHNoYXJlZEhpc3RvcnlTdG9yYWdlKTogRGl0dG8uCisgICAgICAgICogV2ViTG9jYWxpemFibGVT
dHJpbmdzLmNwcDoKKyAgICAgICAgKG1haW5CdW5kbGVMb2NTdHJpbmdzKTogRGl0dG8uCisgICAg
ICAgIChmcmFtZXdvcmtMb2NTdHJpbmdzTXV0ZXgpOiBEaXR0by4KKyAgICAgICAgKGZyYW1ld29y
a0xvY1N0cmluZ3MpOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6IERpdHRvLgorICAg
ICAgICBBbHNvIGNoYW5nZWQgdG8ga2VlcCBvbmUgZ2xvYmFsIHN0cmluZyB3aXRoIHRoZSBwcmVm
aXggb2YgdGhlIHVzZXIgYWdlbnQgc3RyaW5nCisgICAgICAgIGluc3RlYWQgb2Yga2VlcGluZyB0
d28gZ2xvYmFscyB3aXRoIHBpZWNlcyBvZiB0aGF0IHByZWZpeC4KKwogMjAxNy0wNy0yMSAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG1vcmUgcmVmZXJl
bmNlcyBpbiBldmVudCBkaXNwYXRjaCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCBjNjBiMDVhN2Y1
MDk5ZGU1YzYzYTc4OTViOGQzMDI0MzNlODM3NWJkLi5mNzEyMGZiNmZhNWQwNTk5ZTIyOGEzNDI1
ODAwYzlhZDMyOWRhYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmPEVs
ZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxs
YmFjayhEb2N1bWVudCYgZG8KIFJlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKQogewogICAgIGlmIChhdXRvIGVsZW1lbnQgPSB0cnlUb0NvbnN0
cnVjdEN1c3RvbUVsZW1lbnQoZG9jdW1lbnQsIG5hbWUubG9jYWxOYW1lKCkpKSB7Ci0gICAgICAg
IGlmIChuYW1lLnByZWZpeCgpICE9IG51bGxBdG9tKCkpCisgICAgICAgIGlmICghbmFtZS5wcmVm
aXgoKS5pc051bGwoKSkKICAgICAgICAgICAgIGVsZW1lbnQtPnNldFByZWZpeChuYW1lLnByZWZp
eCgpKTsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggZmRiMmQ5Njhj
NzdhYWFkZDc3MzA3NjUyZTljYTY3ZDQ4NmE4MTU3NS4uODczZGI5ZDdiMzU1NmVkMGE3NmVkMjM3
YzhlMjAwZDk5MWY0MDY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcApAQCAtNjgzLDE0ICs2ODMsMTggQEAgc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRN
b3Rpb25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmUKIHsK
ICAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IGZhbHNlOwogCi0gICAgaWYgKGZy
YW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFs
dWUoKSA9PSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpPbikKKyAgICBzd2l0
Y2ggKGZyYW1lLnNldHRpbmdzKCkuZm9yY2VkUHJlZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmls
aXR5VmFsdWUoKSkgeworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1
ZTo6T246CiAgICAgICAgIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA9IHRydWU7Ci0gICAgZWxz
ZSBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2li
aWxpdHlWYWx1ZSgpID09IFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9mZikK
LSAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gZmFsc2U7Ci0jaWYgUExBVEZPUk0o
SU9TKSB8fCBVU0UoTkVXX1RIRU1FKQotICAgIGVsc2UKLSAgICAgICAgdXNlclByZWZlcnNSZWR1
Y2VkTW90aW9uID0gcGxhdGZvcm1UaGVtZSgpLT51c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJpbGl0eVZh
bHVlOjpPZmY6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2V0dGluZ3M6OkZvcmNlZEFjY2Vz
c2liaWxpdHlWYWx1ZTo6U3lzdGVtOgorI2lmIFVTRShORVdfVEhFTUUpCisgICAgICAgIHVzZXJQ
cmVmZXJzUmVkdWNlZE1vdGlvbiA9IFRoZW1lOjpzaW5nbGV0b24oKS51c2VyUHJlZmVyc1JlZHVj
ZWRNb3Rpb24oKTsKICNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9RdWFsaWZpZWROYW1lLmgKaW5kZXggMDhmYTJiNjk0Y2YzNGM5Y2M4NTI5ODQ2M2EzMzQ5NmY3
N2I1ZTdlZS4uMmYzOGMxOTg0NTE4MGNhMTZlNGQxN2Y0ODRlZDQ0NDMzYjk5OTJlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNSwgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwLDkgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0j
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDUsNyBAQCBwdWJsaWM6CiAK
ICAgICAgICAgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdDsKIAotICAgICAgICBtdXRhYmxl
IHVuc2lnbmVkIG1fZXhpc3RpbmdIYXNoOworICAgICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fZXhp
c3RpbmdIYXNoIHsgMCB9OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcgbV9wcmVmaXg7CiAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZTsKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nIG1fbmFtZXNwYWNlOwpAQCAtNTYsMTIgKzU0LDExIEBAIHB1YmxpYzoKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGxvY2FsTmFtZU1lbW9yeU9mZnNl
dCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lSW1wbCwgbV9sb2NhbE5h
bWUpOyB9CiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbmFtZXNwYWNlTWVtb3J5T2Zmc2V0KCkg
eyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFF1YWxpZmllZE5hbWVJbXBsLCBtX25hbWVzcGFjZSk7
IH0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQorI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAg
ICBRdWFsaWZpZWROYW1lSW1wbChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKQot
ICAgICAgICAgICAgOiBtX2V4aXN0aW5nSGFzaCgwKQotICAgICAgICAgICAgLCBtX3ByZWZpeChw
cmVmaXgpCisgICAgICAgICAgICA6IG1fcHJlZml4KHByZWZpeCkKICAgICAgICAgICAgICwgbV9s
b2NhbE5hbWUobG9jYWxOYW1lKQogICAgICAgICAgICAgLCBtX25hbWVzcGFjZShuYW1lc3BhY2VV
UkkpCiAgICAgICAgIHsKQEAgLTgxLDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPT0g
b3RoZXIubV9pbXBsIHx8IChsb2NhbE5hbWUoKSA9PSBvdGhlci5sb2NhbE5hbWUoKSAmJiBuYW1l
c3BhY2VVUkkoKSA9PSBvdGhlci5uYW1lc3BhY2VVUkkoKSk7IH0KIAotICAgIGJvb2wgaGFzUHJl
Zml4KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5tX3ByZWZpeCAhPSBudWxsQXRvbSgpOyB9Cisg
ICAgYm9vbCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsLT5tX3ByZWZpeC5pc051
bGwoKTsgfQogICAgIHZvaWQgc2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KSB7
ICp0aGlzID0gUXVhbGlmaWVkTmFtZShwcmVmaXgsIGxvY2FsTmFtZSgpLCBuYW1lc3BhY2VVUkko
KSk7IH0KIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4g
bV9pbXBsLT5tX3ByZWZpeDsgfQpAQCAtOTYsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgUXVhbGlm
aWVkTmFtZUltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KICNpZiBF
TkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3QgaW1wbE1lbW9yeU9mZnNldCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lLCBtX2ltcGwpOyB9Ci0jZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKyNlbmRpZgogICAgIAogICAgIC8vIEluaXQgcm91dGluZSBmb3IgZ2xvYmFs
cwogICAgIHN0YXRpYyB2b2lkIGluaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQXV0b2ZpbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKaW5kZXgg
NWExYWFkMzQ2ZTIzNjNkZjQ5NTZhZTZkN2E3NDA5Y2ZmMDFhN2Y2Yy4uZTMxMzQxOTg0ODBlZGJm
ZjE4OThjYjE2NjlkYmZiMmY1YmMyODgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9BdXRvZmlsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAKQEAg
LTE4Myw3ICsxODMsNyBAQCBBdXRvZmlsbERhdGEgQXV0b2ZpbGxEYXRhOjpjcmVhdGVGcm9tSFRN
TEZvcm1Db250cm9sRWxlbWVudChjb25zdCBIVE1MRm9ybUNvbnRybwogICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjphdXRvY29tcGxldGVBdHRyKTsKIAogICAgIC8vIDEuIElmIHRo
ZSBlbGVtZW50IGhhcyBubyBhdXRvY29tcGxldGUgYXR0cmlidXRlLCB0aGVuIGp1bXAgdG8gdGhl
IHN0ZXAgbGFiZWxlZCBkZWZhdWx0LgotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSA9PSBudWxsQXRv
bSgpKQorICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRMYWJlbCgpOwogCiAgICAgLy8gMi4gTGV0IHRva2VucyBiZSB0aGUgcmVzdWx0IG9mIHNw
bGl0dGluZyB0aGUgYXR0cmlidXRlJ3MgdmFsdWUgb24gc3BhY2VzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuY3BwCmluZGV4IGUzMDVjNDgyMjM2YjU0ZmY1MDg2NzhjYmQxMTgxOTFjMWQ2
ZDIwNzYuLmNiZGZkZDNlZmNhYWRhZjhmYmY0MDBiNmMyNTQ4MGE0M2FlZDMyMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTExMSw2NiArMTExLDYgQEAgUmVmPERvY3Vt
ZW50UGFyc2VyPiBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiAgICAgcmV0dXJuIEhUTUxE
b2N1bWVudFBhcnNlcjo6Y3JlYXRlKCp0aGlzKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkTG9jYWxO
YW1lVG9TZXQoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIHNldCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgcU5hbWUpCi17Ci0gICAgc2V0LT5hZGQocU5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsK
LX0KLQotc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBjcmVhdGVIdG1sQ2FzZUlu
c2Vuc2l0aXZlQXR0cmlidXRlc1NldCgpCi17Ci0gICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBh
dHRyaWJ1dGVzIGluIEhUTUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNh
c2UtaW5zZW5zaXRpdmUKLSAgICAvLyBNb3ppbGxhIHRyZWF0cyBhbGwgb3RoZXIgdmFsdWVzIGFz
IGNhc2Utc2Vuc2l0aXZlLCB0aHVzIHNvIGRvIHdlLgotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+KiBhdHRyU2V0ID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+OwotCi0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYWNjZXB0X2NoYXJzZXRBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBhY2NlcHRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1Nl
dChhdHRyU2V0LCBhbGlnbkF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFs
aW5rQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYXhpc0F0dHIpOwotICAg
IGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGJnY29sb3JBdHRyKTsKLSAgICBhZGRMb2NhbE5h
bWVUb1NldChhdHRyU2V0LCBjaGFyc2V0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0
clNldCwgY2hlY2tlZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNsZWFy
QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29kZXR5cGVBdHRyKTsKLSAg
ICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBjb2xvckF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIGNvbXBhY3RBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRy
U2V0LCBkZWNsYXJlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZGVmZXJB
dHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBkaXJBdHRyKTsKLSAgICBhZGRM
b2NhbE5hbWVUb1NldChhdHRyU2V0LCBkaXNhYmxlZEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRv
U2V0KGF0dHJTZXQsIGVuY3R5cGVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0
LCBmYWNlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgZnJhbWVBdHRyKTsK
LSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBocmVmbGFuZ0F0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIGh0dHBfZXF1aXZBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVU
b1NldChhdHRyU2V0LCBsYW5nQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
bGFuZ3VhZ2VBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBsaW5rQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbWVkaWFBdHRyKTsKLSAgICBhZGRMb2Nh
bE5hbWVUb1NldChhdHRyU2V0LCBtZXRob2RBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBtdWx0aXBsZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5v
aHJlZkF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vcmVzaXplQXR0cik7
Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbm9zaGFkZUF0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIG5vd3JhcEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIHJlYWRvbmx5QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
cmVsQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgcmV2QXR0cik7Ci0gICAg
YWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgcnVsZXNBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVU
b1NldChhdHRyU2V0LCBzY29wZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQs
IHNjcm9sbGluZ0F0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNlbGVjdGVk
QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgc2hhcGVBdHRyKTsKLSAgICBh
ZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCB0YXJnZXRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVU
b1NldChhdHRyU2V0LCB0ZXh0QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
dHlwZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHZhbGlnbkF0dHIpOwot
ICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHZhbHVldHlwZUF0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIHZsaW5rQXR0cik7Ci0KLSAgICByZXR1cm4gYXR0clNldDsK
LX0KLQogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwj
ZG9tLWRvY3VtZW50LW5hbWVkaXRlbQogc3RkOjpvcHRpb25hbDxWYXJpYW50PFJlZlB0cjxET01X
aW5kb3c+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9j
dW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CkBAIC0yMzUsOSAr
MTc1LDY0IEBAIHZvaWQgSFRNTERvY3VtZW50OjpyZW1vdmVXaW5kb3dOYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nSW1wbCYgbmFtZSwgRWxlbWVudCYKIAogYm9vbCBIVE1MRG9jdW1lbnQ6Omlz
Q2FzZVNlbnNpdGl2ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQogewotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogaHRtbENhc2VJbnNl
bnNpdGl2ZUF0dHJpYnV0ZXNTZXQgPSBjcmVhdGVIdG1sQ2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
c1NldCgpOwotICAgIGJvb2wgaXNQb3NzaWJsZUhUTUxBdHRyID0gIWF0dHJpYnV0ZU5hbWUuaGFz
UHJlZml4KCkgJiYgKGF0dHJpYnV0ZU5hbWUubmFtZXNwYWNlVVJJKCkgPT0gbnVsbEF0b20oKSk7
Ci0gICAgcmV0dXJuICFpc1Bvc3NpYmxlSFRNTEF0dHIgfHwgIWh0bWxDYXNlSW5zZW5zaXRpdmVB
dHRyaWJ1dGVzU2V0LT5jb250YWlucyhhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7
CisgICAgc3RhdGljIGNvbnN0IGF1dG8gY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlU2V0ID0gbWFr
ZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBhdHRy
aWJ1dGVzIGluIEhUTUwgNC4wMSB3aXRoIHZhbHVlcyBtYXJrZWQgYXMgIltDSV0iIG9yIGNhc2Ut
aW5zZW5zaXRpdmUKKyAgICAgICAgLy8gTW96aWxsYSB0cmVhdHMgYWxsIG90aGVyIHZhbHVlcyBh
cyBjYXNlLXNlbnNpdGl2ZSwgdGh1cyBzbyBkbyB3ZS4KKyAgICAgICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUqIGNvbnN0IG5hbWVzW10gPSB7CisgICAgICAgICAgICAmYWNjZXB0X2NoYXJz
ZXRBdHRyLAorICAgICAgICAgICAgJmFjY2VwdEF0dHIsCisgICAgICAgICAgICAmYWxpZ25BdHRy
LAorICAgICAgICAgICAgJmFsaW5rQXR0ciwKKyAgICAgICAgICAgICZheGlzQXR0ciwKKyAgICAg
ICAgICAgICZiZ2NvbG9yQXR0ciwKKyAgICAgICAgICAgICZjaGFyc2V0QXR0ciwKKyAgICAgICAg
ICAgICZjaGVja2VkQXR0ciwKKyAgICAgICAgICAgICZjbGVhckF0dHIsCisgICAgICAgICAgICAm
Y29kZXR5cGVBdHRyLAorICAgICAgICAgICAgJmNvbG9yQXR0ciwKKyAgICAgICAgICAgICZjb21w
YWN0QXR0ciwKKyAgICAgICAgICAgICZkZWNsYXJlQXR0ciwKKyAgICAgICAgICAgICZkZWZlckF0
dHIsCisgICAgICAgICAgICAmZGlyQXR0ciwKKyAgICAgICAgICAgICZkaXNhYmxlZEF0dHIsCisg
ICAgICAgICAgICAmZW5jdHlwZUF0dHIsCisgICAgICAgICAgICAmZmFjZUF0dHIsCisgICAgICAg
ICAgICAmZnJhbWVBdHRyLAorICAgICAgICAgICAgJmhyZWZsYW5nQXR0ciwKKyAgICAgICAgICAg
ICZodHRwX2VxdWl2QXR0ciwKKyAgICAgICAgICAgICZsYW5nQXR0ciwKKyAgICAgICAgICAgICZs
YW5ndWFnZUF0dHIsCisgICAgICAgICAgICAmbGlua0F0dHIsCisgICAgICAgICAgICAmbWVkaWFB
dHRyLAorICAgICAgICAgICAgJm1ldGhvZEF0dHIsCisgICAgICAgICAgICAmbXVsdGlwbGVBdHRy
LAorICAgICAgICAgICAgJm5vaHJlZkF0dHIsCisgICAgICAgICAgICAmbm9yZXNpemVBdHRyLAor
ICAgICAgICAgICAgJm5vc2hhZGVBdHRyLAorICAgICAgICAgICAgJm5vd3JhcEF0dHIsCisgICAg
ICAgICAgICAmcmVhZG9ubHlBdHRyLAorICAgICAgICAgICAgJnJlbEF0dHIsCisgICAgICAgICAg
ICAmcmV2QXR0ciwKKyAgICAgICAgICAgICZydWxlc0F0dHIsCisgICAgICAgICAgICAmc2NvcGVB
dHRyLAorICAgICAgICAgICAgJnNjcm9sbGluZ0F0dHIsCisgICAgICAgICAgICAmc2VsZWN0ZWRB
dHRyLAorICAgICAgICAgICAgJnNoYXBlQXR0ciwKKyAgICAgICAgICAgICZ0YXJnZXRBdHRyLAor
ICAgICAgICAgICAgJnRleHRBdHRyLAorICAgICAgICAgICAgJnR5cGVBdHRyLAorICAgICAgICAg
ICAgJnZhbGlnbkF0dHIsCisgICAgICAgICAgICAmdmFsdWV0eXBlQXR0ciwKKyAgICAgICAgICAg
ICZ2bGlua0F0dHIsCisgICAgICAgIH07CisgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBz
ZXQ7CisgICAgICAgIGZvciAoYXV0byogbmFtZSA6IG5hbWVzKQorICAgICAgICAgICAgc2V0LmFk
ZChuYW1lLT5sb2NhbE5hbWUoKSk7CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfSgpKTsKKwor
ICAgIGJvb2wgaXNQb3NzaWJsZUhUTUxBdHRyID0gIWF0dHJpYnV0ZU5hbWUuaGFzUHJlZml4KCkg
JiYgYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKTsKKyAgICByZXR1cm4gIWlz
UG9zc2libGVIVE1MQXR0ciB8fCAhY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlU2V0LmdldCgpLmNv
bnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpOwogfQogCiBib29sIEhUTUxEb2N1bWVu
dDo6aXNGcmFtZVNldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxOYW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5jcHAKaW5kZXggNmUyMDNhZWZiNDU4YzI5NDNhMThlOTk2NTAxZDE4MDU1NGZmYjQ3ZS4u
ZDEwYzM3ZmIyMjg4MWMxM2MzMGYwN2M3YjkzNGY5MzI3NTQ2ZjFlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtNDEsNDUgKzQxLDQ5IEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1l
bnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsK
LSAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1F
bGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKLSAgICAg
ICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTE9iamVjdEVsZW1l
bnQ+KGVsZW1lbnQpOworICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkK
KyAgICAgICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8
SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MSW1hZ2VFbGVtZW50
PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCk7CiB9
CiAKIGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCiB7Ci0gICAgLy8gRmlu
ZCBvbmx5IGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcyBhbmQgb2JqZWN0cyBieSBuYW1l
LCBidXQgYW55dGhpbmcgYnkgaWQKLSAgICBpZiAoZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1
dGVNYXRjaChlbGVtZW50KSAmJiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0g
bmFtZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVsZW1lbnQuZ2V0SWRBdHRy
aWJ1dGUoKS5pbXBsKCkgPT0gbmFtZTsKKyAgICAvLyBGaW5kIG9ubHkgaW1hZ2VzLCBmb3Jtcywg
YXBwbGV0cywgZW1iZWRzIGFuZCBvYmplY3RzIGJ5IG5hbWUsIGJ1dCBhbnl0aGluZyBieSBpZC4K
KyAgICByZXR1cm4gKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goZWxlbWVudCkg
JiYgZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpCisgICAgICAgIHx8
IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKSA9PSBuYW1lOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgaXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbihjb25zdCBFbGVtZW50
JiBlbGVtZW50KQoreworICAgIHJldHVybiBpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkg
JiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRXhwb3NlZCgpOwogfQog
CiBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0
ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IHdlIG5lZWQg
dG8gZml4IEhUTUxJbWFnZUVsZW1lbnQgdG8gdXBkYXRlIHRoZSBoYXNoIG1hcCBmb3IgdXMgd2hl
biBuYW1lIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLgotICAgIHJldHVybiBpczxIVE1MQXBw
bGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAm
JiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0ZW0oKSkK
KyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1cGRhdGUg
dGhlIGhhc2ggbWFwIGZvciB1cyB3aGVuIHRoZSBuYW1lIGF0dHJpYnV0ZSBpcyByZW1vdmVkLgor
ICAgIHJldHVybiBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGVsZW1l
bnQpCisgICAgICAgIHx8IGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQogICAgICAgICB8
fCAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkgJiYgZWxlbWVudC5oYXNOYW1lKCkpOwog
fQogCiBib29sIERvY3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0
cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICByZXR1cm4gaXM8SFRN
TEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSB8
fCBpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkKLSAgICAgICAgfHwgaXM8SFRNTEFwcGxl
dEVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYg
ZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmlzRG9jTmFtZWRJdGVtKCkpCisg
ICAgcmV0dXJuIGlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50TmFtZUNvbGxlY3Rpb24oZWxlbWVu
dCkKKyAgICAgICAgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8
IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxGb3JtRWxl
bWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTElGcmFtZUVsZW1lbnQ+KGVsZW1lbnQp
CiAgICAgICAgIHx8IGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpOwogfQogCiBib29sIERv
Y3VtZW50TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIG5hbWUpCiB7CiAgICAgLy8gRmluZCBpbWFnZXMs
IGZvcm1zLCBhcHBsZXRzLCBlbWJlZHMsIG9iamVjdHMgYW5kIGlmcmFtZXMgYnkgbmFtZSwgYXBw
bGV0cyBhbmQgb2JqZWN0IGJ5IGlkLCBhbmQgaW1hZ2VzIGJ5IGlkCi0gICAgLy8gYnV0IG9ubHkg
aWYgdGhleSBoYXZlIGEgbmFtZSBhdHRyaWJ1dGUgKHRoaXMgdmVyeSBzdHJhbmdlIHJ1bGUgbWF0
Y2hlcyBJRSkKLSAgICBpZiAoaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1M
RW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MSUZyYW1lRWxlbWVudD4oZWxlbWVudCkp
Ci0gICAgICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFt
ZTsKLSAgICBpZiAoaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICByZXR1
cm4gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOwotICAgIGlmIChpczxIVE1MT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJldHVybiAoZWxlbWVudC5nZXROYW1lQXR0cmlidXRl
KCkuaW1wbCgpID09IG5hbWUgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBu
YW1lKSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0
ZW0oKTsKLSAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIHJl
dHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCAoZWxlbWVu
dC5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lICYmIGVsZW1lbnQuaGFzTmFtZSgpKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gYnV0IG9ubHkgaWYgdGhleSBoYXZlIGEgbmFtZSBh
dHRyaWJ1dGUgKHRoaXMgdmVyeSBzdHJhbmdlIHJ1bGUgbWF0Y2hlcyBJRSkuCisgICAgcmV0dXJu
IChlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQu
Z2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lKQorICAgICAgICB8fCAoZWxlbWVudE1h
dGNoZXNJZklkQXR0cmlidXRlTWF0Y2goZWxlbWVudCkgJiYgZWxlbWVudC5nZXRJZEF0dHJpYnV0
ZSgpLmltcGwoKSA9PSBuYW1lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAppbmRleCA0M2FiYzAyZWQ3OTQyMGJjMDY3YzVjMDljYWRkMmU0NmNlYWI5
M2ZiLi5jZjIwNjdkY2Q4MjBjMzJlMDFlNDE0ZWVmMmFjMzJmMjVkMmFhMmIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNjMsOCArNjMsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogaW5saW5lIEhUTUxPYmplY3RFbGVtZW50OjpIVE1MT2Jq
ZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiAgICAgOiBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIp
CiAgICAgLCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQoZm9ybSkKLSAgICAsIG1fZG9jTmFtZWRJdGVt
KHRydWUpCi0gICAgLCBtX3VzZUZhbGxiYWNrQ29udGVudChmYWxzZSkKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShvYmplY3RUYWcpKTsKIH0KQEAgLTMzNyw4ICszMzUsOCBAQCB2b2lkIEhUTUxP
YmplY3RFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkK
IAogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJiBjaGFuZ2UpCiB7Ci0gICAgdXBkYXRlRG9jTmFtZWRJdGVtKCk7Ci0gICAgaWYgKGlzQ29u
bmVjdGVkKCkgJiYgIXVzZUZhbGxiYWNrQ29udGVudCgpKSB7CisgICAgdXBkYXRlRXhwb3NlZFN0
YXRlKCk7CisgICAgaWYgKGlzQ29ubmVjdGVkKCkgJiYgIW1fdXNlRmFsbGJhY2tDb250ZW50KSB7
CiAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICBpbnZhbGlkYXRl
U3R5bGVGb3JTdWJ0cmVlKCk7CiAgICAgfQpAQCAtMzU3LDcgKzM1NSw3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTE9iamVjdEVsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIAogdm9p
ZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkKIHsKLSAgICBpZiAo
dXNlRmFsbGJhY2tDb250ZW50KCkpCisgICAgaWYgKG1fdXNlRmFsbGJhY2tDb250ZW50KQogICAg
ICAgICByZXR1cm47CiAgICAgCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQpAQCAtMzg1LDczICsz
ODMsODEgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyRmFsbGJhY2tDb250ZW50KCkK
ICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIH0KIAotLy8gRklYTUU6IFRo
aXMgc2hvdWxkIGJlIHJlbW92ZWQsIGFsbCBjYWxsZXJzIGFyZSBhbG1vc3QgY2VydGFpbmx5IHdy
b25nLgotc3RhdGljIGJvb2wgaXNSZWNvZ25pemVkVGFnTmFtZShjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lKQorc3RhdGljIGlubGluZSBib29sIHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4
cG9zdXJlKGNvbnN0IEVsZW1lbnQmIGNoaWxkKQogewotICAgIHN0YXRpYyBjb25zdCBhdXRvIHRh
Z0xpc3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiBtYXA7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gbW9zdEtub3duVGFncyA9IG1h
a2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAgIEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4gc2V0
OwogICAgICAgICBhdXRvKiB0YWdzID0gSFRNTE5hbWVzOjpnZXRIVE1MVGFncygpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEhUTUxOYW1lczo6SFRNTFRhZ3NDb3VudDsgaSsrKSB7
Ci0gICAgICAgICAgICBpZiAoKnRhZ3NbaV0gPT0gYmdzb3VuZFRhZwotICAgICAgICAgICAgICAg
IHx8ICp0YWdzW2ldID09IGNvbW1hbmRUYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tpXSA9
PSBkZXRhaWxzVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gZmlnY2FwdGlvblRh
ZwotICAgICAgICAgICAgICAgIHx8ICp0YWdzW2ldID09IGZpZ3VyZVRhZwotICAgICAgICAgICAg
ICAgIHx8ICp0YWdzW2ldID09IHN1bW1hcnlUYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tp
XSA9PSB0cmFja1RhZykgewotICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGhhdmUg
YXRvbXMgZm9yIHRoZXNlIHRhZ3MsIHdlIGRvbid0IHdhbnQgdG8KLSAgICAgICAgICAgICAgICAv
LyB0cmVhdCB0aGVtIGFzICJyZWNvZ25pemVkIHRhZ3MiIGZvciB0aGUgcHVycG9zZSBvZiBwYXJz
aW5nCi0gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IGNoYW5nZXMgaG93IHdlIHBhcnNl
IGRvY3VtZW50cy4KKyAgICAgICAgICAgIGF1dG8mIHRhZyA9ICp0YWdzW2ldOworICAgICAgICAg
ICAgLy8gT25seSB0aGUgcGFyYW0gZWxlbWVudCB3YXMgZXhwbGljaXRseSBtZW50aW9uZWQgaW4g
dGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBydWxlCisgICAgICAgICAgICAvLyB3ZSB3ZXJlIHRyeWlu
ZyB0byBpbXBsZW1lbnQsIGJ1dCB0aGVzZSBhcmUgb3RoZXIga25vd24gSFRNTCBlbGVtZW50cyB0
aGF0IHdlCisgICAgICAgICAgICAvLyBoYXZlIGRlY2lkZWQsIG92ZXIgdGhlIHllYXJzLCB0byB0
cmVhdCBhcyBjaGlsZHJlbiB0aGF0IGRvIG5vdCBwcmV2ZW50IG9iamVjdAorICAgICAgICAgICAg
Ly8gbmFtZXMgZnJvbSBiZWluZyBleHBvc2VkLgorICAgICAgICAgICAgaWYgKHRhZyA9PSBiZ3Nv
dW5kVGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IGNvbW1hbmRUYWcKKyAgICAgICAgICAg
ICAgICB8fCB0YWcgPT0gZGV0YWlsc1RhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBmaWdj
YXB0aW9uVGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IGZpZ3VyZVRhZworICAgICAgICAg
ICAgICAgIHx8IHRhZyA9PSBwYXJhbVRhZworICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBzdW1t
YXJ5VGFnCisgICAgICAgICAgICAgICAgfHwgdGFnID09IHRyYWNrVGFnKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWFwLmFkZCh0YWdzW2ld
LT5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAgICAgICAgc2V0LmFkZCh0YWcpOwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBtYXA7CisgICAgICAgIHJldHVybiBzZXQ7CiAgICAgfSgpKTsK
LSAgICByZXR1cm4gdGFnTGlzdC5nZXQoKS5jb250YWlucyh0YWdOYW1lLmxvY2FsTmFtZSgpLmlt
cGwoKSk7CisgICAgcmV0dXJuIG1vc3RLbm93blRhZ3MuZ2V0KCkuY29udGFpbnMoY2hpbGQudGFn
UU5hbWUoKSk7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZURvY05hbWVkSXRl
bSgpCitzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhwb3N1cmUo
Y29uc3QgTm9kZSYgY2hpbGQpCiB7Ci0gICAgLy8gVGhlIHJ1bGUgaXMgIjxvYmplY3Q+IGVsZW1l
bnRzIHdpdGggbm8gY2hpbGRyZW4gb3RoZXIgdGhhbgotICAgIC8vIDxwYXJhbT4gZWxlbWVudHMs
IHVua25vd24gZWxlbWVudHMgYW5kIHdoaXRlc3BhY2UgY2FuIGJlCi0gICAgLy8gZm91bmQgYnkg
bmFtZSBpbiBhIGRvY3VtZW50LCBhbmQgb3RoZXIgPG9iamVjdD4gZWxlbWVudHMgY2Fubm90LiIK
LSAgICBib29sIHdhc05hbWVkSXRlbSA9IG1fZG9jTmFtZWRJdGVtOwotICAgIGJvb2wgaXNOYW1l
ZEl0ZW0gPSB0cnVlOwotICAgIE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwotICAgIHdoaWxl
IChjaGlsZCAmJiBpc05hbWVkSXRlbSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4oKmNoaWxk
KSkgewotICAgICAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpj
aGlsZCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIG9mIGlzUmVjb2duaXplZFRhZ05hbWUg
aXMgYWxtb3N0IGNlcnRhaW5seSB3cm9uZyBoZXJlLgotICAgICAgICAgICAgaWYgKGlzUmVjb2du
aXplZFRhZ05hbWUoZWxlbWVudC50YWdRTmFtZSgpKSAmJiAhZWxlbWVudC5oYXNUYWdOYW1lKHBh
cmFtVGFnKSkKLSAgICAgICAgICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwotICAgICAgICB9
IGVsc2UgaWYgKGlzPFRleHQ+KCpjaGlsZCkpIHsKLSAgICAgICAgICAgIGlmICghZG93bmNhc3Q8
VGV4dD4oKmNoaWxkKS5jb250YWluc09ubHlXaGl0ZXNwYWNlKCkpCi0gICAgICAgICAgICAgICAg
aXNOYW1lZEl0ZW0gPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpc05hbWVk
SXRlbSA9IGZhbHNlOwotICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOworICAg
IGlmIChpczxFbGVtZW50PihjaGlsZCkpCisgICAgICAgIHJldHVybiBwcmV2ZW50c1BhcmVudE9i
amVjdEZyb21FeHBvc3VyZShkb3duY2FzdDxFbGVtZW50PihjaGlsZCkpOworICAgIGlmIChpczxU
ZXh0PihjaGlsZCkpCisgICAgICAgIHJldHVybiAhZG93bmNhc3Q8VGV4dD4oY2hpbGQpLmNvbnRh
aW5zT25seVdoaXRlc3BhY2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIHNob3VsZEJlRXhwb3NlZChjb25zdCBIVE1MT2JqZWN0RWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVkb25lIHRvIHVzZSB0aGUgY29uY2Vw
dCBvZiBhbiBleHBvc2VkIG9iamVjdCBlbGVtZW50LAorICAgIC8vIGFzIGRvY3VtZW50ZWQgaW4g
dGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBzZWN0aW9uIGRlc2NyaWJpbmcgRE9NIHRyZWUgYWNjZXNz
b3JzLgorCisgICAgLy8gVGhlIHJ1bGUgd2UgdHJ5IHRvIGltcGxlbWVudCBoZXJlLCBmcm9tIG9s
ZGVyIEhUTUwgc3BlY2lmaWNhdGlvbnMsIGlzICJvYmplY3QgZWxlbWVudHMKKyAgICAvLyB3aXRo
IG5vIGNoaWxkcmVuIG90aGVyIHRoYW4gcGFyYW0gZWxlbWVudHMsIHVua25vd24gZWxlbWVudHMg
YW5kIHdoaXRlc3BhY2UgY2FuIGJlIGZvdW5kCisgICAgLy8gYnkgbmFtZSBpbiBhIGRvY3VtZW50
LCBhbmQgb3RoZXIgb2JqZWN0IGVsZW1lbnRzIGNhbm5vdCIuCisKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gZWxlbWVudC5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgIGlmIChwcmV2ZW50c1BhcmVudE9iamVjdEZyb21FeHBvc3VyZSgq
Y2hpbGQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoaXNOYW1l
ZEl0ZW0gIT0gd2FzTmFtZWRJdGVtICYmIGlzQ29ubmVjdGVkKCkgJiYgIWlzSW5TaGFkb3dUcmVl
KCkgJiYgaXM8SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkgewotICAgICAgICBIVE1MRG9jdW1l
bnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlRXhw
b3NlZFN0YXRlKCkKK3sKKyAgICBib29sIHdhc0V4cG9zZWQgPSBzdGQ6OmV4Y2hhbmdlKG1faXNF
eHBvc2VkLCBzaG91bGRCZUV4cG9zZWQoKnRoaXMpKTsKKworICAgIGlmIChtX2lzRXhwb3NlZCAh
PSB3YXNFeHBvc2VkICYmIGlzQ29ubmVjdGVkKCkgJiYgIWlzSW5TaGFkb3dUcmVlKCkgJiYgaXM8
SFRNTERvY3VtZW50Pihkb2N1bWVudCgpKSkgeworICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PEhUTUxEb2N1bWVudD4odGhpcy0+ZG9jdW1lbnQoKSk7CiAKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCA9IGdldElkQXR0cmlidXRlKCk7CisgICAgICAgIGF1dG8mIGlkID0g
Z2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIGlmIChpc05hbWVkSXRlbSkKKyAgICAgICAgICAgIGlmIChtX2lzRXhwb3NlZCkKICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5hZGREb2N1bWVudE5hbWVkSXRlbSgqaWQuaW1wbCgpLCAqdGhp
cyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRG9j
dW1lbnROYW1lZEl0ZW0oKmlkLmltcGwoKSwgKnRoaXMpOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOworICAgICAgICBh
dXRvJiBuYW1lID0gZ2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIW5hbWUuaXNFbXB0
eSgpICYmIGlkICE9IG5hbWUpIHsKLSAgICAgICAgICAgIGlmIChpc05hbWVkSXRlbSkKKyAgICAg
ICAgICAgIGlmIChtX2lzRXhwb3NlZCkKICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGREb2N1
bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCksICp0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBs
KCksICp0aGlzKTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2RvY05hbWVkSXRlbSA9IGlzTmFt
ZWRJdGVtOwogfQogCiBib29sIEhUTUxPYmplY3RFbGVtZW50Ojpjb250YWluc0phdmFBcHBsZXQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDZjZDE0
MDU0NzUzZWVmMDc0YjAxZjJlNGY5NDIyNzcyOWFkYTNhZmQuLmVjMDg5MjdiZTY2ZmVlMzQ4MDc1
NGQzY2Y4NjliMGMxYTgyMzgyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE9iamVj
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9y
bUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRNTE9iamVj
dEVsZW1lbnQoKTsKIAotICAgIGJvb2wgaXNEb2NOYW1lZEl0ZW0oKSBjb25zdCB7IHJldHVybiBt
X2RvY05hbWVkSXRlbTsgfQorICAgIGJvb2wgaXNFeHBvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0V4cG9zZWQ7IH0KICAgICBib29sIGNvbnRhaW5zSmF2YUFwcGxldCgpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHVwZGF0ZVdpZGdldChDcmVhdGVQbHVnaW5zKSBm
aW5hbDsKLSAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOworICAgIHZvaWQgdXBkYXRlRXhw
b3NlZFN0YXRlKCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGRl
YWwgd2l0aCB1cmwgb3Igc2VydmljZVR5cGUKICAgICAvLyBzbyB0aGF0IHdlIGNhbiBiZXR0ZXIg
c2hhcmUgY29kZSBiZXR3ZWVuIDxvYmplY3Q+IGFuZCA8ZW1iZWQ+LgpAQCAtMTAzLDggKzEwMyw4
IEBAIHByaXZhdGU6CiAKICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBib29sIG1fZG9jTmFtZWRJdGVtIDogMTsKLSAgICBib29sIG1fdXNlRmFs
bGJhY2tDb250ZW50IDogMTsKKyAgICBib29sIG1faXNFeHBvc2VkIHsgdHJ1ZSB9OworICAgIGJv
b2wgbV91c2VGYWxsYmFja0NvbnRlbnQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IDE5MzRiMzU2NTMyNTFlMzgz
ZjQ4ODU5YzExNzIwN2U2MmNmODk0ZGIuLjdlNGQzNzNkNTRjZDFkNTYzNDc4M2YzMTJjOTBmOTJk
ZDIxNjdkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMzMgKzI3LDczIEBACiAj
aW5jbHVkZSAiVGhlbWUuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkxlbmd0aEJveC5oIgorI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitpbnQgVGhlbWU6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQ
YXJ0KSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitzdGQ6Om9wdGlvbmFsPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IFRoZW1lOjpjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBmbG9hdCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQor
CitMZW5ndGhTaXplIFRoZW1lOjpjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gem9vbWVkU2l6ZTsKK30KKworTGVuZ3RoU2l6ZSBUaGVtZTo6bWluaW11bUNvbnRy
b2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAorewor
ICAgIHJldHVybiB7IHsgMCwgRml4ZWQgfSwgeyAwLCBGaXhlZCB9IH07Cit9CisKK2Jvb2wgVGhl
bWU6OmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFRoZW1lOjpwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBT
Y3JvbGxWaWV3KiwgZmxvYXQsIGZsb2F0KQoreworfQorCit2b2lkIFRoZW1lOjppbmZsYXRlQ29u
dHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVj
dCYsIGZsb2F0KSBjb25zdAoreworfQorCitib29sIFRoZW1lOjp1c2VyUHJlZmVyc1JlZHVjZWRN
b3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogTGVuZ3RoQm94IFRoZW1l
Ojpjb250cm9sQm9yZGVyKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29u
c3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0KSBjb25zdAogewogICAgIHN3aXRjaCAocGFy
dCkgewotICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIE1lbnVsaXN0
UGFydDoKLSAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFBhcnQ6Ci0gICAgICAgIGNhc2UgQ2hlY2ti
b3hQYXJ0OgotICAgICAgICBjYXNlIFJhZGlvUGFydDoKLSAgICAgICAgICAgIHJldHVybiBMZW5n
dGhCb3goMCk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gem9vbWVkQm94
OworICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6CisgICAg
Y2FzZSBTZWFyY2hGaWVsZFBhcnQ6CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgY2FzZSBS
YWRpb1BhcnQ6CisgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIHpvb21lZEJveDsKICAgICB9CiB9CiAKIExlbmd0aEJveCBUaGVtZTo6Y29u
dHJvbFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgICAgIGNhc2UgTWVudWxpc3RQYXJ0OgotICAgICAgICBjYXNlIE1lbnVsaXN0QnV0dG9u
UGFydDoKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgIGNhc2UgUmFkaW9QYXJ0
OgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiB6b29tZWRCb3g7CisgICAgY2FzZSBNZW51bGlzdFBhcnQ6CisgICAg
Y2FzZSBNZW51bGlzdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgY2Fz
ZSBSYWRpb1BhcnQ6CisgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIHpvb21lZEJveDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5oCmluZGV4IDk0MDI5ZDc3MTJmMjUxMWFiZGE4OTEzYjk2OTI5ZjEwYjA3N2FmYmYuLjU4ZDgw
OThjM2UzZjAyN2M4MWExYWIwNjY2YjZhMjdlMGI2NmU4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxMDUgKzIzLDY5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFRo
ZW1lX2gKLSNkZWZpbmUgVGhlbWVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvci5o
IgotI2luY2x1ZGUgIkNvbnRyb2xTdGF0ZXMuaCIKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgot
I2luY2x1ZGUgIkxlbmd0aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRl
ICJUaGVtZVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb250cm9sU3RhdGVz
OworY2xhc3MgRmxvYXRSZWN0OworY2xhc3MgRm9udENhc2NhZGU7CitjbGFzcyBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgTGVuZ3RoQm94Owog
Y2xhc3MgU2Nyb2xsVmlldzsKIAotLy8gVW5saWtlIG90aGVyIHBsYXRmb3JtIGNsYXNzZXMsIFRo
ZW1lIGRvZXMgZXh0ZW5zaXZlbHkgdXNlIHZpcnR1YWwgZnVuY3Rpb25zLiAgVGhpcyBkZXNpZ24g
YWxsb3dzIGEgcGxhdGZvcm0gdG8gc3dpdGNoIGJldHdlZW4gbXVsdGlwbGUgdGhlbWVzIGF0IHJ1
bnRpbWUuCitzdHJ1Y3QgTGVuZ3RoU2l6ZTsKKwogY2xhc3MgVGhlbWUgewogcHVibGljOgotICAg
IFRoZW1lKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWUoKSB7IH0KKyAgICBzdGF0aWMgVGhlbWUm
IHNpbmdsZXRvbigpOwogCi0gICAgLy8gQSBtZXRob2QgdG8gb2J0YWluIHRoZSBiYXNlbGluZSBw
b3NpdGlvbiBhZGp1c3RtZW50IGZvciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3aWxsIG9ubHkg
YmUgdXNlZCBpZiBhIGJhc2VsaW5lCisgICAgLy8gQSBmdW5jdGlvbiB0byBvYnRhaW4gdGhlIGJh
c2VsaW5lIHBvc2l0aW9uIGFkanVzdG1lbnQgZm9yIGEgImxlYWYiIGNvbnRyb2wuIFRoaXMgd2ls
bCBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5ub3QgYmUgZGV0ZXJt
aW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0
dG9ucyBhcmUgZXhhbXBsZXMgb2YKLSAgICAvLyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhp
cy4gIFRoZSBhZGp1c3RtZW50IGlzIGFuIG9mZnNldCB0aGF0IGFkZHMgdG8gdGhlIGJhc2VsaW5l
LCBlLmcuLCBtYXJnaW5Ub3AoKSArIGhlaWdodCgpICsgfG9mZnNldHwuCisgICAgLy8gY29udHJv
bHMgdGhhdCBuZWVkIHRvIGRvIHRoaXMuIFRoZSBhZGp1c3RtZW50IGlzIGFuIG9mZnNldCB0aGF0
IGFkZHMgdG8gdGhlIGJhc2VsaW5lLCBlLmcuLCBtYXJnaW5Ub3AoKSArIGhlaWdodCgpICsgfG9m
ZnNldHwuCiAgICAgLy8gVGhlIG9mZnNldCBpcyBub3Qgem9vbWVkLgotICAgIHZpcnR1YWwgaW50
IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBh
cnQpIGNvbnN0OwogCi0gICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5n
ZXMgaXRzIGFwcGVhcmFuY2Ugd2hlbiB0aGUgd2luZG93IGlzIGluYWN0aXZlLgotICAgIHZpcnR1
YWwgYm9vbCBjb250cm9sSGFzSW5hY3RpdmVBcHBlYXJhbmNlKENvbnRyb2xQYXJ0KSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIC8vIEdlbmVyYWwgbWV0aG9kcyBmb3Igd2hldGhl
ciBvciBub3QgYW55IG9mIHRoZSBjb250cm9scyBpbiB0aGUgdGhlbWUgY2hhbmdlIGFwcGVhcmFu
Y2Ugd2hlbiB0aGUgd2luZG93IGlzIGluYWN0aXZlIG9yCi0gICAgLy8gd2hlbiBob3ZlcmVkIG92
ZXIuCi0gICAgdmlydHVhbCBib29sIGNvbnRyb2xzQ2FuSGF2ZUluYWN0aXZlQXBwZWFyYW5jZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbnRyb2xzQ2FuSGF2
ZUhvdmVyZWRBcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIFVz
ZWQgYnkgUmVuZGVyVGhlbWU6OmlzQ29udHJvbFN0eWxlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBu
YXRpdmUgbG9vayBhbmQgZmVlbCBzaG91bGQgYmUgdHVybmVkIG9mZi4KLSAgICB2aXJ0dWFsIGJv
b2wgY29udHJvbERyYXdzQm9yZGVyKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBib29sIGNvbnRyb2xEcmF3c0JhY2tncm91bmQoQ29udHJvbFBhcnQpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERyYXdzRm9jdXNP
dXRsaW5lKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAvLyBNZXRo
b2RzIGZvciBvYnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgY29sb3JzLgotICAgIHZpcnR1YWwg
Q29sb3Igc2VsZWN0aW9uQ29sb3IoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBT
ZWxlY3Rpb25QYXJ0KSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAgdmlydHVhbCBDb2xv
ciB0ZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0g
ICAgCi0gICAgLy8gQ1NTIHN5c3RlbSBjb2xvcnMgYW5kIGZvbnRzCi0gICAgdmlydHVhbCBDb2xv
ciBzeXN0ZW1Db2xvcihUaGVtZUNvbG9yKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9Ci0gICAg
dmlydHVhbCBGb250Q2FzY2FkZSBzeXN0ZW1Gb250KFRoZW1lRm9udCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3QgeyByZXR1cm4gRm9udENhc2NhZGUoKTsgfQotICAgIAotICAgIC8vIEhvdyBmYXN0
IHRoZSBjYXJldCBibGlua3MgaW4gdGV4dCBmaWVsZHMuCi0gICAgdmlydHVhbCBTZWNvbmRzIGNh
cmV0QmxpbmtJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIDUwMF9tczsgfQotCi0gICAgLy8gTm90
aWZpY2F0aW9uIHdoZW4gdGhlIHRoZW1lIGhhcyBjaGFuZ2VkCi0gICAgdmlydHVhbCB2b2lkIHRo
ZW1lQ2hhbmdlZCgpIHsgfQotCi0gICAgLy8gTWV0aG9kcyB1c2VkIHRvIGFkanVzdCB0aGUgUmVu
ZGVyU3R5bGVzIG9mIGNvbnRyb2xzLgotICAgIAogICAgIC8vIFRoZSBmb250IGRlc2NyaXB0aW9u
IHJlc3VsdCBzaG91bGQgaGF2ZSBhIHpvb21lZCBmb250IHNpemUuCi0gICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KLSAgICAKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENh
c2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CisKICAgICAvLyBUaGUgc2l6ZSBoZXJlIGlz
IGluIHpvb21lZCBjb29yZGluYXRlcyBhbHJlYWR5LiBJZiBhIG5ldyBzaXplIGlzIHJldHVybmVk
LCBpdCBhbHNvIG5lZWRzIHRvIGJlIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFs
IExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwg
Y29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0
IHsgcmV0dXJuIHpvb21lZFNpemU7IH0KLSAgICAKLSAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVt
IHNpemUgZm9yIGEgY29udHJvbCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuICAKLSAgICB2aXJ0dWFs
IExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2Fz
Y2FkZSYsIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IHJldHVybiB7IHsgMCwgRml4ZWQg
fSwgeyAwLCBGaXhlZCB9IH07IH0KKyAgICB2aXJ0dWFsIExlbmd0aFNpemUgY29udHJvbFNpemUo
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVk
U2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBtaW5p
bXVtIHNpemUgZm9yIGEgY29udHJvbCBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCisgICAgdmlydHVh
bCBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKICAgICAKICAgICAvLyBBbGxvd3MgdGhl
IHRoZW1lIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgcGFkZGluZy9ib3JkZXIuCiAgICAgdmlydHVh
bCBMZW5ndGhCb3ggY29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0Owog
ICAgIHZpcnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3Ip
IGNvbnN0OwotICAgIAorCiAgICAgLy8gV2hldGhlciBvciBub3Qgd2hpdGVzcGFjZTogcHJlIHNo
b3VsZCBiZSBmb3JjZWQgb24gYWx3YXlzLgotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWly
ZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0KSBj
b25zdDsKIAogICAgIC8vIE1ldGhvZCBmb3IgcGFpbnRpbmcgYSBjb250cm9sLiBUaGUgcmVjdCBp
cyBpbiB6b29tZWQgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiAv
Knpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8sIFNjcm9sbFZpZXcqLCBmbG9hdCAv
KmRldmljZVNjYWxlRmFjdG9yKi8sIGZsb2F0IC8qcGFnZVNjYWxlRmFjdG9yKi8pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IpOwogCiAgICAgLy8gU29tZSBjb250cm9scyBtYXkgc3BpbGwgb3V0IG9mIHRoZWlyIGNvbnRh
aW5lcnMgKGUuZy4sIHRoZSBjaGVjayBvbiBhbiBPUyBYIGNoZWNrYm94KS4gIFdoZW4gdGhlc2Ug
Y29udHJvbHMgcmVwYWludCwKICAgICAvLyB0aGUgdGhlbWUgbmVlZHMgdG8gY29tbXVuaWNhdGUg
dGhpcyBpbmZsYXRlZCByZWN0IHRvIHRoZSBlbmdpbmUgc28gdGhhdCBpdCBjYW4gaW52YWxpZGF0
ZSB0aGUgd2hvbGUgY29udHJvbC4KICAgICAvLyBUaGUgcmVjdCBwYXNzZWQgaW4gaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLCBzbyB0aGUgaW5mbGF0aW9uIHNob3VsZCB0YWtlIHRoYXQgaW50byBh
Y2NvdW50IGFuZCBtYWtlIHN1cmUgdGhlIGluZmxhdGlvbgogICAgIC8vIGFtb3VudCBpcyBhbHNv
IHNjYWxlZCBieSB0aGUgem9vbUZhY3Rvci4KLSAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRy
b2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3Qm
IC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLykgY29uc3QgeyB9CisgICAgdmly
dHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250
cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9v
bCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKIAotICAgIC8v
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZh
dWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKLSAgICAvLyB0aGUg
ZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5jc3MuCi0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0
U3R5bGVTaGVldCgpOworcHJvdGVjdGVkOgorICAgIFRoZW1lKCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgflRoZW1lKCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2
ZVNlbGVjdGlvbkNvbG9yOwotICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZVNlbGVjdGlvbkNv
bG9yOworICAgIFRoZW1lKGNvbnN0IFRoZW1lJikgPSBkZWxldGU7CisgICAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgVGhlbWUmKSA9IGRlbGV0ZTsKIH07CiAKLS8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0
aGUgdGhlbWUuICBUaGlzIGlzIGltcGxlbWVudGVkIGluIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBz
dWJjbGFzc2VzLgotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKTsKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gVGhlbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VGhlbWVDb2NvYS5oCmluZGV4IGRjNTE4NDcwZDZjYjU2YWI3NTQ2MTEyMWUwYmUzYTRkYjcyNzdh
ZDQuLmUzNGJiZDAwMGUyY2U1Mzk2ZWJiZmY1MzMzMmE0NDBmMmI0MzdjNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKQEAgLTIzLDIxICsyMywxNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRoZW1lQ29jb2FfaAotI2RlZmluZSBUaGVt
ZUNvY29hX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGhlbWUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBUaGVtZUNvY29hIDogcHVibGljIFRoZW1lIHsKLXB1YmxpYzoK
LSAgICBUaGVtZUNvY29hKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVDb2NvYSgpIHsgfQotCi0g
ICAgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKK3Byb3RlY3RlZDoKKyAgICBUaGVtZUNv
Y29hKCkgPSBkZWZhdWx0OworcHJpdmF0ZToKKyAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFs
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVGhlbWVDb2NvYV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRleCA0OGIy
ZTVlNGI1MjdlYTFkYTA0ZDkzMmEzNzgwNGMwY2I1N2NlMDZjLi44NjE1MGU1YThhZTM3YmNhYWNl
MTQyZTEyYWY4YWQwMzA5NWI5Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJUaGVtZUNvY29hLmgiCiAKKyNpbXBvcnQgIkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbXBvcnQgPGRsZmNuLmg+CiAKQEAgLTUxLDYgKzUyLDcgQEAgc3Rh
dGljIHZvaWQgZml0Q29udGV4dFRvQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRTaXplJiBzcmNJbWFnZVMKIH0KIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKIHN0YXRp
YyBOU0J1bmRsZSAqcGFzc0tpdEJ1bmRsZSgpCiB7CiAgICAgc3RhdGljIE5TQnVuZGxlICpwYXNz
S2l0QnVuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9n
bGliL0dhbWVwYWRzR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2ds
aWIvR2FtZXBhZHNHbGliLmNwcAppbmRleCBiOGJkMjFhNWU4NjYyMjYyNGQzY2Q3YTlkYzgzNTJj
MjRlMjQ1ODRiLi4zYzhkZDczZmVlZDFmMzAxMTZlMWNjMzQzN2Y3ZGU0MjY0ZmU0YTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNH
bGliLmNwcApAQCAtMjEwLDggKzIxMCw4IEBAIGdib29sZWFuIEdhbWVwYWRzR2xpYjo6aXNHYW1l
cGFkRGV2aWNlKEdVZGV2RGV2aWNlKiBkZXZpY2UpCiAKIHZvaWQgc2FtcGxlR2FtZXBhZHMoR2Ft
ZXBhZExpc3QqIGludG8pCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEdh
bWVwYWRzR2xpYiwgZ2FtZXBhZHNHbGliLCAoaW50by0+bGVuZ3RoKCkpKTsKLSAgICBnYW1lcGFk
c0dsaWIudXBkYXRlR2FtZXBhZExpc3QoaW50byk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEdhbWVwYWRzR2xpYj4gZ2FtZXBhZHNHbGliKGludG8tPmxlbmd0aCgpOworICAgIGdhbWVwYWRz
R2xpYi5nZXQoKS51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCmluZGV4IGQ3YzlkNDI0YTJiZmEyMjYxNjYwNGJhZDQ1OGY2ZmJiNDIyODcyZGQuLmVm
MDdhODA0MzkwYTU5MzRlMTA2MWNlN2QzZjkxYzNjNDEwODU1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDUwICszNCw0MSBAQAogI2luY2x1
ZGUgIlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRSdW4u
aCIKICNpbmNsdWRlICJXaWR0aEl0ZXJhdG9yLmgiCi0jaWYgVVNFKENBSVJPKQotI2luY2x1ZGUg
PGNhaXJvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAorI2lmIFVTRShDQUlSTykKKyNpbmNsdWRlIDxjYWlyby5oPgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJp
ZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgUmVmUHRy
PEZvbnRTZWxlY3Rvcj4mJik7Ci0KIHN0YXRpYyBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZv
ckZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBpZiAoZmFtaWx5Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHN0YXRpYyBIYXNoU2V0PEF0b21p
Y1N0cmluZz4qIHNldDsKLSAgICBpZiAoIXNldCkgewotICAgICAgICBzZXQgPSBuZXcgSGFzaFNl
dDxBdG9taWNTdHJpbmc+OwotICAgICAgICBzZXQtPmFkZCgiTVMgUEdvdGhpYyIpOwotICAgICAg
ICBVQ2hhciB1bmljb2RlTmFtZU1TUEdvdGhpY1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAs
IDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKLSAgICAgICAgc2V0LT5h
ZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQR290aGljLCBXVEZfQVJSQVlfTEVOR1RIKHVu
aWNvZGVOYW1lTVNQR290aGljKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNUyBQTWluY2hvIik7
Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQTWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMs
IDB4MDAyMCwgMHhGRjMwLCAweDY2MEUsIDB4NjcxRH07Ci0gICAgICAgIHNldC0+YWRkKEF0b21p
Y1N0cmluZyh1bmljb2RlTmFtZU1TUE1pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFt
ZU1TUE1pbmNobykpKTsKLQotICAgICAgICBzZXQtPmFkZCgiTVMgR290aGljIik7Ci0gICAgICAg
IFVDaGFyIHVuaWNvZGVOYW1lTVNHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAw
eDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUZ9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNT
dHJpbmcodW5pY29kZU5hbWVNU0dvdGhpYywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1T
R290aGljKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNUyBNaW5jaG8iKTsKLSAgICAgICAgVUNo
YXIgdW5pY29kZU5hbWVNU01pbmNob1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4NjYw
RSwgMHg2NzFEfTsKLSAgICAgICAgc2V0LT5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNN
aW5jaG8sIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU01pbmNobykpKTsKLQotICAgICAg
ICBzZXQtPmFkZCgiTWVpcnlvIik7Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTWVpcnlvW10g
PSB7MHgzMEUxLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBfTsKLSAgICAgICAgc2V0LT5hZGQoQXRv
bWljU3RyaW5nKHVuaWNvZGVOYW1lTWVpcnlvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1l
TWVpcnlvKSkpOwotICAgIH0KLSAgICByZXR1cm4gc2V0LT5jb250YWlucyhmYW1pbHkpOworICAg
IHN0YXRpYyBjb25zdCBhdXRvIHNldCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBzZXQ7CisgICAgICAgIGF1dG8gYWRkID0gWyZzZXRdIChj
b25zdCBjaGFyKiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXI+IHVuaWNvZGVOYW1l
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gc3RybGVuKG5hbWUpOworICAg
ICAgICAgICAgc2V0LmFkZChBdG9taWNTdHJpbmcgeyBuYW1lLCBuYW1lTGVuZ3RoLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH0pOworICAgICAgICAgICAgdW5zaWduZWQgdW5p
Y29kZU5hbWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXplKCk7CisgICAgICAgICAgICBzZXQuYWRk
KEF0b21pY1N0cmluZyB7IHVuaWNvZGVOYW1lLmJlZ2luKCksIHVuaWNvZGVOYW1lTGVuZ3RoIH0p
OworICAgICAgICB9OworICAgICAgICBhZGQoIk1TIFBHb3RoaWMiLCB7IDB4RkYyRCwgMHhGRjMz
LCAweDAwMjAsIDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAg
ICAgICBhZGQoIk1TIFBNaW5jaG8iLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwg
MHg2NjBFLCAweDY3MUQgfSk7CisgICAgICAgIGFkZCgiTVMgR290aGljIiwgeyAweEZGMkQsIDB4
RkYzMywgMHgwMDIwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUYgfSk7CisgICAgICAg
IGFkZCgiTVMgTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUsIDB4Njcx
RCB9KTsKKyAgICAgICAgYWRkKCJNZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4
MzBBQSB9KTsKKyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9KCkpOworICAgIHJldHVybiBzZXQu
Z2V0KCkuY29udGFpbnMoZmFtaWx5KTsKIH0KIAogRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRD
YXNjYWRlOjpzX2NvZGVQYXRoID0gQXV0bzsKQEAgLTg4LDExICs3OSw2IEBAIEZvbnRDYXNjYWRl
OjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IEF1dG87CiAKIEZvbnRDYXNjYWRl
OjpGb250Q2FzY2FkZSgpCiAgICAgOiBtX3dlYWtQdHJGYWN0b3J5KHRoaXMpCi0gICAgLCBtX2xl
dHRlclNwYWNpbmcoMCkKLSAgICAsIG1fd29yZFNwYWNpbmcoMCkKLSAgICAsIG1fdXNlQmFja3Ns
YXNoQXNZZW5TeW1ib2woZmFsc2UpCi0gICAgLCBtX2VuYWJsZUtlcm5pbmcoZmFsc2UpCi0gICAg
LCBtX3JlcXVpcmVzU2hhcGluZyhmYWxzZSkKIHsKIH0KIApAQCAtMTExLDkgKzk3LDYgQEAgRm9u
dENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZkLCBm
bG9hdCBsZXR0ZXJTcGFjaW5nLAogRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIGZvbnREYXRhLCBGb250U21vb3RoaW5nTW9kZSBmb250U21vb3RoaW5nTW9k
ZSkKICAgICA6IG1fZm9udHMoRm9udENhc2NhZGVGb250czo6Y3JlYXRlRm9yUGxhdGZvcm1Gb250
KGZvbnREYXRhKSkKICAgICAsIG1fd2Vha1B0ckZhY3RvcnkodGhpcykKLSAgICAsIG1fbGV0dGVy
U3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwgbV91c2VCYWNrc2xhc2hB
c1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRlRW5hYmxlS2Vy
bmluZygpKQogICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgK
aW5kZXggNzcxYzZmYmU2YzI0YjhhNDZmMmQwYmE2NTI0OWUwNTFmYTYxZTI4ZS4uM2NkMjE0NDI3
Y2M5Y2EzOWNiNGY1NTFlZjNhY2YyYWMxNmFlM2M5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDYsIDIwMDcsIDIwMTAsIDIwMTEtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0yMiwxNSArMjIsMTMgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBG
b250Q2FzY2FkZV9oCi0jZGVmaW5lIEZvbnRDYXNjYWRlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRGFzaEFycmF5LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYXNj
YWRlRm9udHMuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJQYXRo
LmgiCi0jaW5jbHVkZSAiVGV4dEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDQs
MTMgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGbG9hdFBvaW50Owot
Y2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRm9udERhdGE7Ci1jbGFzcyBGb250TWV0cmljczsKLWNs
YXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBGb250U2VsZWN0b3I7Ci1jbGFzcyBHbHlwaEJ1
ZmZlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIExheW91dFJlY3Q7CiBjbGFzcyBS
ZW5kZXJUZXh0OwpAQCAtNjAsMjEgKzUxLDEyIEBAIGNsYXNzIFRleHRSdW47CiBzdHJ1Y3QgR2x5
cGhEYXRhOwogCiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7Ci0gICAgR2x5cGhPdmVyZmxvdygpCi0g
ICAgICAgIDogbGVmdCgwKQotICAgICAgICAsIHJpZ2h0KDApCi0gICAgICAgICwgdG9wKDApCi0g
ICAgICAgICwgYm90dG9tKDApCi0gICAgICAgICwgY29tcHV0ZUJvdW5kcyhmYWxzZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgaW5saW5lIGJvb2wgaXNFbXB0eSgpCisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbGVmdCAmJiAhcmlnaHQgJiYgIXRvcCAmJiAh
Ym90dG9tOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIGV4dGVuZFRvKGNvbnN0IEdseXBoT3Zl
cmZsb3cmIG90aGVyKQorICAgIHZvaWQgZXh0ZW5kVG8oY29uc3QgR2x5cGhPdmVyZmxvdyYgb3Ro
ZXIpCiAgICAgewogICAgICAgICBsZWZ0ID0gc3RkOjptYXgobGVmdCwgb3RoZXIubGVmdCk7CiAg
ICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIG90aGVyLnJpZ2h0KTsKQEAgLTg0LDE0ICs2
NiwxNSBAQCBzdHJ1Y3QgR2x5cGhPdmVyZmxvdyB7CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgR2x5cGhPdmVyZmxvdyYgb3RoZXIpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogUHJvYmFi
bHkgc2hvdWxkIG5hbWUgdGhpcyByYXRoZXIgdGhhbiBtYWtpbmcgaXQgdGhlICE9IG9wZXJhdG9y
IHNpbmNlIGl0IGlnbm9yZXMgdGhlIHZhbHVlIG9mIGNvbXB1dGVCb3VuZHMuCiAgICAgICAgIHJl
dHVybiBsZWZ0ICE9IG90aGVyLmxlZnQgfHwgcmlnaHQgIT0gb3RoZXIucmlnaHQgfHwgdG9wICE9
IG90aGVyLnRvcCB8fCBib3R0b20gIT0gb3RoZXIuYm90dG9tOwogICAgIH0KIAotICAgIGludCBs
ZWZ0OwotICAgIGludCByaWdodDsKLSAgICBpbnQgdG9wOwotICAgIGludCBib3R0b207Ci0gICAg
Ym9vbCBjb21wdXRlQm91bmRzOworICAgIGludCBsZWZ0IHsgMCB9OworICAgIGludCByaWdodCB7
IDAgfTsKKyAgICBpbnQgdG9wIHsgMCB9OworICAgIGludCBib3R0b20geyAwIH07CisgICAgYm9v
bCBjb21wdXRlQm91bmRzIHsgZmFsc2UgfTsKIH07CiAKIGNsYXNzIEdseXBoVG9QYXRoVHJhbnNs
YXRvciB7CkBAIC0zMjUsMTEgKzMwOCwxMSBAQCBwcml2YXRlOgogICAgIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24gbV9mb250RGVzY3JpcHRpb247CiAgICAgbXV0YWJsZSBSZWZQdHI8Rm9udENhc2Nh
ZGVGb250cz4gbV9mb250czsKICAgICBXZWFrUHRyRmFjdG9yeTxGb250Q2FzY2FkZT4gbV93ZWFr
UHRyRmFjdG9yeTsKLSAgICBmbG9hdCBtX2xldHRlclNwYWNpbmc7Ci0gICAgZmxvYXQgbV93b3Jk
U3BhY2luZzsKLSAgICBtdXRhYmxlIGJvb2wgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbDsKLSAg
ICBtdXRhYmxlIHVuc2lnbmVkIG1fZW5hYmxlS2VybmluZyA6IDE7IC8vIENvbXB1dGVkIGZyb20g
bV9mb250RGVzY3JpcHRpb24uCi0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX3JlcXVpcmVzU2hhcGlu
ZyA6IDE7IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCisgICAgZmxvYXQgbV9s
ZXR0ZXJTcGFjaW5nIHsgMCB9OworICAgIGZsb2F0IG1fd29yZFNwYWNpbmcgeyAwIH07CisgICAg
bXV0YWJsZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgeyBmYWxzZSB9OworICAgIG11
dGFibGUgYm9vbCBtX2VuYWJsZUtlcm5pbmcgeyBmYWxzZSB9OyAvLyBDb21wdXRlZCBmcm9tIG1f
Zm9udERlc2NyaXB0aW9uLgorICAgIG11dGFibGUgYm9vbCBtX3JlcXVpcmVzU2hhcGluZyB7IGZh
bHNlIH07IC8vIENvbXB1dGVkIGZyb20gbV9mb250RGVzY3JpcHRpb24uCiB9OwogCiB2b2lkIGlu
dmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKCk7CkBAIC0zNzAsNSArMzUzLDMgQEAgaW5saW5lIGZs
b2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250JiBmb250LCB1bnNpZ25lZCB0YWJT
aXplLCBmbG9hdCBwb3MKIH0KIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3Bw
CmluZGV4IGEzMDBlMGYxYjg4NDVlNzI0MzIzNjkzYzAzZTU3ZGQxNmEyM2M0ODMuLjBhZjMzMDI4
NDA2Y2U3ZTk1MzI0ZThiN2YzYzRjOGMxMTdlNzA1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogICAgICAgICBj
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCks
IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAgICAgY29udGV4dC50cmFu
c2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogCi0gICAgcGxhdGZvcm1UaGVtZSgp
LT5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRzdFJlY3QpOworICAgIFRoZW1lOjpz
aW5nbGV0b24oKS5kcmF3TmFtZWRJbWFnZShtX25hbWUsIGNvbnRleHQsIGRzdFJlY3QpOwogICAg
IHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIHBsYXRmb3JtVGhlbWUoKS0+ZHJhd05hbWVkSW1h
Z2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgo
KSwgc2l6ZSgpLmhlaWdodCgpKSk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZElt
YWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRo
KCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGlu
dG8gdGhlIGNvbnRleHQuCiAgICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRz
dFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGI0ZmFkMDc5MWEwMGFkYjJj
NTNkZjU3NzJiNTAzZmY5YmYzMWQzNWQuLmY4ZWY0ZDViZTQ0YTc1YWJhMjRlNzYzNTI5NmY5MjFi
MTZlODFiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtMjY1LDIyICsyNjUsMTkgQEAgc3RhdGlj
IENGQXJyYXlSZWYgbWV0YWRhdGFLZXlOYW1lcygpCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0
dGVyIGlmIEFWQ0ZUaW1lZE1ldGFkYXRhR3JvdXAuaCBleHBvcnRlZCB0aGlzIGtleS4KIHN0YXRp
YyBDRlN0cmluZ1JlZiBDTVRpbWVSYW5nZVN0YXJ0S2V5KCkKIHsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIGtleSwgKENGU1RSKCJzdGFydCIpKSk7Ci0g
ICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gQ0ZTVFIoInN0YXJ0Iik7CiB9CiAKIC8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVkTWV0YWRhdGFHcm91cC5oIGV4cG9ydGVk
IHRoaXMga2V5Lgogc3RhdGljIENGU3RyaW5nUmVmIENNVGltZVJhbmdlRHVyYXRpb25LZXkoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDRlN0cmluZ1JlZiwga2V5LCAo
Q0ZTVFIoImR1cmF0aW9uIikpKTsKLSAgICByZXR1cm4ga2V5OworICAgIHJldHVybiBDRlNUUigi
ZHVyYXRpb24iKTsKIH0KIAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiBBVkNGIGV4
cG9ydGVkIHRoaXMgbm90aWZpY2F0aW9uIG5hbWUuCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgQ0FDRkNv
bnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQ0ZTdHJpbmdSZWYsIG5hbWUsIChDRlNUUigia0NBQ0ZDb250ZXh0TmVlZHNG
bHVzaE5vdGlmaWNhdGlvbiIpKSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIENGU1RS
KCJrQ0FDRkNvbnRleHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uIik7CiB9CiAKIC8vIERlZmluZSBB
VkNGIG9iamVjdCBhY2Nlc3NvcnMgYXMgaW5saW5lIGZ1bmN0aW9ucyBoZXJlIGluc3RlYWQgb2Yg
aW4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Ygc28gd2UgZG9uJ3QgaGF2ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hh
bmdlc0ZsdXNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCmluZGV4IDBkYjg4Yzg1YmNkOGEwNjgzNDIxNThjYTNk
NzE3OWZjNWE0Njk3MGUuLjQxM2M5MGJkZDU2YWRjOWYxMzc3OTZhNDdlYzczZmU4NTQ0MjA5MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXll
ckNoYW5nZXNGbHVzaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVk
RXhjZXB0aW9uSGFuZGxlclN1cHByZXNzb3IuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTGF5ZXJDaGFu
Z2VzRmx1c2hlciYgTGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2luZ2xldG9uKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTGF5ZXJDaGFuZ2VzRmx1c2hlciwgZmx1c2hlciwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMYXllckNoYW5nZXNGbHVzaGVyPiBmbHVz
aGVyOwogICAgIHJldHVybiBmbHVzaGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuaApp
bmRleCAyOGU2NmI5ODUzOWYwM2Q3MTE0ZTZhODIwNzIwMTRmZTE2YmYwZDIwLi44ZDA2NGVmMjAy
YmNmZDRhOWFlMGRkOWQ4ZGU5ZTU3MjJlYzg4NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVy
LmgKQEAgLTIzLDEwICsyMywxMCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIExh
eWVyQ2hhbmdlc0ZsdXNoZXJfaAotI2RlZmluZSBMYXllckNoYW5nZXNGbHVzaGVyX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IApAQCAtNDMsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nRmx1c2go
QWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCopOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBOZXZl
ckRlc3Ryb3llZDxMYXllckNoYW5nZXNGbHVzaGVyPjsKICAgICBMYXllckNoYW5nZXNGbHVzaGVy
KCk7CiAgICAgfkxheWVyQ2hhbmdlc0ZsdXNoZXIoKTsKIApAQCAtNTcsNSArNTgsMyBAQCBwcml2
YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gTGF5ZXJDaGFu
Z2VzRmx1c2hlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZVNvdXJjZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwCmluZGV4IDgwODgzMGI4Yjg1N2JkMjg2YjgzZmU4
ZDQ0YzQ2YTk0MTcwOTdhMzUuLjZkNTM3MzdiY2VjM2E3MjYyN2ZhMzY1MGVlZDUxZWRkMGJiOGJk
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxNyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDM5ICs0NiwzNyBAQCBTdHJpbmcgTUlNRVR5cGVGb3JJ
bWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBTdHJpbmcgcHJlZmVycmVkRXh0
ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBpZiAo
dHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHR5cGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gU3RyaW5nTWFw
OwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmdNYXAsIFVUSU1hcCwg
KCkpOwotICAgIGlmIChVVElNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1
YmxpYy5odG1sIiwgImh0bWwiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLmpwZWciLCAi
anBlZyIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMuanBlZy0yMDAwIiwgImpwMiIpOwot
ICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMucGxhaW4tdGV4dCIsICJ0eHQiKTsKLSAgICAgICAg
VVRJTWFwLmFkZCgicHVibGljLnBuZyIsICJwbmciKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVi
bGljLnRpZmYiLCAidGlmZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMueGJpdG1hcC1p
bWFnZSIsICJ4Ym0iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgicHVibGljLnhtbCIsICJ4bWwiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLmlsbHVzdHJhdG9yLmFpLWltYWdlIiwgImFp
Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wZGYiLCAicGRmIik7Ci0gICAgICAg
IFVUSU1hcC5hZGQoImNvbS5hZG9iZS5waG90b3Nob3AtaW1hZ2UiLCAicHNkIik7Ci0gICAgICAg
IFVUSU1hcC5hZGQoImNvbS5hZG9iZS5wb3N0c2NyaXB0IiwgInBzIik7Ci0gICAgICAgIFVUSU1h
cC5hZGQoImNvbS5hcHBsZS5pY25zIiwgImljbnMiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29t
LmFwcGxlLm1hY3BhaW50LWltYWdlIiwgInBudGciKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29t
LmFwcGxlLnBpY3QiLCAicGljdCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYXBwbGUucXVp
Y2t0aW1lLWltYWdlIiwgInF0aWYiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFwcGxlLndl
YmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uY29tcHVz
ZXJ2ZS5naWYiLCAiZ2lmIik7ICAgICAgICAKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmlsbS5v
cGVuZXhyLWltYWdlIiwgImV4ciIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ua29kYWsuZmxh
c2hwaXgtaW1hZ2UiLCAiZnB4Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5taWNyb3NvZnQu
Ym1wIiwgImJtcCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubWljcm9zb2Z0LmljbyIsICJp
Y28iKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLm5ldHNjYXBlLmphdmFzY3JpcHQtc291cmNl
IiwgImpzIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5zZ2kuc2dpLWltYWdlIiwgInNnaSIp
OwotICAgICAgICBVVElNYXAuYWRkKCJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2UiLCAidGdhIik7
Ci0gICAgfQotICAgIHJldHVybiBVVElNYXAuZ2V0KHR5cGUpOworICAgIHN0YXRpYyBjb25zdCBh
dXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChIYXNoTWFwPFN0cmluZywgU3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsKKyAgICAgICAgeyAicHVibGljLmh0bWwiLCAiaHRtbCIg
fSwKKyAgICAgICAgeyAicHVibGljLmpwZWciLCAianBlZyIgfSwKKyAgICAgICAgeyAicHVibGlj
LmpwZWctMjAwMCIsICJqcDIiIH0sCisgICAgICAgIHsgInB1YmxpYy5wbGFpbi10ZXh0IiwgInR4
dCIgfSwKKyAgICAgICAgeyAicHVibGljLnBuZyIsICJwbmciIH0sCisgICAgICAgIHsgInB1Ymxp
Yy50aWZmIiwgInRpZmYiIH0sCisgICAgICAgIHsgInB1YmxpYy54Yml0bWFwLWltYWdlIiwgInhi
bSIgfSwKKyAgICAgICAgeyAicHVibGljLnhtbCIsICJ4bWwiIH0sCisgICAgICAgIHsgImNvbS5h
ZG9iZS5pbGx1c3RyYXRvci5haS1pbWFnZSIsICJhaSIgfSwKKyAgICAgICAgeyAiY29tLmFkb2Jl
LnBkZiIsICJwZGYiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5waG90b3Nob3AtaW1hZ2UiLCAi
cHNkIiB9LAorICAgICAgICB7ICJjb20uYWRvYmUucG9zdHNjcmlwdCIsICJwcyIgfSwKKyAgICAg
ICAgeyAiY29tLmFwcGxlLmljbnMiLCAiaWNucyIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLm1h
Y3BhaW50LWltYWdlIiwgInBudGciIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5waWN0IiwgInBp
Y3QiIH0sCisgICAgICAgIHsgImNvbS5hcHBsZS5xdWlja3RpbWUtaW1hZ2UiLCAicXRpZiIgfSwK
KyAgICAgICAgeyAiY29tLmFwcGxlLndlYmFyY2hpdmUiLCAid2ViYXJjaGl2ZSIgfSwKKyAgICAg
ICAgeyAiY29tLmNvbXB1c2VydmUuZ2lmIiwgImdpZiIgfSwKKyAgICAgICAgeyAiY29tLmlsbS5v
cGVuZXhyLWltYWdlIiwgImV4ciIgfSwKKyAgICAgICAgeyAiY29tLmtvZGFrLmZsYXNocGl4LWlt
YWdlIiwgImZweCIgfSwKKyAgICAgICAgeyAiY29tLm1pY3Jvc29mdC5ibXAiLCAiYm1wIiB9LAor
ICAgICAgICB7ICJjb20ubWljcm9zb2Z0LmljbyIsICJpY28iIH0sCisgICAgICAgIHsgImNvbS5u
ZXRzY2FwZS5qYXZhc2NyaXB0LXNvdXJjZSIsICJqcyIgfSwKKyAgICAgICAgeyAiY29tLnNnaS5z
Z2ktaW1hZ2UiLCAic2dpIiB9LAorICAgICAgICB7ICJjb20udHJ1ZXZpc2lvbi50Z2EtaW1hZ2Ui
LCAidGdhIiB9LAorICAgIH0pOworICAgIHJldHVybiBtYXAuZ2V0KCkuZ2V0KHR5cGUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcAppbmRleCA4M2ZmMjdl
YTUyNTYyMjhhOGQ1NzViYWVmMTdjNjc1NjU2YzIxN2E0Li43OTE5NWEyMzUxN2E5NmY3ZDgxNzYy
MzdkMWE0ODI3MDVjMzY4ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSA8aGItb3QuaD4KICNp
bmNsdWRlIDxoYi5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTc0LDggKzc1LDggQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8RmFjZUNhY2hlRW50cnk+LCBXVEY6OkludEhhc2g8dWludDY0X3Q+LCBXVEY6OlUK
IAogc3RhdGljIEhhcmZCdXp6RmFjZUNhY2hlKiBoYXJmQnV6ekZhY2VDYWNoZSgpCiB7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEhhcmZCdXp6RmFjZUNhY2hlLCBzX2hhcmZC
dXp6RmFjZUNhY2hlLCAoKSk7Ci0gICAgcmV0dXJuICZzX2hhcmZCdXp6RmFjZUNhY2hlOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXJmQnV6ekZhY2VDYWNoZT4gc19oYXJmQnV6ekZhY2VD
YWNoZTsKKyAgICByZXR1cm4gJnNfaGFyZkJ1enpGYWNlQ2FjaGUuZ2V0KCk7CiB9CiAKIEhhcmZC
dXp6RmFjZTo6SGFyZkJ1enpGYWNlKEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSwgdWlu
dDY0X3QgdW5pcXVlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDc4MWI2ZjgwMzhkY2RmZTI3YzM2MTM4Mzc0
NmFhYWZjZjA3MmVhNjkuLmFjZmU3OWU2YWI0MjY3YTVlNWIyNjcxNWJiNzMwZTdkNjhhY2VkMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2Fj
aGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwCkBAIC0zNDAsOCArMzQwLDkgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6
Zm9udEZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb24K
IAogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmYWxsYmFja0ZvbnROYW1lLCAoKSk7Ci0gICAgaWYg
KCFmYWxsYmFja0ZvbnROYW1lLmlzRW1wdHkoKSkKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
QXRvbWljU3RyaW5nPiBmYWxsYmFja0ZvbnROYW1lOworCisgICAgaWYgKCFmYWxsYmFja0ZvbnRO
YW1lLmdldCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICpmb250Rm9yRmFtaWx5KGZvbnRE
ZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250TmFtZSk7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUg
ZXZlbiBiZXR0ZXIgdG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4g
IEZvciBub3cgd2UnbGwgcGljawpAQCAtMzYwLDcgKzM2MSw3IEBAIFJlZjxGb250PiBGb250Q2Fj
aGU6Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpCiAgICAgUmVmUHRyPEZvbnQ+IHNpbXBsZUZvbnQ7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGZhbGxiYWNrRm9udHMpOyArK2kpIHsKICAgICAgICAg
aWYgKHNpbXBsZUZvbnQgPSBmb250Rm9yRmFtaWx5KGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tG
b250c1tpXSkpIHsKLSAgICAgICAgICAgIGZhbGxiYWNrRm9udE5hbWUgPSBmYWxsYmFja0ZvbnRz
W2ldOworICAgICAgICAgICAgZmFsbGJhY2tGb250TmFtZS5nZXQoKSA9IGZhbGxiYWNrRm9udHNb
aV07CiAgICAgICAgICAgICByZXR1cm4gKnNpbXBsZUZvbnQ7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5oCmluZGV4IDM3N2I4MjI2ZTRhZjgxM2Rm
OWVmNTBlNjIxNzA0MjU5ZDQ4YTk4MjkuLjcwYjYxYWJhYWY5ZDBkNGMzMTQ3YWY3ZGZiNGY5YjZm
ODdkODI5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlP
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5oCkBAIC0yMywy
MSArMjMsMTUgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhlbWVJT1NfaAot
I2RlZmluZSBUaGVtZUlPU19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRoZW1lQ29jb2Eu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZUlPUyA6IHB1YmxpYyBUaGVt
ZUNvY29hIHsKLXB1YmxpYzoKLSAgICBUaGVtZUlPUygpIHsgfQotICAgIHZpcnR1YWwgflRoZW1l
SU9TKCkgeyB9Ci0KLSAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworY2xhc3MgVGhlbWVJT1MgZmluYWwgOiBwdWJsaWMgVGhlbWVDb2NvYSB7Citwcml2
YXRlOgorICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QgZmluYWw7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZUlPU19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVGhlbWVJT1MubW0KaW5kZXggMDcyMGQ2NDZkOTUwMjAyNmIy
MjRiYzA2ZjVlZGQ5YzRlYzA3ZDVkZS4uMzE1MDJjYmFhMDE0Y2QwNjU3ZmI3N2RkNWVlZjk2OTdi
NDFmNDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSAr
MjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUaGVtZUlPUy5oIgogCi0jaW1w
b3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJ
S2l0KQogU09GVF9MSU5LKFVJS2l0LCBVSUFjY2Vzc2liaWxpdHlJc1JlZHVjZU1vdGlvbkVuYWJs
ZWQsIEJPT0wsICh2b2lkKSwgKCkpCkBAIC0zOSwxMiArMzYsMTAgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBGSVhNRTogSW1wbGVtZW50IGJlZm9y
ZSBlbmFibGluZyBVU0UoTkVXX1RIRU1FKS4KLQotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQorVGhl
bWUmIFRoZW1lOjpzaW5nbGV0b24oKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVt
ZUlPUz4gdGhlbWVJT1M7Ci0gICAgcmV0dXJuICZ0aGVtZUlPUy5nZXQoKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGhlbWVJT1M+IHRoZW1lOworICAgIHJldHVybiB0aGVtZTsKIH0KIAog
Ym9vbCBUaGVtZUlPUzo6dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggYjM0NmE2NWVkMDE2YTQ4MDc5MTA0ZTkz
ZTI4NTg0YTYyYjBjYWYzYy4uZTJjMzQwNjRiMjdkNjg5YjgyNTM1YWY1NGM4MjAwNDdjODkzZGI5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDYgKzIzLDM4IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFRoZW1lTWFjX2gKLSNkZWZpbmUgVGhl
bWVNYWNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUaGVtZUNvY29hLmgiCiAKLUBpbnRl
cmZhY2UgTlNGb250KFdlYkNvcmVUaGVtZSkKLS0gKE5TU3RyaW5nKil3ZWJDb3JlRmFtaWx5TmFt
ZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBUaGVtZU1hYyA6IHB1Ymxp
YyBUaGVtZUNvY29hIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFRoZW1l
TWFjIGZpbmFsIDogcHVibGljIFRoZW1lQ29jb2EgewogcHVibGljOgotICAgIFRoZW1lTWFjKCkg
eyB9Ci0gICAgdmlydHVhbCB+VGhlbWVNYWMoKSB7IH0KLSAgICAKLSAgICBpbnQgYmFzZWxpbmVQ
b3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0YXRp
YyBOU1ZpZXcgKmVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3RhdGVzJiwg
Ym9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRGb2N1
c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3ICosIGJvb2wgZHJhd0J1dHRvbkNlbGwsIGJvb2wg
ZHJhd0ZvY3VzUmluZywgYm9vbCB1c2VJbWFnZUJ1ZmZlciwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IpOwogCi0gICAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9s
Rm9udChDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBj
b25zdCBvdmVycmlkZTsKLSAgICAKLSAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQ
YXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCB6b29tRmFj
dG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBv
dmVycmlkZTsKK3ByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFRoZW1lTWFjPjsK
KyAgICBUaGVtZU1hYygpID0gZGVmYXVsdDsKIAotICAgIExlbmd0aEJveCBjb250cm9sUGFkZGlu
ZyhDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21l
ZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGVuZ3RoQm94IGNv
bnRyb2xCb3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3Ro
Qm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOworICAgIGlu
dCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3QgZmluYWw7CiAK
LSAgICBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQorICAgIHN0
ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29udHJvbFBh
cnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CiAK
LSAgICB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIG92ZXJyaWRlOwot
ICAgIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENvbnRy
b2xTdGF0ZXMmLCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKyAg
ICBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgdXNlclBy
ZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGVuZ3RoQm94IGNvbnRy
b2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJv
eCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5hbDsKKyAgICBMZW5ndGhC
b3ggY29udHJvbEJvcmRlcihDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBM
ZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QgZmluYWw7CiAKLSAg
ICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2Ug
VGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0byBUaGVtZU1hYy4KLSAgICBzdGF0aWMg
TlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3KiwgY29uc3QgQ29udHJvbFN0YXRlcyYsIGJv
b2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBmYWxzZSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNS
aW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgc3RhdGljIGJvb2wgZHJhd0NlbGxP
ckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9vbCAvKiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9v
bCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVzZUltYWdlQnVmZmVyICovLCBmbG9hdCAv
KiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CisgICAgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0
ZVNwYWNlKENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHBhcnQgPT0gUHVz
aEJ1dHRvblBhcnQ7IH0KKworICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0
ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9y
LCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcikgZmluYWw7CisgICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFy
dCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0IGZpbmFsOworCisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBm
aW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFRoZW1lTWFj
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAyZTFiMmNiNjdl
MGRhNjIxMTViMGFkODI1OGQ3MTU3YzE5YTQ3MDcyLi4wZTU5NThiNWJlZGI0NzY3OTg3OTRhYWUy
Yjk1OGY1YjM3ZjNlYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEzLDcgKzEzLDcgQEAKICAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKICAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKICAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCkBAIC0yNyw4ICsyNywxMCBAQAogI2ltcG9ydCAiVGhlbWVNYWMuaCIKIAogI2ltcG9ydCAi
QVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQ29udHJvbFN0YXRlcy5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJJbWFnZUJ1ZmZlci5oIgorI2ltcG9ydCAiTGVuZ3Ro
U2l6ZS5oIgogI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJOU0J1dHRvbkNlbGxTUEkuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKQEAgLTQ0LDYgKzQ2
LDkgQEAgc3RhdGljIEJPT0wgdGhlbWVXaW5kb3dIYXNLZXlBcHBlYXJhbmNlOwogQGludGVyZmFj
ZSBXZWJDb3JlVGhlbWVXaW5kb3cgOiBOU1dpbmRvdwogQGVuZAogCitAaW50ZXJmYWNlIFdlYkNv
cmVUaGVtZVZpZXcgOiBOU0NvbnRyb2wKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVU
aGVtZVdpbmRvdwogCiAtIChCT09MKWhhc0tleUFwcGVhcmFuY2UKQEAgLTU4LDkgKzYzLDYgQEAg
LSAoQk9PTClpc0tleVdpbmRvdwogCiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZVRoZW1lVmll
dyA6IE5TQ29udHJvbAotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVRoZW1lVmlldwog
CiAtIChOU1dpbmRvdyAqKXdpbmRvdwpAQCAtMTA4LDE4ICsxMTAsNiBAQCAtICh2b2lkKWFkZFN1
YnZpZXc6KE5TVmlldyopc3VidmlldwogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBOU0ZvbnQg
KFdlYkNvcmVUaGVtZSkKLQotLSAoTlNTdHJpbmcqKXdlYkNvcmVGYW1pbHlOYW1lCi17Ci0gICAg
aWYgKFtbc2VsZiBmYW1pbHlOYW1lXSBoYXNQcmVmaXg6QCIuIl0pCi0gICAgICAgIHJldHVybiBb
c2VsZiBmb250TmFtZV07Ci0KLSAgICByZXR1cm4gW3NlbGYgZmFtaWx5TmFtZV07Ci19Ci0KLUBl
bmQKLQogLy8gRklYTUU6IERlZmF1bHQgYnV0dG9ucyByZWFsbHkgc2hvdWxkIGJlIG1vcmUgbGlr
ZSBwdXNoIGJ1dHRvbnMgYW5kIG5vdCBsaWtlIGJ1dHRvbnMuCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTEzMSwxMCArMTIxLDEwIEBAIGVudW0gewogICAgIGxlZnRNYXJnaW4KIH07CiAKLVRo
ZW1lKiBwbGF0Zm9ybVRoZW1lKCkKK1RoZW1lJiBUaGVtZTo6c2luZ2xldG9uKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGhlbWVNYWM+IHRoZW1lTWFjOwotICAgIHJldHVybiAmdGhl
bWVNYWMuZ2V0KCk7CisgICAgcmV0dXJuIHRoZW1lTWFjOwogfQogCiAvLyBIZWxwZXIgZnVuY3Rp
b25zIHVzZWQgYnkgYSBidW5jaCBvZiBkaWZmZXJlbnQgY29udHJvbCBwYXJ0cy4KQEAgLTI0MSw4
ICsyMzEsOCBAQCBzdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLAogCiBzdGF0aWMgRmxvYXRSZWN0IGlu
ZmxhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgY29uc3QgSW50U2l6ZSYgem9v
bWVkU2l6ZSwgY29uc3QgaW50KiBtYXJnaW5zLCBmbG9hdCB6b29tRmFjdG9yKQogewotICAgIC8v
IE9ubHkgZG8gdGhlIGluZmxhdGlvbiBpZiB0aGUgYXZhaWxhYmxlIHdpZHRoL2hlaWdodCBhcmUg
dG9vIHNtYWxsLiAgT3RoZXJ3aXNlIHRyeSB0bwotICAgIC8vIGZpdCB0aGUgZ2xvdy9jaGVjayBz
cGFjZSBpbnRvIHRoZSBhdmFpbGFibGUgYm94J3Mgd2lkdGgvaGVpZ2h0LgorICAgIC8vIE9ubHkg
ZG8gdGhlIGluZmxhdGlvbiBpZiB0aGUgYXZhaWxhYmxlIHdpZHRoL2hlaWdodCBhcmUgdG9vIHNt
YWxsLgorICAgIC8vIE90aGVyd2lzZSB0cnkgdG8gZml0IHRoZSBnbG93L2NoZWNrIHNwYWNlIGlu
dG8gdGhlIGF2YWlsYWJsZSBib3gncyB3aWR0aC9oZWlnaHQuCiAgICAgaW50IHdpZHRoRGVsdGEg
PSB6b29tZWRSZWN0LndpZHRoKCkgLSAoem9vbWVkU2l6ZS53aWR0aCgpICsgbWFyZ2luc1tsZWZ0
TWFyZ2luXSAqIHpvb21GYWN0b3IgKyBtYXJnaW5zW3JpZ2h0TWFyZ2luXSAqIHpvb21GYWN0b3Ip
OwogICAgIGludCBoZWlnaHREZWx0YSA9IHpvb21lZFJlY3QuaGVpZ2h0KCkgLSAoem9vbWVkU2l6
ZS5oZWlnaHQoKSArIG1hcmdpbnNbdG9wTWFyZ2luXSAqIHpvb21GYWN0b3IgKyBtYXJnaW5zW2Jv
dHRvbU1hcmdpbl0gKiB6b29tRmFjdG9yKTsKICAgICBGbG9hdFJlY3QgcmVzdWx0KHpvb21lZFJl
Y3QpOwpAQCAtNjg5LDM3ICs2NzksMzcgQEAgaW50IFRoZW1lTWFjOjpiYXNlbGluZVBvc2l0aW9u
QWRqdXN0bWVudChDb250cm9sUGFydCBwYXJ0KSBjb25zdAogc3RkOjpvcHRpb25hbDxGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwg
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAg
c3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKLSAgICAgICAg
ICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOwotCi0gICAgICAgICAgICBO
U0ZvbnQqIG5zRm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZv
bnRTaXplRm9yQ29udHJvbFNpemU6Y29udHJvbFNpemVGb3JGb250KGZvbnQpXV07Ci0gICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0b21pY1N0cmluZygiLWFwcGxlLXN5
c3RlbSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9v
bUZhY3Rvcik7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShb
bnNGb250IHBvaW50U2l6ZV0gKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJldHVybiBmb250
RGVzY3JpcHRpb247Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBUaGVtZTo6Y29udHJvbEZvbnQocGFydCwgZm9udCwgem9vbUZhY3Rvcik7CisgICAgY2Fz
ZSBQdXNoQnV0dG9uUGFydDogeworICAgICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbjsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRy
dWUpOworCisgICAgICAgIE5TRm9udCogbnNGb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXpl
OltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpjb250cm9sU2l6ZUZvckZvbnQo
Zm9udCldXTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseShBdG9taWNTdHJp
bmcoIi1hcHBsZS1zeXN0ZW0iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoW25zRm9udCBwb2ludFNp
emVdICogem9vbUZhY3Rvcik7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRT
aXplKFtuc0ZvbnQgcG9pbnRTaXplXSAqIHpvb21GYWN0b3IpOworICAgICAgICByZXR1cm4gZm9u
dERlc2NyaXB0aW9uOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIH0KIAogTGVuZ3RoU2l6ZSBUaGVtZU1hYzo6Y29udHJvbFNpemUoQ29u
dHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IExlbmd0aFNpemUm
IHpvb21lZFNpemUsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0
KSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgotICAgICAgICAgICAgcmV0dXJuIGNoZWNr
Ym94U2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKLSAgICAgICAgY2FzZSBSYWRp
b1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gcmFkaW9TaXplKGZvbnQsIHpvb21lZFNpemUsIHpv
b21GYWN0b3IpOwotICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgotICAgICAgICAgICAgLy8g
SGVpZ2h0IGlzIHJlc2V0IHRvIGF1dG8gc28gdGhhdCBzcGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUg
aWdub3JlZC4KLSAgICAgICAgICAgIHJldHVybiBzaXplRnJvbUZvbnQoZm9udCwgeyB6b29tZWRT
aXplLndpZHRoLCB7IH0gfSwgem9vbUZhY3RvciwgYnV0dG9uU2l6ZXMoKSk7Ci0gICAgICAgIGNh
c2UgSW5uZXJTcGluQnV0dG9uUGFydDoKLSAgICAgICAgICAgIGlmICghem9vbWVkU2l6ZS53aWR0
aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdodC5pc0ludHJpbnNpY09y
QXV0bygpKQotICAgICAgICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwotICAgICAgICAgICAg
cmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6ZShzdGVwcGVyQ29udHJvbFNpemVGb3JGb250KGZv
bnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBzdGVwcGVyU2l6ZXMoKSk7Ci0gICAgICAgIGRl
ZmF1bHQ6CisgICAgY2FzZSBDaGVja2JveFBhcnQ6CisgICAgICAgIHJldHVybiBjaGVja2JveFNp
emUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7CisgICAgY2FzZSBSYWRpb1BhcnQ6Cisg
ICAgICAgIHJldHVybiByYWRpb1NpemUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7Cisg
ICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKKyAgICAgICAgLy8gSGVpZ2h0IGlzIHJlc2V0IHRvIGF1
dG8gc28gdGhhdCBzcGVjaWZpZWQgaGVpZ2h0cyBjYW4gYmUgaWdub3JlZC4KKyAgICAgICAgcmV0
dXJuIHNpemVGcm9tRm9udChmb250LCB7IHpvb21lZFNpemUud2lkdGgsIHsgfSB9LCB6b29tRmFj
dG9yLCBidXR0b25TaXplcygpKTsKKyAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CisgICAg
ICAgIGlmICghem9vbWVkU2l6ZS53aWR0aC5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRT
aXplLmhlaWdodC5pc0ludHJpbnNpY09yQXV0bygpKQogICAgICAgICAgICAgcmV0dXJuIHpvb21l
ZFNpemU7CisgICAgICAgIHJldHVybiBzaXplRnJvbU5TQ29udHJvbFNpemUoc3RlcHBlckNvbnRy
b2xTaXplRm9yRm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc3RlcHBlclNpemVz
KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB6b29tZWRTaXplOwogICAgIH0KIH0K
IApAQCAtNzQ0LDI4ICs3MzQsMjggQEAgTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250cm9sQm9yZGVy
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb24KIHsKICAgICBz
d2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25QYXJ0OgotICAgICAgICBj
YXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gTGVuZ3RoQm94KDAsIHpvb21lZEJveC5yaWdodCgpLnZhbHVlKCksIDAsIHpv
b21lZEJveC5sZWZ0KCkudmFsdWUoKSk7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gVGhlbWU6OmNvbnRyb2xCb3JkZXIocGFydCwgZm9udCwgem9vbWVkQm94LCB6b29tRmFj
dG9yKTsKKyAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgorICAgIGNhc2UgQnV0dG9uUGFydDoK
KyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwLCB6b29tZWRCb3gucmlnaHQoKS52YWx1ZSgpLCAw
LCB6b29tZWRCb3gubGVmdCgpLnZhbHVlKCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBUaGVtZTo6Y29udHJvbEJvcmRlcihwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3Ip
OwogICAgIH0KIH0KIAogTGVuZ3RoQm94IFRoZW1lTWFjOjpjb250cm9sUGFkZGluZyhDb250cm9s
UGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVuZ3RoQm94JiB6b29t
ZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7Ci0g
ICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIC8vIEp1c3QgdXNlIDhw
eC4gIEFwcEtpdCB3YW50cyB0byB1c2UgMTFweCBmb3IgbWluaSBidXR0b25zLCBidXQgdGhhdCBw
YWRkaW5nIGlzIGp1c3QgdG9vIGxhcmdlCi0gICAgICAgICAgICAvLyBmb3IgcmVhbC13b3JsZCBX
ZWIgc2l0ZXMgKGNyZWF0aW5nIGEgaHVnZSBuZWNlc3NhcnkgbWluaW11bSB3aWR0aCBmb3IgYnV0
dG9ucyB3aG9zZSBzcGFjZSBpcwotICAgICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiBjb25zdHJh
aW5lZCwgc2luY2Ugd2Ugc2VsZWN0IG1pbmkgb25seSBmb3Igc21hbGwgY3JhbXBlZCBlbnZpcm9u
bWVudHMuCi0gICAgICAgICAgICAvLyBUaGlzIGFsc28gZ3VhcmFudGVlcyB0aGUgSFRNTCA8YnV0
dG9uPiB3aWxsIG1hdGNoIG91ciByZW5kZXJpbmcgYnkgZGVmYXVsdCwgc2luY2Ugd2UncmUgdXNp
bmcgYSBjb25zaXN0ZW50Ci0gICAgICAgICAgICAvLyBwYWRkaW5nLgotICAgICAgICAgICAgY29u
c3QgaW50IHBhZGRpbmcgPSA4ICogem9vbUZhY3RvcjsKLSAgICAgICAgICAgIHJldHVybiBMZW5n
dGhCb3goMiwgcGFkZGluZywgMywgcGFkZGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJvbFBhZGRpbmcocGFydCwgZm9udCwg
em9vbWVkQm94LCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OiB7CisgICAg
ICAgIC8vIEp1c3QgdXNlIDhweC4gQXBwS2l0IHdhbnRzIHRvIHVzZSAxMXB4IGZvciBtaW5pIGJ1
dHRvbnMsIGJ1dCB0aGF0IHBhZGRpbmcgaXMganVzdCB0b28gbGFyZ2UKKyAgICAgICAgLy8gZm9y
IHJlYWwtd29ybGQgV2ViIHNpdGVzIChjcmVhdGluZyBhIGh1Z2UgbmVjZXNzYXJ5IG1pbmltdW0g
d2lkdGggZm9yIGJ1dHRvbnMgd2hvc2Ugc3BhY2UgaXMKKyAgICAgICAgLy8gYnkgZGVmaW5pdGlv
biBjb25zdHJhaW5lZCwgc2luY2Ugd2Ugc2VsZWN0IG1pbmkgb25seSBmb3Igc21hbGwgY3JhbXBl
ZCBlbnZpcm9ubWVudHMuCisgICAgICAgIC8vIFRoaXMgYWxzbyBndWFyYW50ZWVzIHRoZSBIVE1M
IDxidXR0b24+IHdpbGwgbWF0Y2ggb3VyIHJlbmRlcmluZyBieSBkZWZhdWx0LCBzaW5jZSB3ZSdy
ZSB1c2luZyBhIGNvbnNpc3RlbnQKKyAgICAgICAgLy8gcGFkZGluZy4KKyAgICAgICAgY29uc3Qg
aW50IHBhZGRpbmcgPSA4ICogem9vbUZhY3RvcjsKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgy
LCBwYWRkaW5nLCAzLCBwYWRkaW5nKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIFRoZW1lOjpjb250cm9sUGFkZGluZyhwYXJ0LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0
b3IpOwogICAgIH0KIH0KIApAQCAtNzc2LDcgKzc2Niw3IEBAIHZvaWQgVGhlbWVNYWM6OmluZmxh
dGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xTdGF0ZXMm
IHN0CiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7CiAg
ICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZv
ciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSBjaGVja2Jv
eAotICAgICAgICAgICAgLy8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiAgV2UgZG9uJ3QgY29uc2lk
ZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0LgorICAg
ICAgICAgICAgLy8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiBXZSBkb24ndCBjb25zaWRlciB0aGlz
IHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCiAgICAgICAgICAg
ICBOU0NlbGwgKmNlbGwgPSBzaGFyZWRDaGVja2JveENlbGwoc3RhdGVzLCB6b29tUmVjdFNpemUs
IHpvb21GYWN0b3IpOwogICAgICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtj
ZWxsIGNvbnRyb2xTaXplXTsKICAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IGNoZWNr
Ym94U2l6ZXMoKVtjb250cm9sU2l6ZV07CkBAIC03ODcsNyArNzc3LDcgQEAgdm9pZCBUaGVtZU1h
Yzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJv
bFN0YXRlcyYgc3QKICAgICAgICAgfQogICAgICAgICBjYXNlIFJhZGlvUGFydDogewogICAgICAg
ICAgICAgLy8gV2UgaW5mbGF0ZSB0aGUgcmVjdCBhcyBuZWVkZWQgdG8gYWNjb3VudCBmb3IgcGFk
ZGluZyBpbmNsdWRlZCBpbiB0aGUgY2VsbCB0byBhY2NvbW1vZGF0ZSB0aGUgcmFkaW8gYnV0dG9u
Ci0gICAgICAgICAgICAvLyBzaGFkb3ciLiAgV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBwYXJ0IG9m
IHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0LgorICAgICAgICAgICAgLy8gc2hh
ZG93Ii4gV2UgZG9uJ3QgY29uc2lkZXIgdGhpcyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNv
bnRyb2wgaW4gV2ViS2l0LgogICAgICAgICAgICAgTlNDZWxsICpjZWxsID0gc2hhcmVkUmFkaW9D
ZWxsKHN0YXRlcywgem9vbVJlY3RTaXplLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9sU2l6ZV07CiAgICAgICAgICAgICBJ
bnRTaXplIHpvb21lZFNpemUgPSByYWRpb1NpemVzKClbY29udHJvbFNpemVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAppbmRleCAyNzJlYTEzNjYxNTZmY2MxOWQ2NDhj
ZDYxNjA3NTFlMTJhMmIyOGVhLi43MmU3OGQ3OGU2NTg0M2Q0OTdkZjlmYmY3ZjQzYzg4NDdjZGM1
OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaApAQCAtMzIsNyAr
MzIsNiBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlIDxD
b3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCmluZGV4IDVkODZmZjI1NDdjYTE1MzZi
YzM1YzRlN2RhOGIzMmRhOWU0MGE1YzQuLjY2ZjgxMTdhYjc2ZjhiYjM3ZWEzNWI5ZDFjNDk0MThk
MTgxMDE3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oCkBAIC0z
Miw3ICszMiw2IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiRm9u
dENhc2NhZGUuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIgogI2luY2x1
ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCmluZGV4IDEyMmJiZGYzYzRk
ZmIxZGYyY2JhMDg0MjQ3ZjhiMTkyYmNjMWI0YjguLjBjNGI1Y2JjNjIwMTdkOWFiN2RhOWY3MmY1
YTY3MjZlYTkyMWVkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCmluZGV4IGZmNTJiN2QzOTE2
M2Q1ZDlmODQxNDY0MzBiYzNlODU2NjJmZDdkNjUuLmUwMGRlOTY2NWEwYTAzZGZlODFjYWNlMDIy
NmU1NDk4OTBmNTYxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3Rh
dGljIHVpbnQzMl90IG1hZ2ljTnVtYmVyKCkKIAogY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9u
KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBl
eHRlbnNpb24sIChBU0NJSUxpdGVyYWwoIi5kb3dubG9hZCIpKSk7CisgICAgc3RhdGljIGNvbnN0
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZXh0ZW5zaW9uIHsgQVNDSUlMaXRlcmFsIHsgIi5kb3du
bG9hZCIgfSB9OwogICAgIHJldHVybiBleHRlbnNpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggZjhl
NTZiNmVlNDRlOTgyNDY5MzA4MTk0NjY0NTIxZjFlODYxMDgyZS4uMmRkYzM3MGI5YzIyYmNlMGI1
M2ZiNjRiYzAzMThkMGI1ZmRiNjgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKQEAgLTI5OSwxMyArMjk5LDEyIEBA
IHZvaWQgbWFya3VwVG9DRkhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXAsIGNvbnN0IFN0cmluZyYg
c3JjVVJMLCBWZWN0b3I8Y2hhcj4mIHJlCiAKIHZvaWQgcmVwbGFjZU5ld2xpbmVzV2l0aFdpbmRv
d3NTdHlsZU5ld2xpbmVzKFN0cmluZyYgc3RyKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHdpbmRvd3NOZXdsaW5lLCAoQVNDSUlMaXRlcmFsKCJcclxuIikp
KTsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCBzdHIubGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKHN0cltpbmRl
eF0gIT0gJ1xuJyB8fCAoaW5kZXggPiAwICYmIHN0cltpbmRleCAtIDFdID09ICdccicpKQogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJbaW5kZXhdKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCh3aW5kb3dzTmV3bGluZSk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiXHJcbiIpOwogICAgIH0KICAgICBzdHIgPSByZXN1bHQudG9TdHJpbmco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVt
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApp
bmRleCAwNzcyMzc2ZWRiNmM3YzQ3OGU5YmQ4ODMwODNmYjUxMTM0NmFlZGJlLi5lY2Y5ZTkwOGRk
NzA0OWUxMjBlMWVjMGExZjY5NjJkNTg3NjIwNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVU
aW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwpAQCAtMjU3LDIxICsyNTYsMjEgQEAgU3RyaW5nIGRp
cmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiBzdGF0aWMgU3RyaW5nIGJ1bmRsZU5h
bWUoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG5hbWUs
IChBU0NJSUxpdGVyYWwoIldlYktpdCIpKSk7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gbmFtZSA9IFtdIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgeyBBU0NJSUxpdGVy
YWwgeyAiV2ViS2l0IiB9IH07CiAKICNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQ7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKSB7Ci0gICAgICAgIGluaXRpYWxpemVkID0g
dHJ1ZTsKLQotICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZCdW5kbGVHZXRNYWlu
QnVuZGxlKCkpCi0gICAgICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFibGUgPSBD
RkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5kbGVFeGVj
dXRhYmxlS2V5KSkKKyAgICAgICAgaWYgKENGQnVuZGxlUmVmIGJ1bmRsZSA9IENGQnVuZGxlR2V0
TWFpbkJ1bmRsZSgpKSB7CisgICAgICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZUV4ZWN1dGFi
bGUgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBrQ0ZCdW5k
bGVFeGVjdXRhYmxlS2V5KSkgewogICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChidW5k
bGVFeGVjdXRhYmxlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQogICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlRXhlY3V0YWJsZSk7
Ci0gICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAjZW5kaWYKIAorICAgICAgICByZXR1
cm4gbmFtZTsKKyAgICB9KCk7CisKICAgICByZXR1cm4gbmFtZTsKIH0KIApAQCAtMjgzLDggKzI4
Miw3IEBAIHN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmll
cikKICAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CiAgICAgU3RyaW5n
IGRpcmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIAotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbXBhbnlOYW1lRGlyZWN0b3J5LCAo
QVNDSUlMaXRlcmFsKCJBcHBsZSBDb21wdXRlclxcIikpKTsKLSAgICBkaXJlY3RvcnkgPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCBjb21wYW55TmFtZURpcmVjdG9yeSArIGJ1
bmRsZU5hbWUoKSk7CisgICAgZGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRp
cmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgpKTsKICAgICBpZiAoIW1h
a2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwCmluZGV4IGQ1YWQ5NzczZDg0
MTI5ZjJlMDM0YjVhMzZmZmMxY2Y2MjExYWVkYWIuLjI3MTk0OWFhYjZlY2UyZjEyMmY4YzRhNmM0
MzBlZDhhYWFkYTY1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9U
aGVtZVdQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmNw
cApAQCAtMjcsMTYgKzI3LDE4IEBACiAjaW5jbHVkZSAiVGhlbWVXUEUuaCIKIAogI2luY2x1ZGUg
IkNvbG9yLmgiCisjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgogI2luY2x1ZGUgIkZsb2F0Um91
bmRlZFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMZW5n
dGhTaXplLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0
b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZVdQRT4gdGhlbWU7Ci0gICAg
cmV0dXJuICZ0aGVtZS5nZXQoKTsKKyAgICByZXR1cm4gdGhlbWU7CiB9CiAKIExlbmd0aFNpemUg
VGhlbWVXUEU6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250Q2FzY2FkZSwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZh
Y3RvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVt
ZVdQRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BFLmgKaW5kZXggNzM5
ZjVjMWUxY2FhYmY0YzQwNDM0MzVmNDk3Zjg5ZTY5MTM0YjAzZi4uYjUyNGM0ODk3YzVhZmQ4YjAw
OTE3ODg5MDQyZDQzM2FmMzNiMzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3BlL1RoZW1lV1BFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1l
V1BFLmgKQEAgLTI5LDE2ICsyOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFRoZW1lV1BFIDogcHVibGljIFRoZW1lIHsKLXB1YmxpYzoKLSAgICBUaGVtZVdQRSgpIHsgfQot
ICAgIHZpcnR1YWwgflRoZW1lV1BFKCkgeyB9Ci0KLSAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXpl
KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9h
dCkgY29uc3Qgb3ZlcnJpZGU7CitjbGFzcyBUaGVtZVdQRSBmaW5hbCA6IHB1YmxpYyBUaGVtZSB7
Citwcml2YXRlOgorICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0KSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgU2Nyb2xsVmlldyosIGZsb2F0LCBmbG9hdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3JvbGxWaWV3KiwgZmxv
YXQsIGZsb2F0KSBmaW5hbDsKIAotcHJpdmF0ZToKICAgICB2b2lkIHBhaW50Q2hlY2tib3goQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KTsK
ICAgICB2b2lkIHBhaW50UmFkaW8oQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0KTsKICAgICB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xTdGF0
ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCAyODEyNjRkZDhiOGM4MWMzYjc4
MWVlNDJmYTAwOWYzMTJhOWVkNjUxLi5lYzFmNTUyZjk1MGMzMjY2MzhlZjYyNmU1Y2FiMmE0Y2Mx
YjJiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEs
NyArMSw1IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRoZW1lIGltcGxlbWVu
dGF0aW9uIGZvciBmb3JtIGNvbnRyb2xzIGluIFdlYkNvcmUuCi0gKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMTAsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNTksNyArNTcsOSBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNlbmRpZgogCi0vLyBUaGUgbWV0aG9kcyBpbiB0aGlzIGZpbGUgYXJlIHNoYXJlZCBi
eSBhbGwgdGhlbWVzIG9uIGV2ZXJ5IHBsYXRmb3JtLgorI2lmIFVTRShORVdfVEhFTUUpCisjaW5j
bHVkZSAiVGhlbWUuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcyLDkg
KzcyLDYgQEAgc3RhdGljIENvbG9yJiBjdXN0b21Gb2N1c1JpbmdDb2xvcigpCiB9CiAKIFJlbmRl
clRoZW1lOjpSZW5kZXJUaGVtZSgpCi0jaWYgVVNFKE5FV19USEVNRSkKLSAgICA6IG1fdGhlbWUo
cGxhdGZvcm1UaGVtZSgpKQotI2VuZGlmCiB7CiB9CiAKQEAgLTEyMiw3ICsxMTksNyBAQCB2b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBS
ZW5kZXJTdHlsZSYgc3R5bGUsCiAgICAgY2FzZSBCdXR0b25QYXJ0OiB7CiAgICAgICAgIC8vIEJv
cmRlcgogICAgICAgICBMZW5ndGhCb3ggYm9yZGVyQm94KHN0eWxlLmJvcmRlclRvcFdpZHRoKCks
IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSwgc3R5
bGUuYm9yZGVyTGVmdFdpZHRoKCkpOwotICAgICAgICBib3JkZXJCb3ggPSBtX3RoZW1lLT5jb250
cm9sQm9yZGVyKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIGJvcmRlckJveCwgc3R5bGUuZWZm
ZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgYm9yZGVyQm94ID0gVGhlbWU6OnNpbmdsZXRvbigpLmNv
bnRyb2xCb3JkZXIocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgYm9yZGVyQm94LCBzdHlsZS5l
ZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkgIT0g
c3RhdGljX2Nhc3Q8aW50PihzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSkgewogICAgICAgICAgICAg
aWYgKGJvcmRlckJveC50b3AoKS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIHN0eWxlLnNldEJv
cmRlclRvcFdpZHRoKGJvcmRlckJveC50b3AoKS52YWx1ZSgpKTsKQEAgLTE1MSwzMiArMTQ4LDMy
IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgfQogCiAgICAgICAgIC8vIFBhZGRp
bmcKLSAgICAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3ggPSBtX3RoZW1lLT5jb250cm9sUGFkZGlu
ZyhwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5wYWRkaW5nQm94KCksIHN0eWxlLmVm
ZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIExlbmd0aEJveCBwYWRkaW5nQm94ID0gVGhlbWU6OnNp
bmdsZXRvbigpLmNvbnRyb2xQYWRkaW5nKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxl
LnBhZGRpbmdCb3goKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgaWYgKHBhZGRp
bmdCb3ggIT0gc3R5bGUucGFkZGluZ0JveCgpKQogICAgICAgICAgICAgc3R5bGUuc2V0UGFkZGlu
Z0JveChXVEZNb3ZlKHBhZGRpbmdCb3gpKTsKIAogICAgICAgICAvLyBXaGl0ZXNwYWNlCi0gICAg
ICAgIGlmIChtX3RoZW1lLT5jb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKHBhcnQpKQorICAg
ICAgICBpZiAoVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2Uo
cGFydCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRXaGl0ZVNwYWNlKFBSRSk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAvLyBXaWR0aCAvIEhlaWdodAogICAgICAgICAvLyBUaGUgd2lkdGggYW5k
IGhlaWdodCBoZXJlIGFyZSBhZmZlY3RlZCBieSB0aGUgem9vbS4KICAgICAgICAgLy8gRklYTUU6
IENoZWNrIGlzIGZsYXdlZCwgc2luY2UgaXQgZG9lc24ndCB0YWtlIG1pbi13aWR0aC9tYXgtd2lk
dGggaW50byBhY2NvdW50LgotICAgICAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplID0gbV90aGVt
ZS0+Y29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgp
LCBzdHlsZS5oZWlnaHQoKSB9LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBMZW5n
dGhTaXplIGNvbnRyb2xTaXplID0gVGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xTaXplKHBhcnQs
IHN0eWxlLmZvbnRDYXNjYWRlKCksIHsgc3R5bGUud2lkdGgoKSwgc3R5bGUuaGVpZ2h0KCkgfSwg
c3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgaWYgKGNvbnRyb2xTaXplLndpZHRoICE9
IHN0eWxlLndpZHRoKCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRXaWR0aChXVEZNb3ZlKGNvbnRy
b2xTaXplLndpZHRoKSk7CiAgICAgICAgIGlmIChjb250cm9sU2l6ZS5oZWlnaHQgIT0gc3R5bGUu
aGVpZ2h0KCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRIZWlnaHQoV1RGTW92ZShjb250cm9sU2l6
ZS5oZWlnaHQpKTsKIAogICAgICAgICAvLyBNaW4tV2lkdGggLyBNaW4tSGVpZ2h0Ci0gICAgICAg
IExlbmd0aFNpemUgbWluQ29udHJvbFNpemUgPSBtX3RoZW1lLT5taW5pbXVtQ29udHJvbFNpemUo
cGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAg
ICAgTGVuZ3RoU2l6ZSBtaW5Db250cm9sU2l6ZSA9IFRoZW1lOjpzaW5nbGV0b24oKS5taW5pbXVt
Q29udHJvbFNpemUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9v
bSgpKTsKICAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLndpZHRoICE9IHN0eWxlLm1pbldpZHRo
KCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRNaW5XaWR0aChXVEZNb3ZlKG1pbkNvbnRyb2xTaXpl
LndpZHRoKSk7CiAgICAgICAgIGlmIChtaW5Db250cm9sU2l6ZS5oZWlnaHQgIT0gc3R5bGUubWlu
SGVpZ2h0KCkpCiAgICAgICAgICAgICBzdHlsZS5zZXRNaW5IZWlnaHQoV1RGTW92ZShtaW5Db250
cm9sU2l6ZS5oZWlnaHQpKTsKIAogICAgICAgICAvLyBGb250Ci0gICAgICAgIGlmIChhdXRvIHRo
ZW1lRm9udCA9IG1fdGhlbWUtPmNvbnRyb2xGb250KHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCks
IHN0eWxlLmVmZmVjdGl2ZVpvb20oKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gdGhlbWVGb250ID0g
VGhlbWU6OnNpbmdsZXRvbigpLmNvbnRyb2xGb250KHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCks
IHN0eWxlLmVmZmVjdGl2ZVpvb20oKSkpIHsKICAgICAgICAgICAgIC8vIElmIG92ZXJyaWRpbmcg
dGhlIHNwZWNpZmllZCBmb250IHdpdGggdGhlIHRoZW1lIGZvbnQsIGFsc28gb3ZlcnJpZGUgdGhl
IGxpbmUgaGVpZ2h0IHdpdGggdGhlIHN0YW5kYXJkIGxpbmUgaGVpZ2h0LgogICAgICAgICAgICAg
c3R5bGUuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CiAg
ICAgICAgICAgICBpZiAoc3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKHRoZW1lRm9udC52YWx1ZSgp
KSkKQEAgLTMwNiw3ICszMDMsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5k
ZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIGNhc2Ug
QnV0dG9uUGFydDoKICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6CiAgICAgICAgIHVwZGF0
ZUNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihib3gsIGNvbnRyb2xTdGF0ZXMpOwotICAgICAgICBt
X3RoZW1lLT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBk
ZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gu
dmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsK
KyAgICAgICAgVGhlbWU6OnNpbmdsZXRvbigpLnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBh
aW50SW5mby5jb250ZXh0KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9y
LCBwYWdlU2NhbGVGYWN0b3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CkBAIC02ODYsNyArNjgzLDcgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKIGlu
dCBSZW5kZXJUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gmIGJveCkgY29u
c3QKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIHJldHVybiBib3guaGVpZ2h0KCkgKyBib3gu
bWFyZ2luVG9wKCkgKyBtX3RoZW1lLT5iYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChib3guc3R5
bGUoKS5hcHBlYXJhbmNlKCkpICogYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOworICAgIHJl
dHVybiBib3guaGVpZ2h0KCkgKyBib3gubWFyZ2luVG9wKCkgKyBUaGVtZTo6c2luZ2xldG9uKCku
YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgpKSAqIGJv
eC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKICNlbHNlCiAgICAgcmV0dXJuIGJveC5oZWlnaHQo
KSArIGJveC5tYXJnaW5Ub3AoKTsKICNlbmRpZgpAQCAtNzMwLDcgKzcyNyw3IEBAIHZvaWQgUmVu
ZGVyVGhlbWU6OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IEZsb2F0UmVjdCYgcmVjCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBDb250cm9sU3RhdGVz
IHN0YXRlcyhleHRyYWN0Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKHJlbmRlcmVyKSk7Ci0gICAg
bV90aGVtZS0+aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QocmVuZGVyZXIuc3R5bGUoKS5hcHBlYXJh
bmNlKCksIHN0YXRlcywgcmVjdCwgcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwor
ICAgIFRoZW1lOjpzaW5nbGV0b24oKS5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChyZW5kZXJlci5z
dHlsZSgpLmFwcGVhcmFuY2UoKSwgc3RhdGVzLCByZWN0LCByZW5kZXJlci5zdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CiAgICAgVU5V
U0VEX1BBUkFNKHJlY3QpOwpAQCAtOTQ1LDYgKzk0Miw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFk
anVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgY29uc3QgRWxl
bWVuCiB9CiAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKKwogdm9pZCBSZW5kZXJUaGVtZTo6
YWRqdXN0TWV0ZXJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZW50KikgY29uc3QKIHsKICAgICBzdHlsZS5zZXRCb3hTaGFkb3cobnVsbHB0cik7CkBA
IC05NjQsNyArOTYyLDggQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRNZXRlcihjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWMKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KLSNlbmRpZgorCisjZW5kaWYgLy8gTUVURVJfRUxFTUVOVAogCiB2b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RDYXBzTG9ja0luZGljYXRvclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewpAQCAtOTc2LDYgKzk3NSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWU6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwKIH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisKIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdEF0dGFjaG1lbnRTdHlsZShTdHlsZVJlc29sdmVy
JiwgUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3QKIHsKIH0KQEAgLTk4NCw5ICs5
ODQsMTEgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRBdHRhY2htZW50KGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEkKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9
CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisKIExheW91dFVuaXQg
UmVuZGVyVGhlbWU6OnNsaWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIDA7CkBAIC0xMDY5LDYgKzEwNzEsNyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNs
aWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAog
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRpY2tSZWN0KTsKICAgICB9CiB9
CisKICNlbmRpZgogCiBTZWNvbmRzIFJlbmRlclRoZW1lOjphbmltYXRpb25SZXBlYXRJbnRlcnZh
bEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzJikgY29uc3QKQEAgLTEyODUsMTAgKzEyODgs
MTIgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxp
Z2h0Q29sb3IoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogQ29sb3Ig
UmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCkKIHsKICAgICByZXR1cm4gc2luZ2xldG9u
KCkucGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpOwogfQorCiAjZW5kaWYKIAogLy8gVmFsdWUg
Y2hvc2VuIGJ5IG9ic2VydmF0aW9uLiBUaGlzIGNhbiBiZSB0d2Vha2VkLgpAQCAtMTMxNSw5ICsx
MzIwLDkgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OmRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9y
JiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3IKICAgICByZXR1cm4gZGlzYWJsZWRDb2xv
cjsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3Qg
Q29sb3ImIGMpCit2b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiB7Ci0gICAgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CisgICAg
Y3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGNvbG9yOwogfQogCiBDb2xvciBSZW5kZXJUaGVtZTo6
Zm9jdXNSaW5nQ29sb3IoKQpAQCAtMTM0OSwxMyArMTM1NCwxNCBAQCBTdHJpbmcgUmVuZGVyVGhl
bWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3Qg
Rm9udENhcwogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKwogQ29sb3IgUmVuZGVyVGhl
bWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29s
b3IgaXMgZXhwZWN0ZWQgdG8gYmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXks
CiAgICAgLy8gbWFraW5nIGl0IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUg
aW5kaWNhdGVzLgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBDb2xvcj4gZGVmYXVs
dFRhcEhpZ2hsaWdodENvbG9yID0gQ29sb3IoMCwgMCwgMCwgMTAyKTsKLSAgICByZXR1cm4gZGVm
YXVsdFRhcEhpZ2hsaWdodENvbG9yOworICAgIHJldHVybiBDb2xvcigwLCAwLCAwLCAxMDIpOwog
fQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuaAppbmRleCBjNzI4MDFkZGYwMzVhZjNmNmU2MmUwMzk2NzVjYzdmYmFk
ZDY4NTFjLi5hMjhiYWFjYTdkNTA3MmRiNmI2NDY1MDY0ZWZiNTM3NGU5ZDNlMmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMjQsMTIgKzI0LDcgQEAKICNpbmNs
dWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJQb3B1cE1lbnVTdHlsZS5oIgogI2luY2x1ZGUg
IlNjcm9sbFR5cGVzLmgiCi0KLSNpZiBVU0UoTkVXX1RIRU1FKQotI2luY2x1ZGUgIlRoZW1lLmgi
Ci0jZWxzZQogI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQwNCwxMCArMzk5LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIENvbG9y
IG1faW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yOwogICAgIG11dGFibGUg
Q29sb3IgbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogICAgIG11dGFi
bGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7Ci0KLSNp
ZiBVU0UoTkVXX1RIRU1FKQotICAgIFRoZW1lKiBtX3RoZW1lOyAvLyBUaGUgcGxhdGZvcm0tc3Bl
Y2lmaWMgdGhlbWUuCi0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lQnJlYWtlci5oCmluZGV4IGQ5Mzg5M2U5ODQ5
ZWVhYzY1ZDlmZTkzYTIwM2UyZmQ4NzY4NDQzNDMuLjY1ODU4NzdmOWQzYjQ3ZWEyMjdhYzdkYWZj
M2Y1MzM4ZTkxMTk4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVCcmVha2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJy
ZWFrZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWls
LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0
IHJlc2VydmVkLgpAQCAtMjQsNyArMjQsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJM
aW5lSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmxpbmVIZWFkZXJzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCA1NmNhNWVh
MzZjMmYwYjY1M2NhNmMyOTIyM2FlYTBkYWEwODQzNWQ5Li5lMTU1ODdlODU4MjRjOGIzMDE4YTQ3
OTdkMWVkYzBlZTFmMTFjOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMjcgKzY0LDE3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNp
YmxlUG9zaXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvVmlzaWJsZVVuaXRzLmg+Ci0KICNpbXBv
cnQgPFdlYkNvcmUvV0FLQXBwS2l0U3R1YnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLXVzaW5nIFdlYkNvcmU6OkZsb2F0UG9pbnQ7Ci11c2luZyBXZWJDb3JlOjpGb250Q2FzY2Fk
ZTsKLXVzaW5nIFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQ7Ci11c2luZyBXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDsKLXVzaW5nIFdl
YkNvcmU6OklubGluZUJveDsKLXVzaW5nIFdlYkNvcmU6OkludFJlY3Q7CiB1c2luZyBXZWJDb3Jl
OjpOb2RlOwogdXNpbmcgV2ViQ29yZTo6UG9zaXRpb247CiB1c2luZyBXZWJDb3JlOjpSYW5nZTsK
IHVzaW5nIFdlYkNvcmU6OlJlbmRlckJsb2NrOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVyQm94Owog
dXNpbmcgV2ViQ29yZTo6UmVuZGVyT2JqZWN0OwotdXNpbmcgV2ViQ29yZTo6UmVuZGVyU3R5bGU7
CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJUZXh0OwotdXNpbmcgV2ViQ29yZTo6Um9vdElubGluZUJv
eDsKIHVzaW5nIFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjsKIAogQGltcGxlbWVudGF0aW9uIERP
TVJhbmdlIChVSUtpdEV4dGVuc2lvbnMpCkBAIC0xNjEsNyArMTUxLDcgQEAgLSAoTlNBcnJheSAq
KWJvdW5kaW5nQm94ZXMKICAgICB9CiAKICAgICBpZiAoIVtyZWN0cyBjb3VudF0pCi0gICAgICAg
IHJlY3RzID0gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6
Ym91bmRzXV07CisgICAgICAgIHJlY3RzID0gQFtbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OmJvdW5k
c11dOwogCiAgICAgcmV0dXJuIHJlY3RzOwogfQpAQCAtMTgyLDcgKzE3Miw3IEBAIC0gKE5TQXJy
YXkgKilhYnNvbHV0ZVF1YWRzCiAKICAgICBpZiAoIVtxdWFkcyBjb3VudF0pIHsKICAgICAgICAg
V0tRdWFkT2JqZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRo
UXVhZDpbc2VsZiBhYnNvbHV0ZVF1YWRdXTsKLSAgICAgICAgcXVhZHMgPSBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgICAgIHF1YWRzID0gQFtxdWFkT2JqZWN0XTsK
ICAgICAgICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CiAgICAgfQogCkBAIC0yNTAsMTIgKzI0MCwx
MSBAQCAtIChDR0Zsb2F0KXRleHRIZWlnaHQKIAogLSAoRE9NTm9kZSAqKWZpbmRFeHBsb2RlZFRl
eHROb2RlQXRQb2ludDooQ0dQb2ludClwb2ludAogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gY29yZShz
ZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIp
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgUmVuZGVyQmxvY2tGbG93KiBibG9jayA9IGRv
d25jYXN0PFJlbmRlckJsb2NrRmxvdz4ocmVuZGVyZXIpOwotICAgIFJlbmRlclRleHQqIHJlbmRl
clRleHQgPSBibG9jay0+ZmluZENsb3Nlc3RUZXh0QXRBYnNvbHV0ZVBvaW50KHBvaW50KTsKKyAg
ICBhdXRvKiByZW5kZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIp
LmZpbmRDbG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludChwb2ludCk7CiAgICAgaWYgKHJlbmRlclRl
eHQgJiYgcmVuZGVyVGV4dC0+dGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGtpdChyZW5kZXJU
ZXh0LT50ZXh0Tm9kZSgpKTsKIApAQCAtMjY2LDEwICsyNTUsOCBAQCBAZW5kCiAKIC8vLS0tLS0t
LS0tLS0tLS0tLS0KIAotQGltcGxlbWVudGF0aW9uIERPTUVsZW1lbnQgKERPTVVJS2l0Q29tcGxl
eGl0eUV4dGVuc2lvbnMpIAotCitAaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NVUlLaXRD
b21wbGV4aXR5RXh0ZW5zaW9ucykKIC0gKGludClzdHJ1Y3R1cmFsQ29tcGxleGl0eUNvbnRyaWJ1
dGlvbiB7IHJldHVybiAwOyB9Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxFbGVt
ZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKSAKQEAgLTMwOCw3ICsyOTUsNiBAQCBA
aW1wbGVtZW50YXRpb24gRE9NSFRNTEJvZHlFbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRl
bnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJu
IDA7IH0KIEBlbmQKIAotCiAvLyBNYXhpbWFsbHkgY29tcGxleCBlbGVtZW50cwogCiBAaW1wbGVt
ZW50YXRpb24gRE9NSFRNTEZvcm1FbGVtZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25z
KQpAQCAtMzQzLDIzICszMjksMjAgQEAgQGltcGxlbWVudGF0aW9uIERPTUhUTUxTZWxlY3RFbGVt
ZW50IChET01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21w
bGV4aXR5Q29udHJpYnV0aW9uIHsgcmV0dXJuIElOVF9NQVg7IH0KIEBlbmQKIAotCiAvLy0tLS0t
LS0tLS0tLS0tLS0tCiAgICAgICAgIAogQGltcGxlbWVudGF0aW9uIERPTUhUTUxBcmVhRWxlbWVu
dCAoRE9NVUlLaXRFeHRlbnNpb25zKQogCi0tIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3duZXI6
KERPTU5vZGUgKilhbk93bmVyCistIChDR1JlY3QpYm91bmRpbmdCb3hXaXRoT3duZXI6KERPTU5v
ZGUgKilvd25lcgogewogICAgIC8vIGlnbm9yZXMgdHJhbnNmb3JtcwotICAgIHJldHVybiBhbk93
bmVyID8gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29yZShhbk93bmVy
KS0+cmVuZGVyZXIoKSkpIDogQ0dSZWN0WmVybzsKKyAgICByZXR1cm4gb3duZXIgPyBzbmFwcGVk
SW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3JlKG93bmVyKS0+cmVuZGVyZXIoKSkp
IDogQ0dSZWN0WmVybzsKIH0KIAotLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9N
Tm9kZSAqKWFuT3duZXIKKy0gKFdLUXVhZClhYnNvbHV0ZVF1YWRXaXRoT3duZXI6KERPTU5vZGUg
Kilvd25lcgogewotICAgIGlmIChhbk93bmVyKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBFQ0xBSVIK
LSAgICAgICAgLy9XZWJDb3JlOjpGbG9hdFF1YWQgdGhlUXVhZCA9IGNvcmUoc2VsZiktPmdldEFi
c29sdXRlUXVhZChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKTsKLSAgICAgICAgV2ViQ29yZTo6
SW50UmVjdCByZWN0ID0gc25hcHBlZEludFJlY3QoY29yZShzZWxmKS0+Y29tcHV0ZVJlY3QoY29y
ZShhbk93bmVyKS0+cmVuZGVyZXIoKSkpOworICAgIGlmIChvd25lcikgeworICAgICAgICBXZWJD
b3JlOjpJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVj
dChjb3JlKG93bmVyKS0+cmVuZGVyZXIoKSkpOwogICAgICAgICBXS1F1YWQgcXVhZDsKICAgICAg
ICAgcXVhZC5wMSA9IENHUG9pbnRNYWtlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgICAgIHF1
YWQucDIgPSBDR1BvaW50TWFrZShyZWN0Lm1heFgoKSwgcmVjdC55KCkpOwpAQCAtMzcyLDE1ICsz
NTUsMTUgQEAgLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjooRE9NTm9kZSAqKWFuT3du
ZXIKICAgICByZXR1cm4gemVyb1F1YWQ7CiB9CiAKLS0gKE5TQXJyYXkgKilib3VuZGluZ0JveGVz
V2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoTlNBcnJheSAqKWJvdW5kaW5nQm94ZXNX
aXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewotICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoUmVjdDpbc2VsZiBib3VuZGluZ0JveFdpdGhPd25l
cjphbk93bmVyXV1dOworICAgIHJldHVybiBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6W3NlbGYg
Ym91bmRpbmdCb3hXaXRoT3duZXI6b3duZXJdXV07CiB9CiAKLS0gKE5TQXJyYXkgKilhYnNvbHV0
ZVF1YWRzV2l0aE93bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoTlNBcnJheSAqKWFic29sdXRl
UXVhZHNXaXRoT3duZXI6KERPTU5vZGUgKilvd25lcgogewotICAgIFdLUXVhZE9iamVjdCogcXVh
ZE9iamVjdCA9IFtbV0tRdWFkT2JqZWN0IGFsbG9jXSBpbml0V2l0aFF1YWQ6W3NlbGYgYWJzb2x1
dGVRdWFkV2l0aE93bmVyOmFuT3duZXJdXTsKLSAgICBOU0FycmF5KiAgICBxdWFkQXJyYXkgPSBb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cXVhZE9iamVjdF07CisgICAgV0tRdWFkT2JqZWN0ICpx
dWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2VsZiBhYnNv
bHV0ZVF1YWRXaXRoT3duZXI6b3duZXJdXTsKKyAgICBOU0FycmF5ICpxdWFkQXJyYXkgPSBAW3F1
YWRPYmplY3RdOwogICAgIFtxdWFkT2JqZWN0IHJlbGVhc2VdOwogICAgIHJldHVybiBxdWFkQXJy
YXk7CiB9CkBAIC00MDUsMTMgKzM4OCwxMyBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEltYWdl
RWxlbWVudCAoV2ViRE9NSFRNTEltYWdlRWxlbWVudE9wZXJhdGlvbnNQcml2YXRlKQogCiAtIChO
U0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiB7Ci0gICAgV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1hZ2Uo
KTsKKyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CiAg
ICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpJ
bWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKKyAgICBhdXRvKiBpbWFnZSA9IGNh
Y2hlZEltYWdlLT5pbWFnZSgpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOworICAgIGF1dG8qIGRhdGEg
PSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5k
YXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBk
YXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpAQCAtNDE5LDEwICs0MDIsOSBAQCAt
IChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAKIC0gKE5T
U3RyaW5nICopbWltZVR5cGUKIHsKLSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSAqY2FjaGVkSW1h
Z2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOworICAgIGF1dG8qIGNhY2hlZEltYWdlID0g
Y29yZShzZWxmKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKICAgICByZXR1cm4g
Y2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCAwYmY4YjU5
MGQyZDI3MzhlODVhMmVmNzUwODQ5MGNmN2U5YzdjZDYxLi5iMGU2MDZlOTQzMzUzNjBmYzg4MzQy
NjM3OTEzYzZhNWRiZmZiMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMzAsMjYgKzMwLDI5IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCisj
aW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjZW5kaWYKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPFBsdWdpblBhY2thZ2U+ID4gUGx1Z2luUGFja2FnZUJ5TmFtZU1hcDsKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCisKIHN0YXRpYyBjb25zdCBz
aXplX3QgbWF4aW11bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlU2l6ZSA9IDMyNzY4Owog
CiBzdGF0aWMgYm9vbCBnUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVJc0VuYWJsZWQ7CiAK
IFN0cmluZyYgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVQYXRoKCkKIHsKLSAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjYWNoZVBhdGgsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjYWNoZVBhdGg7CiAgICAgcmV0dXJuIGNhY2hl
UGF0aDsKIH0KKwogI2VuZGlmCiAKIFBsdWdpbkRhdGFiYXNlOjpQbHVnaW5EYXRhYmFzZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5N
YWluVGhyZWFkU2NoZWR1bGVyLmNwcAppbmRleCAxMjAxMmUwMmZlN2RhYmIwOTBiMWM3MmIyOTZi
ODVmOTkzZjAzNzc2Li4xYzU5YjMzMmUxNWRlZDU5NWI0OTQ2M2NhODkwYmNiN2JlNGEyMmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbk1haW5UaHJl
YWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlci5jcHAKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBs
dWdpbk1haW5UaHJlYWRTY2hlZHVsZXImIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVk
dWxlcigpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpbk1haW5U
aHJlYWRTY2hlZHVsZXIsIHNjaGVkdWxlciwgKCkpOwotCisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXI+IHNjaGVkdWxlcjsKICAgICByZXR1cm4gc2No
ZWR1bGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAzMWEwOGU4
NTcyODQ0ZDZkNmY3YTNiYzI5MGJmODI1MjdmODI0YzNhLi40Y2U4Yzk5OGE0MTljNjc4ODViZGY2
N2QxYTFjMGViYzQ4YmE0MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4K
KwogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkBAIC00MSw3ICs0Miw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5p
dGlhbGl6ZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBsYXRm
b3JtU3RyYXRlZ2llcywgcGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1TdHJhdGVnaWVzOwogfQog
CiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDhkMzY1MzI4Y2NkNmQ2YzA1MmVmYWJiYzgyMGNiOTA5
ZWM3ODExYzAuLjJjMTM5MjcwNWVlN2NhYTRjZDcyN2U4OTg2MjUwZmE4MjRhNzM3YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC0yMywyMCArMjMsMjEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRl
Z2llc19oCi0jZGVmaW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
b2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
IDogcHVibGljIFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
ICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3Ry
YXRlZ2llcz47CiAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzKCk7Ci0gICAgCisKICAgICAvLyBX
ZWJDb3JlOjpQbGF0Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneSogY3JlYXRlQ29va2llc1N0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpM
b2FkZXJTdHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKQEAgLTUyLDUgKzUzLDMgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIH07Ci0KLSNlbmRpZiAvLyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cAppbmRleCBhYWU5OWViNTIyOTE5NDAwNjI1Nzk5YzViNzBkMjE2YjIzNzhjNTVmLi4yMmIwODQ2
YTkwNmI3ODI4NjU2YjhkOTU3YzEwYTBkZmFmZjhiMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5LmNwcApAQCAtMjM2LDkgKzIzNiw5IEBAIFVMT05HIFdlYkhpc3Rvcnk6OlJl
bGVhc2UoKQogCiAvLyBJV2ViSGlzdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgQ09NUHRy
PFdlYkhpc3Rvcnk+JiBzaGFyZWRIaXN0b3J5U3RvcmFnZSgpCitzdGF0aWMgQ09NUHRyPFdlYkhp
c3Rvcnk+JiBzaGFyZWRIaXN0b3J5U3RvcmFnZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKENPTVB0cjxXZWJIaXN0b3J5Piwgc2hhcmVkSGlzdG9yeSwgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDT01QdHI8V2ViSGlzdG9yeT4+IHNoYXJlZEhpc3Rvcnk7
CiAgICAgcmV0dXJuIHNoYXJlZEhpc3Rvcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IDhmZjBlZmNjOGE1ODZhZTEz
YzgyOTg2YzdkZWQwZDA0Mjk1ZmFjMGYuLmI3NTczOTE1OWZlZmQyMWVkNmZhMzM2ODg4MGExOWI5
YmMxNDIxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcApAQCAtNDcsMjUgKzQ3LDI1IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IExvY2FsaXplZFN0cmluZyo+IExvY2FsaXplZFN0cmluZ01hcDsKIAogc3RhdGljIExvY2smIG1h
aW5CdW5kbGVMb2NTdHJpbmdzTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTChMb2NrLCBtdXRleCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2Nr
PiBtdXRleDsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKIHN0YXRpYyBMb2NhbGl6ZWRTdHJpbmdN
YXAmIG1haW5CdW5kbGVMb2NTdHJpbmdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoTG9jYWxpemVkU3RyaW5nTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TG9jYWxpemVkU3RyaW5nTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAog
c3RhdGljIExvY2smIGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKExvY2ssIG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPExvY2s+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIExv
Y2FsaXplZFN0cmluZ01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkKIHsKLSAgICBERVBSRUNBVEVE
X0RFRklORV9TVEFUSUNfTE9DQUwoTG9jYWxpemVkU3RyaW5nTWFwLCBtYXAsICgpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9jYWxpemVkU3RyaW5nTWFwPiBtYXA7CiAgICAgcmV0dXJu
IG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkMDY2ZDNhYTEw
ODk1ZjZiNjBmYWE3ZTg1NzkzZDM3MTI3NjRjZTY0Li41NWQ4ZjFkZTVkYWY4MjAyZDMzNWI0ZjM2
ZWM4OGU3NmMyOTQwMjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEg
QXBwY2VsZXJhdG9yLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yMjYsMjQg
KzIyNiwyNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiB1c2luZyBKU0M6OkpTTG9jazsKIAorc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5n
KCk7CisKK3N0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNL
ZXkgPSBDRlNUUigiV2ViS2l0TG9jYWxDYWNoZSIpOwogc3RhdGljIEhNT0RVTEUgYWNjZXNzaWJp
bGl0eUxpYjsKKwogc3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+JiBwZW5kaW5nRGVsZXRlQmFja2lu
Z1N0b3JlU2V0KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJWaWV3
Kj4+IHBlbmRpbmdEZWxldGVCYWNraW5nU3RvcmVTZXQ7CiAgICAgcmV0dXJuIHBlbmRpbmdEZWxl
dGVCYWNraW5nU3RvcmVTZXQ7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENh
Y2hlRGVmYXVsdHNLZXkgPSBDRlNUUigiV2ViS2l0TG9jYWxDYWNoZSIpOwotCi1zdGF0aWMgU3Ry
aW5nIHdlYktpdFZlcnNpb25TdHJpbmcoKTsKLQogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7
CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCiAgICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmlzRW1wdHlDaHJvbWVD
bGllbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDaHJvbWVDbGllbnQmPihwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKSkud2ViVmlldygpOwogfQpAQCAtMTU1NSwxMCArMTU1NSw4IEBAIGJvb2wgV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiAKIFN0cmluZyBXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3NWZXJzaW9uLCAod2luZG93c1ZlcnNpb25Gb3JV
QVN0cmluZygpKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
d2ViS2l0VmVyc2lvbiwgKHdlYktpdFZlcnNpb25TdHJpbmcoKSkpOwotCi0gICAgcmV0dXJuIG1h
a2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBvc1ZlcnNpb24sICIpIEFwcGxlV2ViS2l0LyIsIHdl
YktpdFZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcGxpY2F0aW9uTmFtZS5pc0Vt
cHR5KCkgPyAiIiA6ICIgIiwgYXBwbGljYXRpb25OYW1lKTsKKyAgICBzdGF0aWMgY29uc3QgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBwcmVmaXggPSBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwg
d2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJz
aW9uU3RyaW5nKCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIpOworICAgIHJldHVybiBtYWtlU3Ry
aW5nKHByZWZpeC5nZXQoKSwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBh
cHBsaWNhdGlvbk5hbWUpOwogfQogCiBQYWdlKiBXZWJWaWV3OjpwYWdlKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYjU1NTE2OGQ2MGFkYmNm
MmEzYTE3ZjEyYWJjMGIwNDJkZTI1YWQ2Li5mNWEzNjAyZTkxYTM4Y2E0ZjY5NDc0YjVmYTEyNWE0
ZmYxOWUzYTlmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDctMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95ZWQgYW5kIHJlbGF0ZWQgY2xlYW51
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRU
aHJlYWRzTXV0ZXgpOiBVc2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZgorICAgICAgICBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwuCisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6
IERpdHRvLgorCiAyMDE3LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1MgV0syXSBSZW1vdmUgX1dLRHJhZ2dhYmxlRWxlbWVudEluZm8g
YW5kIGZvbGQgUG9zaXRpb25JbmZvcm1hdGlvblRlc3RzIGludG8gV0tSZXF1ZXN0QWN0aXZhdGVk
RWxlbWVudEluZm8KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAKaW5kZXggMmVhZmJiZWJmYjViYjk5ZGIxNmJlNGE2NDBmZjU0ZDMwNmYxODVmOS4uOTJkYTdl
MTk3OGM1ZDAzOGU2YmI5OTk1ZTRiMjA1YTIyMWQ5YTY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICogICAgICAgICAgIChDKSAyMDEyIFBhdHJpY2sgR2Fuc3RlcmUgPHBhcm9nYUBw
YXJvZ2EuY29tPgpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQ3LDE0ICs0OCwxNCBAQCBzdGF0aWMgSlNDb250ZXh0R3JvdXBSZWYgamF2YVNjcmlw
dFRocmVhZHNHcm91cDsKIAogc3RhdGljIExvY2smIGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKQog
ewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2NrLCBzdGF0aWNNdXRleCwg
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBzdGF0aWNNdXRleDsKICAgICBy
ZXR1cm4gc3RhdGljTXV0ZXg7CiB9CiAKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VGhyZWFkPj4g
VGhyZWFkU2V0Owogc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogewotICAg
IERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChUaHJlYWRTZXQsIHN0YXRpY0phdmFTY3Jp
cHRUaHJlYWRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRocmVhZFNldD4gc3Rh
dGljSmF2YVNjcmlwdFRocmVhZHM7CiAgICAgQVNTRVJUKCFqYXZhU2NyaXB0VGhyZWFkc011dGV4
KCkudHJ5TG9jaygpKTsKICAgICByZXR1cm4gc3RhdGljSmF2YVNjcmlwdFRocmVhZHM7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316293</attachid>
            <date>2017-07-24 09:10:31 -0700</date>
            <delta_ts>2017-07-24 11:43:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174745-20170724091030.patch</filename>
            <type>text/plain</type>
            <size>117737</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdkOWYyNTRkMzY3OWEz
MjE2MDM0YmY4M2IxNjI5MzdmMmYyZTlmYS4uYWYzMTZkZTAwMzMwM2JjZTIyNmZlZDI4MjlkNjBi
NDhiZDI1MWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MyBAQAorMjAxNy0wNy0yMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVs
ZW1lbnRXaXRoRmFsbGJhY2spOgorICAgICAgICBVc2UgaXNOdWxsKCkgcmF0aGVyIHRoYW4gY29t
cGFyaW5nIGFnYWluc3QgbnVsbEF0b20oKSBzaW5jZSBpdCdzCisgICAgICAgIHNsaWdodGx5IG1v
cmUgZWZmaWNpZW50LgorCisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZSk6IFVzZSBhIHN3
aXRjaCBzdGF0ZW1lbnQgZm9yIHRoZQorICAgICAgICB0aHJlZSBzdGF0ZXMgb2YgZm9yY2VkUHJl
ZmVyc1JlZHVjZWRNb3Rpb25BY2Nlc3NpYmlsaXR5VmFsdWUuIEFsc28gdXBkYXRlCisgICAgICAg
IHRvIHVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZCBvZiBwbGF0Zm9ybVRoZW1lKCkuCisK
KyAgICAgICAgKiBkb20vUXVhbGlmaWVkTmFtZS5oOiBSZW1vdmVkIHNvbWUgdW5uZWVkZWQgaW5j
bHVkZXMsIG1pbm9yIHN0eWxlIHR3ZWFrcywKKyAgICAgICAgYW5kIHVzZSBpc051bGwoKSByYXRo
ZXIgdGhhbiBjb21wYXJpbmcgYWdhaW5zdCBudWxsQXRvbSgpIHNpbmNlIGl0J3MKKyAgICAgICAg
c2xpZ2h0bHkgbW9yZSBlZmZpY2llbnQuCisKKyAgICAgICAgKiBodG1sL0F1dG9maWxsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1dG9maWxsRGF0YTo6Y3JlYXRlRnJvbUhUTUxGb3JtQ29udHJv
bEVsZW1lbnQpOiBVc2UgaXNOdWxsKCkKKyAgICAgICAgcmF0aGVyIHRoYW4gY29tcGFyaW5nIGFn
YWluc3QgbnVsbEF0b20oKSBzaW5jZSBpdCdzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LgorCisg
ICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTG9j
YWxOYW1lVG9TZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSHRtbENhc2VJ
bnNlbnNpdGl2ZUF0dHJpYnV0ZXNTZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50Ojppc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUpOiBNb3ZlZCB0aGUgY2FzZS1zZW5z
aXRpdmUKKyAgICAgICAgYXR0cmlidXRlIHNldCBpbiBoZXJlIGFuZCBtYWRlIGl0IHVzZSBtYWtl
TmV2ZXJEZXN0cm95ZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJ
Zk5hbWVBdHRyaWJ1dGVNYXRjaCk6CisgICAgICAgIEZvcm1hdHRlZCB2ZXJ0aWNhbGx5IGFuZCBz
b3J0ZWQgc28gaXQncyBlYXNpZXIgdG8gc2VlIHdoYXQgaXQgZG9lcy4KKyAgICAgICAgKFdlYkNv
cmU6OldpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyk6IFVzZSBib29sZWFuIGxv
Z2ljIGluc3RlYWQKKyAgICAgICAgb2YgbXVsdGlwbGUgcmV0dXJuIHN0YXRlbWVudHMgdG8gbWFr
ZSB0aGlzIGEgbGl0dGxlIG1vcmUgc3RyYWlnaHRmb3J3YXJkLgorICAgICAgICAoV2ViQ29yZTo6
aXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbik6IEFkZGVkLiBDYWxscyB0
aGUgbmV3CisgICAgICAgIGlzRXhwb3NlZCBmdW5jdGlvbi4gVGhlIG9sZCBjb2RlIGNhbGxlZCB0
aGlzIGlzRG9jTmFtZWRJdGVtLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnROYW1lQ29sbGVj
dGlvbjo6ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2gpOgorICAgICAgICBVc2UgaXNP
YmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbiB0byBjbGVhbiB1cCBsb2dpYy4g
QWxzbworICAgICAgICBzb3J0ZWQgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2gpOgorICAg
ICAgICBVc2UgaXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlvbiB0byBjbGVh
biB1cCBsb2dpYy4gQWxzbworICAgICAgICBzb3J0ZWQgY2xhc3NlcyBhbmQgZm9ybWF0dGVkIHZl
cnRpY2FsbHkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE5hbWVDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlcyk6IFdyaXRlIGluIHRlcm1zIG9mCisgICAgICAgIGFib3ZlIGZ1bmN0aW9ucyBm
b3IgY2xhcml0eS4gRWZmaWNpZW5jeSBpcyByb3VnaGx5IHRoZSBzYW1lLgorCisgICAgICAgICog
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0
RWxlbWVudDo6SFRNTE9iamVjdEVsZW1lbnQpOiBJbml0aWFsaXplIGRhdGEgbWVtYmVycworICAg
ICAgICBpbiBjbGFzcyBkZWZpbml0aW9uIGluc3RlYWQgb2YgaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBVcGRhdGUgZm9yIG5hbWUg
Y2hhbmdlOworICAgICAgICBmdW5jdGlvbiBpcyBub3cgY2FsbGVkIHVwZGF0ZUV4cG9zZWRTdGF0
ZSByYXRoZXIgdGhhbiB1cGRhdGVEb2NOYW1lZEl0ZW0uCisgICAgICAgIEFsc28gdXNlIG1fdXNl
RmFsbGJhY2tDb250ZW50IGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBhIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlckZhbGxiYWNrQ29udGVu
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6cHJldmVudHNQYXJlbnRPYmplY3RGcm9tRXhw
b3N1cmUpOiBBZGRlZC4gUmVwbGFjZXMgdGhlIG9sZAorICAgICAgICBpc1JlY29nbml6ZWRUYWdO
YW1lIGZ1bmN0aW9uLCBhbmQgZG9lcyBhbG1vc3QgdGhlIHNhbWUgdGhpbmcsIGJ1dCB0aGUKKyAg
ICAgICAgYXJndW1lbnQgdHlwZSBpcyBkaWZmZXJlbnQgYW5kIHRoZSBwYXJhbSB0YWcgaXMgbm93
IG9uZSBvZiB0aGUgdGFncworICAgICAgICBleGVtcHRlZCBoZXJlLiBBbHNvIGJyb2tlIHVwIGlu
dG8gdHdvIG92ZXJsb2FkcyBzbyB3ZSBjYW4gaGFuZGxlIHRoZQorICAgICAgICBFbGVtZW50LCBU
ZXh0LCBhbmQgb3RoZXIgTm9kZSBjYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEJlRXhw
b3NlZCk6IEFkZGVkLiBIZWxwZXIgZm9yIHRoZSB1cGRhdGVFeHBvc2VkU3RhdGUKKyAgICAgICAg
ZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBsb2dpYyBvZiB3aGVuIHRoZSBlbGVtZW50IHNob3Vs
ZCBiZSBleHBvc2VkLAorICAgICAgICBzZXBhcmF0aW5nIGl0IGZyb20gd2hhdCB0byBkbyB3aGVu
IHRoZSBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6
OnVwZGF0ZUV4cG9zZWRTdGF0ZSk6IFJlbmFtZWQgZnJvbQorICAgICAgICB1cGRhdGVEb2NOYW1l
ZEl0ZW0uCisKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IFJlbmFtZWQgaXNE
b2NOYW1lZEl0ZW0gLT4gaXNFeHBvc2VkLAorICAgICAgICBtX2RvY05hbWVkSXRlbSAtPiBtX2lz
RXhwb3NlZCwgdXBkYXRlRG9jTmFtZWRJdGVtIC0+IHVwZGF0ZUV4cG9zZWRTdGF0ZSwKKyAgICAg
ICAgc3RvcHBlZCB1c2luZyBiaXQgZmllbGRzIGZvciB0aGUgdHdvIGJvb2xlYW4gZGF0YSBtZW1i
ZXJzLCBhbmQKKyAgICAgICAgaW5pdGlhbGl6ZWQgdGhvc2UgZGF0YSBtZW1iZXJzIGhlcmUgaW4g
dGhlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQpOiBNb3Zl
ZCBoZXJlIGZyb20gaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xGb250
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6Y29udHJvbFNpemUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRoZW1lOjptaW5pbXVtQ29udHJvbFNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lOjpjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlRoZW1lOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWU6OnVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xCb3JkZXIpOiBGaXhlZCBzd2l0Y2ggc3RhdGVtZW50
IGluZGVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmNvbnRyb2xQYWRkaW5nKTog
RGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5oOiBSZW1vdmVkIHRoZSBtYW55IHVu
bmVjZXNzYXJ5IGluY2x1ZGVzLiBUaGUgb25lCisgICAgICAgIEkgd2FzIHJlYWxseSBhZnRlciBo
ZXJlIHdhcyBGb250Q2FzY2FkZS5oLiBSZXBsYWNlZCB0aGUgcGxhdGZvcm1UaGVtZQorICAgICAg
ICBmdW5jdGlvbiB3aXRoIGEgc2luZ2xldG9uIGZ1bmN0aW9uLCBmb2xsb3dpbmcgb3VyIG5vcm1h
bCBzdHlsZS4gQWxzbworICAgICAgICBjaGFuZ2VkIHRoZSByZXR1cm4gdHlwZSB0byBhIHJlZmVy
ZW5jZSByYXRoZXIgdGhhbiBhIHBvaW50ZXIuCisgICAgICAgIFJlbW92ZWQgbWFueSB1bnVzZWQg
ZnVuY3Rpb24gYW5kIGRhdGEgbWVtYmVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Ro
ZW1lQ29jb2EuaDogVGlnaHRlbmVkIHVwIGltcGxlbWVudGF0aW9uLCByZW1vdmluZworICAgICAg
ICB1bm5lY2Vzc2FyeSBtZW1iZXJzIGFuZCBtYWtpbmcgb3ZlcnJpZGVzIHByaXZhdGUuCisgICAg
ICAgICogcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbTogTW92ZWQgaW5jbHVkZSBpbiBoZXJl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzYW1wbGVHYW1lcGFkcyk6IFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0
ZWFkIG9mCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSk6IEJ1aWxkIHRoZSBzZXQgaW4gYSBjbGVh
bmVyCisgICAgICAgIHdheSBhbmQgdXNlIGEgTmV2ZXJEZXN0cm95ZWQgc2V0IGluc3RlYWQgb2Yg
YSBoZWFwLWFsbG9jYXRlZCBvbmUuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Rm9u
dENhc2NhZGUpOiBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBkYXRhIG1lbWJlcnMKKyAgICAgICAg
dG8gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oOiBJbml0aWFsaXplIEdseXBoT3ZlcmZsb3cgYW5kCisgICAgICAgIEZvbnN0
Q2FzY2FkZSBkYXRhIG1lbWJlcnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIFJlbW92ZSB0aGUg
Y29uc3RydWN0b3IKKyAgICAgICAgZm9yIEdseXBoT3ZlcmZsb3cgZW50aXJlbHkuIEFkZGVkIEZJ
WE1FIGFib3V0IHRoZSBwZWN1bGlhciAhPSBvcGVyYXRvciB3ZQorICAgICAgICBkZWZpbmVkIGZv
ciBHbHlwaE92ZXJmbG93LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyk6IFVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZAorICAgICAgICBv
ZiBwbGF0Zm9ybVRoZW1lKCkuCisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q01UaW1lUmFuZ2VTdGFydEtleSk6IFVzZSBDRlNUUiBkaXJlY3Rs
eSBpbnN0ZWFkIG9mIHVzaW5nCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TC4KKyAgICAgICAgKFdlYkNvcmU6OkNNVGltZVJhbmdlRHVyYXRpb25LZXkpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNBQ0ZDb250ZXh0TmVlZHNGbHVzaE5vdGlmaWNhdGlvbik6IERpdHRv
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdlc0ZsdXNo
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaGFuZ2VzRmx1c2hlcjo6c2luZ2xldG9u
KTogVXNlIE5ldmVyRGVzdHJveWVkIGluc3RlYWQgb2YKKyAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXll
ckNoYW5nZXNGbHVzaGVyLmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRl
bnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOiBVc2UgSGFzaE1hcCBjb25zdHJ1Y3RvcgorICAgICAg
ICBpbnN0ZWFkIG9mIHdyaXRpbmcgb3V0IGEgbG90IG9mIGFkZCBjYWxscy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpoYXJmQnV6ekZhY2VDYWNoZSk6IFVzZSBOZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9m
CisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udCk6IERpdHRvLgorCisgICAgICAgICogcGxh
dGZvcm0vaW9zL1RoZW1lSU9TLmg6IFRpZ2h0ZW5lZCB1cCBpbXBsZW1lbnRhdGlvbiwgcmVtb3Zp
bmcKKyAgICAgICAgdW5uZWNlc3NhcnkgbWVtYmVycyBhbmQgbWFraW5nIG92ZXJyaWRlcyBwcml2
YXRlLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlRoZW1lOjpzaW5nbGV0b24pOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1UaGVtZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5oOiBUaWdodGVuZWQgdXAgaW1wbGVtZW50YXRp
b24sIHJlbW92aW5nCisgICAgICAgIHVubmVjZXNzYXJ5IG1lbWJlcnMgYW5kIG1ha2luZyBvdmVy
cmlkZXMgcHJpdmF0ZS4gUmVtb3ZlZCB1bm5lZWRlZAorICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRCBzaW5jZSB0aGlzIGlzIG5ldmVyIGFsbG9jYXRlZCBvbiB0aGUgaGVhcC4KKyAgICAg
ICAgUmVtb3ZlZCB1bnVzZWQgLVtOU0ZvbnQgd2ViQ29yZUZhbWlseU5hbWVdIG1ldGhvZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgICgtW05TRm9udCB3ZWJD
b3JlRmFtaWx5TmFtZV0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnNpbmds
ZXRvbik6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybVRoZW1lLgorCisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg6CisgICAgICAgIFJl
bW92ZWQgdW5uZWVkZWQgaW5jbHVkZSBvZiBGb250Q2FzY2FkZS5oLgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
Lmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG93bmxvYWRCdW5kbGU6OmZpbGVFeHRlbnNp
b24pOiBVc2UgTmV2ZXJEZXN0cm95ZWQKKyAgICAgICAgaW5zdGVhZCBvZiBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VOZXdsaW5lc1dpdGhXaW5k
b3dzU3R5bGVOZXdsaW5lcyk6IFVzZQorICAgICAgICBhcHBlbmRMaXRlcmFsIGluc3RlYWQgb2Yg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMLgorCisgICAgICAgICogcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVuZGxlTmFtZSk6IFVzZSBO
ZXZlckRlc3Ryb3llZCBpbnN0ZWFkIG9mCisgICAgICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJ
Q19MT0NBTCwgYW5kIHVzZWQgYSBsYW1iZGEgdG8gaW5pdGlhbGl6ZQorICAgICAgICByYXRoZXIg
dGhhbiBhIGJvb2xlYW4gdG8gY29udHJvbCBvbmUtdGltZSBjb2RlLgorICAgICAgICAoV2ViQ29y
ZTo6c3RvcmFnZURpcmVjdG9yeSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mCisgICAgICAgIERF
UFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTCBmb3IgYSBwcmVmaXggd2UgYXJlIGFwcGVuZGlu
ZyB0bworICAgICAgICBhIFN0cmluZy4gVGhlICsgb3BlcmF0b3IgY2FuIGhhbmRsZSBhIGxpdGVy
YWwganVzdCBhcyBlZmZpY2llbnRseQorICAgICAgICB3aXRob3V0IGZpcnN0IHN0b3JpbmcgaXQg
aW4gYSBTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93cGUvVGhlbWVXUEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWU6OnNpbmdsZXRvbik6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybVRo
ZW1lLgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9UaGVtZVdQRS5oOiBUaWdodGVuZWQgdXAgaW1w
bGVtZW50YXRpb24sIHJlbW92aW5nCisgICAgICAgIHVubmVjZXNzYXJ5IG1lbWJlcnMgYW5kIG1h
a2luZyBvdmVycmlkZXMgcHJpdmF0ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6UmVuZGVyVGhlbWUpOiBObyBu
ZWVkIHRvIGluaXRpYWxpemUgbV90aGVtZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
OjphZGp1c3RTdHlsZSk6IFVzZSBUaGVtZTo6c2luZ2xldG9uKCkgaW5zdGVhZAorICAgICAgICBv
ZiBhY2Nlc3NpbmcgaXQgdGhyb3VnaCBtX3RoZW1lLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6YmFz
ZWxpbmVQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmFk
anVzdFJlcGFpbnRSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKTogRGl0dG8uCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDogUmVtb3ZlZCB1bm5lZGVkIG1fdGhlbWUgYW5kIHVubmVl
ZGVkCisgICAgICAgIGluY2x1c2lvbiBvZiBUaGVtZS5oLgorCisgICAgICAgICogcmVuZGVyaW5n
L2xpbmUvTGluZUJyZWFrZXIuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mCisgICAgICAg
IEZvbnRDYXNjYWRlLmguCisKIDIwMTctMDctMjQgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIGxpYmVwb3h5IGhlYWRlcnMgY2FuIHVzZSBFR0xf
Q0FTVCwgd2hpY2ggbWlnaHQgbm90IGJlIGRlZmluZWQgYnkgZWdscGxhdGZvcm0uaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGNmNzgzOGQyMTU4M2IxYmZhNGQ1NjdjMjE1NjNmOWFi
Y2ZhOWE5ODIuLjJjNjYxM2IwYjFhYmE2ZTdkM2FkZDZlYzNlNTk0ZDIwNzQyMThlYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wNy0yMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9yZSBOZXZlckRlc3Ryb3ll
ZCBhbmQgcmVsYXRlZCBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06IFJlbW92ZWQgYSBsb3Qg
b2YgdW5uZWVkZWQgInVzaW5nIgorICAgICAgICBmb3IgbmFtZXMgdGhhdCBhcmVuJ3QgZXZlbiB1
c2VkIGluIHRoaXMgZmlsZS4KKyAgICAgICAgKC1bRE9NTm9kZSBib3VuZGluZ0JveGVzXSk6IFVz
ZSBAW10gc3ludGF4IGluc3RlYWQgb2YKKyAgICAgICAgLVtOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpdLgorICAgICAgICAoLVtET01Ob2RlIGFic29sdXRlUXVhZHNdKTogRGl0dG8uCisgICAgICAg
ICgtW0RPTU5vZGUgZmluZEV4cGxvZGVkVGV4dE5vZGVBdFBvaW50Ol0pOiBVc2UgYXV0byogaW5z
dGVhZAorICAgICAgICBvZiB3cml0aW5nIG91dCB2YXJpb3VzIHR5cGVzLgorICAgICAgICAoLVtE
T01IVE1MQXJlYUVsZW1lbnQgYm91bmRpbmdCb3hlc1dpdGhPd25lcjpdKTogVXNlIEBbXQorICAg
ICAgICBzeW50YXggaW5zdGVhIG9mIC1bTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6XS4KKyAgICAg
ICAgKC1bRE9NSFRNTEFyZWFFbGVtZW50IGFic29sdXRlUXVhZHNXaXRoT3duZXI6XSk6IERpdHRv
LgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKTog
VXNlIGF1dG8qIGluc3RlYWQKKyAgICAgICAgb2Ygd3JpdGluZyBvdXQgdmFyaW91cyB0eXBlcy4K
KyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBtaW1lVHlwZV0pOiBEaXR0by4KKwogMjAx
Ny0wNy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggZDU4YmEyNGFmYWEwMzgwODNlZTg3NWU3MTU4YTI3NmNjM2Y5NzMyMi4uMDQzZjJjNjVm
M2FmOGM3ZTllNDAzZTc5NTQwYWRiYTIzNWRjOWQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA3LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3JlIE5ldmVyRGVzdHJveWVkIGFuZCByZWxhdGVkIGNsZWFu
dXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDc0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwZXJzaXN0ZW50UGx1
Z2luTWV0YWRhdGFDYWNoZVBhdGgpOiBVc2UgTmV2ZXJEZXN0cm95ZWQKKyAgICAgICAgaW5zdGVh
ZCBvZiBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwuCisgICAgICAgICogUGx1Z2lucy9Q
bHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXI6OnNjaGVkdWxlcik6IERpdHRvLgorICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjppbml0aWFsaXplKTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmg6IERpdHRvLgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgor
ICAgICAgICAoc2hhcmVkSGlzdG9yeVN0b3JhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBXZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAobWFpbkJ1bmRsZUxvY1N0cmluZ3MpOiBEaXR0
by4KKyAgICAgICAgKGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCk6IERpdHRvLgorICAgICAgICAo
ZnJhbWV3b3JrTG9jU3RyaW5ncyk6IERpdHRvLgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKTogRGl0
dG8uCisgICAgICAgIEFsc28gY2hhbmdlZCB0byBrZWVwIG9uZSBnbG9iYWwgc3RyaW5nIHdpdGgg
dGhlIHByZWZpeCBvZiB0aGUgdXNlciBhZ2VudCBzdHJpbmcKKyAgICAgICAgaW5zdGVhZCBvZiBr
ZWVwaW5nIHR3byBnbG9iYWxzIHdpdGggcGllY2VzIG9mIHRoYXQgcHJlZml4LgorCiAyMDE3LTA3
LTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgbW9y
ZSByZWZlcmVuY2VzIGluIGV2ZW50IGRpc3BhdGNoIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCmluZGV4IGM2
MGIwNWE3ZjUwOTlkZTVjNjNhNzg5NWI4ZDMwMjQzM2U4Mzc1YmQuLmY3MTIwZmI2ZmE1ZDA1OTll
MjI4YTM0MjU4MDBjOWFkMzI5ZGFiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcApAQCAtNzUsNyArNzUsNyBA
QCBSZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50
V2l0aEZhbGxiYWNrKERvY3VtZW50JiBkbwogUmVmPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayhEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IHRy
eVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVudChkb2N1bWVudCwgbmFtZS5sb2NhbE5hbWUoKSkpIHsK
LSAgICAgICAgaWYgKG5hbWUucHJlZml4KCkgIT0gbnVsbEF0b20oKSkKKyAgICAgICAgaWYgKCFu
YW1lLnByZWZpeCgpLmlzTnVsbCgpKQogICAgICAgICAgICAgZWxlbWVudC0+c2V0UHJlZml4KG5h
bWUucHJlZml4KCkpOwogICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBm
ZGIyZDk2OGM3N2FhYWRkNzczMDc2NTJlOWNhNjdkNDg2YTgxNTc1Li44NzNkYjlkN2IzNTU2ZWQw
YTc2ZWQyMzdjOGUyMDBkOTkxZjQwNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCkBAIC02ODMsMTQgKzY4MywxOCBAQCBzdGF0aWMgYm9vbCBwcmVmZXJz
UmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZQogewogICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gZmFsc2U7CiAKLSAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFjY2Vzc2li
aWxpdHlWYWx1ZSgpID09IFNldHRpbmdzOjpGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWU6Ok9uKQor
ICAgIHN3aXRjaCAoZnJhbWUuc2V0dGluZ3MoKS5mb3JjZWRQcmVmZXJzUmVkdWNlZE1vdGlvbkFj
Y2Vzc2liaWxpdHlWYWx1ZSgpKSB7CisgICAgY2FzZSBTZXR0aW5nczo6Rm9yY2VkQWNjZXNzaWJp
bGl0eVZhbHVlOjpPbjoKICAgICAgICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gdHJ1ZTsK
LSAgICBlbHNlIGlmIChmcmFtZS5zZXR0aW5ncygpLmZvcmNlZFByZWZlcnNSZWR1Y2VkTW90aW9u
QWNjZXNzaWJpbGl0eVZhbHVlKCkgPT0gU2V0dGluZ3M6OkZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1
ZTo6T2ZmKQotICAgICAgICB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24gPSBmYWxzZTsKLSNpZiBQ
TEFURk9STShJT1MpIHx8IFVTRShORVdfVEhFTUUpCi0gICAgZWxzZQotICAgICAgICB1c2VyUHJl
ZmVyc1JlZHVjZWRNb3Rpb24gPSBwbGF0Zm9ybVRoZW1lKCktPnVzZXJQcmVmZXJzUmVkdWNlZE1v
dGlvbigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNldHRpbmdzOjpGb3JjZWRBY2Nlc3Np
YmlsaXR5VmFsdWU6Ok9mZjoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTZXR0aW5nczo6Rm9y
Y2VkQWNjZXNzaWJpbGl0eVZhbHVlOjpTeXN0ZW06CisjaWYgVVNFKE5FV19USEVNRSkKKyAgICAg
ICAgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID0gVGhlbWU6OnNpbmdsZXRvbigpLnVzZXJQcmVm
ZXJzUmVkdWNlZE1vdGlvbigpOwogI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCAwOGZhMmI2OTRjZjM0YzljYzg1Mjk4NDYz
YTMzNDk2Zjc3YjVlN2VlLi4yZjM4YzE5ODQ1MTgwY2ExNmU0ZDE3ZjQ4NGVkNDQ0MzNiOTk5MmVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFp
dHMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0NSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICB1bnNpZ25lZCBjb21wdXRlSGFzaCgpIGNvbnN0OwogCi0gICAgICAg
IG11dGFibGUgdW5zaWduZWQgbV9leGlzdGluZ0hhc2g7CisgICAgICAgIG11dGFibGUgdW5zaWdu
ZWQgbV9leGlzdGluZ0hhc2ggeyAwIH07CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX3By
ZWZpeDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbG9jYWxOYW1lOwogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2U7CkBAIC01NiwxMiArNTQsMTEgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgbG9jYWxOYW1lTWVt
b3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFF1YWxpZmllZE5hbWVJbXBsLCBt
X2xvY2FsTmFtZSk7IH0KICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBuYW1lc3BhY2VNZW1vcnlP
ZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUXVhbGlmaWVkTmFtZUltcGwsIG1fbmFt
ZXNwYWNlKTsgfQotI2VuZGlmIC8vIEVOQUJMRShKSVQpCisjZW5kaWYKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBj
b25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3Bh
Y2VVUkkpCi0gICAgICAgICAgICA6IG1fZXhpc3RpbmdIYXNoKDApCi0gICAgICAgICAgICAsIG1f
cHJlZml4KHByZWZpeCkKKyAgICAgICAgICAgIDogbV9wcmVmaXgocHJlZml4KQogICAgICAgICAg
ICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCiAgICAgICAgICAgICAsIG1fbmFtZXNwYWNlKG5h
bWVzcGFjZVVSSSkKICAgICAgICAgewpAQCAtODEsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA9PSBvdGhlci5tX2ltcGwgfHwgKGxvY2FsTmFtZSgpID09IG90aGVyLmxvY2FsTmFtZSgp
ICYmIG5hbWVzcGFjZVVSSSgpID09IG90aGVyLm5hbWVzcGFjZVVSSSgpKTsgfQogCi0gICAgYm9v
bCBoYXNQcmVmaXgoKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPm1fcHJlZml4ICE9IG51bGxBdG9t
KCk7IH0KKyAgICBib29sIGhhc1ByZWZpeCgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGwtPm1fcHJl
Zml4LmlzTnVsbCgpOyB9CiAgICAgdm9pZCBzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgpIHsgKnRoaXMgPSBRdWFsaWZpZWROYW1lKHByZWZpeCwgbG9jYWxOYW1lKCksIG5hbWVz
cGFjZVVSSSgpKTsgfQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgoKSBjb25zdCB7
IHJldHVybiBtX2ltcGwtPm1fcHJlZml4OyB9CkBAIC05Niw3ICs5Myw3IEBAIHB1YmxpYzoKICAg
ICBRdWFsaWZpZWROYW1lSW1wbCogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5nZXQoKTsg
fQogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIHB0cmRpZmZfdCBpbXBsTWVtb3J5T2Zmc2V0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFF1YWxpZmllZE5hbWUsIG1faW1wbCk7IH0KLSNl
bmRpZiAvLyBFTkFCTEUoSklUKQorI2VuZGlmCiAgICAgCiAgICAgLy8gSW5pdCByb3V0aW5lIGZv
ciBnbG9iYWxzCiAgICAgc3RhdGljIHZvaWQgaW5pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9BdXRvZmlsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxsLmNw
cAppbmRleCA1YTFhYWQzNDZlMjM2M2RmNDk1NmFlNmQ3YTc0MDljZmYwMWE3ZjZjLi5lMzEzNDE5
ODQ4MGVkYmZmMTg5OGNiMTY2OWRiZmIyZjViYzI4ODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0F1dG9maWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9maWxs
LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEF1dG9maWxsRGF0YSBBdXRvZmlsbERhdGE6OmNyZWF0
ZUZyb21IVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IEhUTUxGb3JtQ29udHJvCiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmF1dG9jb21wbGV0ZUF0dHIpOwogCiAgICAgLy8g
MS4gSWYgdGhlIGVsZW1lbnQgaGFzIG5vIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUsIHRoZW4ganVt
cCB0byB0aGUgc3RlcCBsYWJlbGVkIGRlZmF1bHQuCi0gICAgaWYgKGF0dHJpYnV0ZVZhbHVlID09
IG51bGxBdG9tKCkpCisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdExhYmVsKCk7CiAKICAgICAvLyAyLiBMZXQgdG9rZW5zIGJlIHRoZSByZXN1
bHQgb2Ygc3BsaXR0aW5nIHRoZSBhdHRyaWJ1dGUncyB2YWx1ZSBvbiBzcGFjZXMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggZTMwNWM0ODIyMzZiNTRmZjUwODY3OGNiZDEx
ODE5MWMxZDZkMjA3Ni4uY2JkZmRkM2VmY2FhZGFmOGZiZjQwMGI2YzI1NDgwYTQzYWVkMzIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTExLDY2ICsxMTEsNiBAQCBS
ZWY8RG9jdW1lbnRQYXJzZXI+IEhUTUxEb2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKICAgICByZXR1
cm4gSFRNTERvY3VtZW50UGFyc2VyOjpjcmVhdGUoKnRoaXMpOwogfQogCi1zdGF0aWMgdm9pZCBh
ZGRMb2NhbE5hbWVUb1NldChIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiogc2V0LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBxTmFtZSkKLXsKLSAgICBzZXQtPmFkZChxTmFtZS5sb2NhbE5hbWUoKS5p
bXBsKCkpOwotfQotCi1zdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4qIGNyZWF0ZUh0
bWxDYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVzU2V0KCkKLXsKLSAgICAvLyBUaGlzIGlzIHRoZSBs
aXN0IG9mIGF0dHJpYnV0ZXMgaW4gSFRNTCA0LjAxIHdpdGggdmFsdWVzIG1hcmtlZCBhcyAiW0NJ
XSIgb3IgY2FzZS1pbnNlbnNpdGl2ZQotICAgIC8vIE1vemlsbGEgdHJlYXRzIGFsbCBvdGhlciB2
YWx1ZXMgYXMgY2FzZS1zZW5zaXRpdmUsIHRodXMgc28gZG8gd2UuCi0gICAgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4qIGF0dHJTZXQgPSBuZXcgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj47
Ci0KLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBhY2NlcHRfY2hhcnNldEF0dHIpOwot
ICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGFjY2VwdEF0dHIpOwotICAgIGFkZExvY2Fs
TmFtZVRvU2V0KGF0dHJTZXQsIGFsaWduQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0
clNldCwgYWxpbmtBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBheGlzQXR0
cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgYmdjb2xvckF0dHIpOwotICAgIGFk
ZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNoYXJzZXRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVU
b1NldChhdHRyU2V0LCBjaGVja2VkQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNl
dCwgY2xlYXJBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBjb2RldHlwZUF0
dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGNvbG9yQXR0cik7Ci0gICAgYWRk
TG9jYWxOYW1lVG9TZXQoYXR0clNldCwgY29tcGFjdEF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRv
U2V0KGF0dHJTZXQsIGRlY2xhcmVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0
LCBkZWZlckF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGRpckF0dHIpOwot
ICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGRpc2FibGVkQXR0cik7Ci0gICAgYWRkTG9j
YWxOYW1lVG9TZXQoYXR0clNldCwgZW5jdHlwZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0
KGF0dHJTZXQsIGZhY2VBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBmcmFt
ZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGhyZWZsYW5nQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgaHR0cF9lcXVpdkF0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIGxhbmdBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCBsYW5ndWFnZUF0dHIpOwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIGxp
bmtBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBtZWRpYUF0dHIpOwotICAg
IGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIG1ldGhvZEF0dHIpOwotICAgIGFkZExvY2FsTmFt
ZVRvU2V0KGF0dHJTZXQsIG11bHRpcGxlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0
clNldCwgbm9ocmVmQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbm9yZXNp
emVBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBub3NoYWRlQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgbm93cmFwQXR0cik7Ci0gICAgYWRkTG9jYWxO
YW1lVG9TZXQoYXR0clNldCwgcmVhZG9ubHlBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCByZWxBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCByZXZBdHRy
KTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBydWxlc0F0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIHNjb3BlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQo
YXR0clNldCwgc2Nyb2xsaW5nQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwg
c2VsZWN0ZWRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChhdHRyU2V0LCBzaGFwZUF0dHIp
OwotICAgIGFkZExvY2FsTmFtZVRvU2V0KGF0dHJTZXQsIHRhcmdldEF0dHIpOwotICAgIGFkZExv
Y2FsTmFtZVRvU2V0KGF0dHJTZXQsIHRleHRBdHRyKTsKLSAgICBhZGRMb2NhbE5hbWVUb1NldChh
dHRyU2V0LCB0eXBlQXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdmFsaWdu
QXR0cik7Ci0gICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdmFsdWV0eXBlQXR0cik7Ci0g
ICAgYWRkTG9jYWxOYW1lVG9TZXQoYXR0clNldCwgdmxpbmtBdHRyKTsKLQotICAgIHJldHVybiBh
dHRyU2V0OwotfQotCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9k
b20uaHRtbCNkb20tZG9jdW1lbnQtbmFtZWRpdGVtCiBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPERPTVdpbmRvdz4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+
IEhUTUxEb2N1bWVudDo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKQEAg
LTIzNSw5ICsxNzUsNjQgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OnJlbW92ZVdpbmRvd05hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBuYW1lLCBFbGVtZW50JgogCiBib29sIEhUTUxEb2N1
bWVudDo6aXNDYXNlU2Vuc2l0aXZlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCiB7Ci0gICAgc3RhdGljIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBodG1s
Q2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlc1NldCA9IGNyZWF0ZUh0bWxDYXNlSW5zZW5zaXRpdmVB
dHRyaWJ1dGVzU2V0KCk7Ci0gICAgYm9vbCBpc1Bvc3NpYmxlSFRNTEF0dHIgPSAhYXR0cmlidXRl
TmFtZS5oYXNQcmVmaXgoKSAmJiAoYXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSA9PSBudWxs
QXRvbSgpKTsKLSAgICByZXR1cm4gIWlzUG9zc2libGVIVE1MQXR0ciB8fCAhaHRtbENhc2VJbnNl
bnNpdGl2ZUF0dHJpYnV0ZXNTZXQtPmNvbnRhaW5zKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCku
aW1wbCgpKTsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBjYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVT
ZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAgICAgICAvLyBUaGlzIGlzIHRoZSBsaXN0
IG9mIGF0dHJpYnV0ZXMgaW4gSFRNTCA0LjAxIHdpdGggdmFsdWVzIG1hcmtlZCBhcyAiW0NJXSIg
b3IgY2FzZS1pbnNlbnNpdGl2ZQorICAgICAgICAvLyBNb3ppbGxhIHRyZWF0cyBhbGwgb3RoZXIg
dmFsdWVzIGFzIGNhc2Utc2Vuc2l0aXZlLCB0aHVzIHNvIGRvIHdlLgorICAgICAgICBzdGF0aWMg
Y29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgbmFtZXNbXSA9IHsKKyAgICAgICAgICAgICZhY2Nl
cHRfY2hhcnNldEF0dHIsCisgICAgICAgICAgICAmYWNjZXB0QXR0ciwKKyAgICAgICAgICAgICZh
bGlnbkF0dHIsCisgICAgICAgICAgICAmYWxpbmtBdHRyLAorICAgICAgICAgICAgJmF4aXNBdHRy
LAorICAgICAgICAgICAgJmJnY29sb3JBdHRyLAorICAgICAgICAgICAgJmNoYXJzZXRBdHRyLAor
ICAgICAgICAgICAgJmNoZWNrZWRBdHRyLAorICAgICAgICAgICAgJmNsZWFyQXR0ciwKKyAgICAg
ICAgICAgICZjb2RldHlwZUF0dHIsCisgICAgICAgICAgICAmY29sb3JBdHRyLAorICAgICAgICAg
ICAgJmNvbXBhY3RBdHRyLAorICAgICAgICAgICAgJmRlY2xhcmVBdHRyLAorICAgICAgICAgICAg
JmRlZmVyQXR0ciwKKyAgICAgICAgICAgICZkaXJBdHRyLAorICAgICAgICAgICAgJmRpc2FibGVk
QXR0ciwKKyAgICAgICAgICAgICZlbmN0eXBlQXR0ciwKKyAgICAgICAgICAgICZmYWNlQXR0ciwK
KyAgICAgICAgICAgICZmcmFtZUF0dHIsCisgICAgICAgICAgICAmaHJlZmxhbmdBdHRyLAorICAg
ICAgICAgICAgJmh0dHBfZXF1aXZBdHRyLAorICAgICAgICAgICAgJmxhbmdBdHRyLAorICAgICAg
ICAgICAgJmxhbmd1YWdlQXR0ciwKKyAgICAgICAgICAgICZsaW5rQXR0ciwKKyAgICAgICAgICAg
ICZtZWRpYUF0dHIsCisgICAgICAgICAgICAmbWV0aG9kQXR0ciwKKyAgICAgICAgICAgICZtdWx0
aXBsZUF0dHIsCisgICAgICAgICAgICAmbm9ocmVmQXR0ciwKKyAgICAgICAgICAgICZub3Jlc2l6
ZUF0dHIsCisgICAgICAgICAgICAmbm9zaGFkZUF0dHIsCisgICAgICAgICAgICAmbm93cmFwQXR0
ciwKKyAgICAgICAgICAgICZyZWFkb25seUF0dHIsCisgICAgICAgICAgICAmcmVsQXR0ciwKKyAg
ICAgICAgICAgICZyZXZBdHRyLAorICAgICAgICAgICAgJnJ1bGVzQXR0ciwKKyAgICAgICAgICAg
ICZzY29wZUF0dHIsCisgICAgICAgICAgICAmc2Nyb2xsaW5nQXR0ciwKKyAgICAgICAgICAgICZz
ZWxlY3RlZEF0dHIsCisgICAgICAgICAgICAmc2hhcGVBdHRyLAorICAgICAgICAgICAgJnRhcmdl
dEF0dHIsCisgICAgICAgICAgICAmdGV4dEF0dHIsCisgICAgICAgICAgICAmdHlwZUF0dHIsCisg
ICAgICAgICAgICAmdmFsaWduQXR0ciwKKyAgICAgICAgICAgICZ2YWx1ZXR5cGVBdHRyLAorICAg
ICAgICAgICAgJnZsaW5rQXR0ciwKKyAgICAgICAgfTsKKyAgICAgICAgSGFzaFNldDxBdG9taWNT
dHJpbmc+IHNldDsKKyAgICAgICAgZm9yIChhdXRvKiBuYW1lIDogbmFtZXMpCisgICAgICAgICAg
ICBzZXQuYWRkKG5hbWUtPmxvY2FsTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9
KCkpOworCisgICAgYm9vbCBpc1Bvc3NpYmxlSFRNTEF0dHIgPSAhYXR0cmlidXRlTmFtZS5oYXNQ
cmVmaXgoKSAmJiBhdHRyaWJ1dGVOYW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpOworICAgIHJl
dHVybiAhaXNQb3NzaWJsZUhUTUxBdHRyIHx8ICFjYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVTZXQu
Z2V0KCkuY29udGFpbnMoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7CiB9CiAKIGJvb2wgSFRN
TERvY3VtZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5h
bWVDb2xsZWN0aW9uLmNwcAppbmRleCA2ZTIwM2FlZmI0NThjMjk0M2ExOGU5OTY1MDFkMTgwNTU0
ZmZiNDdlLi5kMTBjMzdmYjIyODgxYzEzYzMwZjA3YzdiOTM0ZjkzMjc1NDZmMWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCkBAIC00MSw0NSArNDEsNDkg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlv
bjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIHJldHVybiBpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSB8fCBpczxI
VE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50
KQotICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MT2Jq
ZWN0RWxlbWVudD4oZWxlbWVudCk7CisgICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50Pihl
bGVtZW50KQorICAgICAgICB8fCBpczxIVE1MRW1iZWRFbGVtZW50PihlbGVtZW50KQorICAgICAg
ICB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxJbWFn
ZUVsZW1lbnQ+KGVsZW1lbnQpCisgICAgICAgIHx8IGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KTsKIH0KIAogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZSkKIHsKLSAg
ICAvLyBGaW5kIG9ubHkgaW1hZ2VzLCBmb3JtcywgYXBwbGV0cywgZW1iZWRzIGFuZCBvYmplY3Rz
IGJ5IG5hbWUsIGJ1dCBhbnl0aGluZyBieSBpZAotICAgIGlmIChlbGVtZW50TWF0Y2hlc0lmTmFt
ZUF0dHJpYnV0ZU1hdGNoKGVsZW1lbnQpICYmIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmlt
cGwoKSA9PSBuYW1lKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZWxlbWVudC5n
ZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lOworICAgIC8vIEZpbmQgb25seSBpbWFnZXMs
IGZvcm1zLCBhcHBsZXRzLCBlbWJlZHMgYW5kIG9iamVjdHMgYnkgbmFtZSwgYnV0IGFueXRoaW5n
IGJ5IGlkLgorICAgIHJldHVybiAoZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChl
bGVtZW50KSAmJiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSkKKyAg
ICAgICAgfHwgZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpID09IG5hbWU7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc09iamVjdEVsZW1lbnRGb3JEb2N1bWVudE5hbWVDb2xsZWN0aW9uKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlzPEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNFeHBvc2Vk
KCk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZklk
QXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byBmaXggSFRNTEltYWdlRWxlbWVudCB0byB1cGRhdGUgdGhlIGhhc2ggbWFwIGZv
ciB1cyB3aGVuIG5hbWUgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuCi0gICAgcmV0dXJuIGlz
PEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVs
ZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5pc0RvY05hbWVk
SXRlbSgpKQorICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGZpeCBIVE1MSW1hZ2VFbGVtZW50IHRv
IHVwZGF0ZSB0aGUgaGFzaCBtYXAgZm9yIHVzIHdoZW4gdGhlIG5hbWUgYXR0cmlidXRlIGlzIHJl
bW92ZWQuCisgICAgcmV0dXJuIGlzT2JqZWN0RWxlbWVudEZvckRvY3VtZW50TmFtZUNvbGxlY3Rp
b24oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCiAg
ICAgICAgIHx8IChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSAmJiBlbGVtZW50Lmhhc05h
bWUoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJ
Zk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVy
biBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVs
ZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50PihlbGVtZW50KQotICAgICAgICB8fCBpczxI
VE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50PihlbGVt
ZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuaXNEb2NOYW1lZEl0
ZW0oKSkKKyAgICByZXR1cm4gaXNPYmplY3RFbGVtZW50Rm9yRG9jdW1lbnROYW1lQ29sbGVjdGlv
bihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKKyAg
ICAgICAgfHwgaXM8SFRNTEVtYmVkRWxlbWVudD4oZWxlbWVudCkKKyAgICAgICAgfHwgaXM8SFRN
TEZvcm1FbGVtZW50PihlbGVtZW50KQorICAgICAgICB8fCBpczxIVE1MSUZyYW1lRWxlbWVudD4o
ZWxlbWVudCkKICAgICAgICAgfHwgaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCk7CiB9CiAK
IGJvb2wgRG9jdW1lbnROYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCogbmFtZSkKIHsKICAgICAvLyBGaW5k
IGltYWdlcywgZm9ybXMsIGFwcGxldHMsIGVtYmVkcywgb2JqZWN0cyBhbmQgaWZyYW1lcyBieSBu
YW1lLCBhcHBsZXRzIGFuZCBvYmplY3QgYnkgaWQsIGFuZCBpbWFnZXMgYnkgaWQKLSAgICAvLyBi
dXQgb25seSBpZiB0aGV5IGhhdmUgYSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2Ug
cnVsZSBtYXRjaGVzIElFKQotICAgIGlmIChpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8
IGlzPEhUTUxFbWJlZEVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxJRnJhbWVFbGVtZW50Pihl
bGVtZW50KSkKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwo
KSA9PSBuYW1lOwotICAgIGlmIChpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkpCi0gICAg
ICAgIHJldHVybiBlbGVtZW50LmdldE5hbWVBdHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBl
bGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWU7Ci0gICAgaWYgKGlzPEhUTUxP
YmplY3RFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIChlbGVtZW50LmdldE5hbWVB
dHRyaWJ1dGUoKS5pbXBsKCkgPT0gbmFtZSB8fCBlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1w
bCgpID09IG5hbWUpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5pc0Rv
Y05hbWVkSXRlbSgpOwotICAgIGlmIChpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KSkKLSAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpLmltcGwoKSA9PSBuYW1lIHx8
IChlbGVtZW50LmdldElkQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUgJiYgZWxlbWVudC5oYXNO
YW1lKCkpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBidXQgb25seSBpZiB0aGV5IGhhdmUg
YSBuYW1lIGF0dHJpYnV0ZSAodGhpcyB2ZXJ5IHN0cmFuZ2UgcnVsZSBtYXRjaGVzIElFKS4KKyAg
ICByZXR1cm4gKGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goZWxlbWVudCkgJiYg
ZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpCisgICAgICAgIHx8IChl
bGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChlbGVtZW50KSAmJiBlbGVtZW50LmdldElk
QXR0cmlidXRlKCkuaW1wbCgpID09IG5hbWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQzYWJjMDJlZDc5NDIwYmMwNjdjNWMwOWNhZGQy
ZTQ2Y2VhYjkzZmIuLmNmMjA2N2RjZDgyMGMzMmUwMWU0MTRlZWYyYWMzMmYyNWQyYWEyYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC02Myw4ICs2Myw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBpbmxpbmUgSFRNTE9iamVjdEVsZW1lbnQ6
OkhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikK
ICAgICA6IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRC
eVBhcnNlcikKICAgICAsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudChmb3JtKQotICAgICwgbV9kb2NO
YW1lZEl0ZW0odHJ1ZSkKLSAgICAsIG1fdXNlRmFsbGJhY2tDb250ZW50KGZhbHNlKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKG9iamVjdFRhZykpOwogfQpAQCAtMzM3LDggKzMzNSw4IEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlv
blBvaW50KQogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKLSAgICBp
ZiAoaXNDb25uZWN0ZWQoKSAmJiAhdXNlRmFsbGJhY2tDb250ZW50KCkpIHsKKyAgICB1cGRhdGVF
eHBvc2VkU3RhdGUoKTsKKyAgICBpZiAoaXNDb25uZWN0ZWQoKSAmJiAhbV91c2VGYWxsYmFja0Nv
bnRlbnQpIHsKICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAgICAgICAgIGlu
dmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKICAgICB9CkBAIC0zNTcsNyArMzU1LDcgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MT2JqZWN0RWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25z
dAogCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFja0NvbnRlbnQoKQogewot
ICAgIGlmICh1c2VGYWxsYmFja0NvbnRlbnQoKSkKKyAgICBpZiAobV91c2VGYWxsYmFja0NvbnRl
bnQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCkBAIC0z
ODUsNzMgKzM4Myw4MSBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpyZW5kZXJGYWxsYmFja0Nv
bnRlbnQoKQogICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogfQogCi0vLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCwgYWxsIGNhbGxlcnMgYXJlIGFsbW9zdCBjZXJ0
YWlubHkgd3JvbmcuCi1zdGF0aWMgYm9vbCBpc1JlY29nbml6ZWRUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUpCitzdGF0aWMgaW5saW5lIGJvb2wgcHJldmVudHNQYXJlbnRPYmpl
Y3RGcm9tRXhwb3N1cmUoY29uc3QgRWxlbWVudCYgY2hpbGQpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGF1dG8gdGFnTGlzdCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+IG1hcDsKKyAgICBzdGF0aWMgY29uc3QgYXV0byBtb3N0S25vd25U
YWdzID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKKyAgICAgICAgSGFzaFNldDxRdWFsaWZpZWRO
YW1lPiBzZXQ7CiAgICAgICAgIGF1dG8qIHRhZ3MgPSBIVE1MTmFtZXM6OmdldEhUTUxUYWdzKCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTE5hbWVzOjpIVE1MVGFnc0NvdW50
OyBpKyspIHsKLSAgICAgICAgICAgIGlmICgqdGFnc1tpXSA9PSBiZ3NvdW5kVGFnCi0gICAgICAg
ICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gY29tbWFuZFRhZwotICAgICAgICAgICAgICAgIHx8ICp0
YWdzW2ldID09IGRldGFpbHNUYWcKLSAgICAgICAgICAgICAgICB8fCAqdGFnc1tpXSA9PSBmaWdj
YXB0aW9uVGFnCi0gICAgICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gZmlndXJlVGFnCi0gICAg
ICAgICAgICAgICAgfHwgKnRhZ3NbaV0gPT0gc3VtbWFyeVRhZwotICAgICAgICAgICAgICAgIHx8
ICp0YWdzW2ldID09IHRyYWNrVGFnKSB7Ci0gICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2gg
d2UgaGF2ZSBhdG9tcyBmb3IgdGhlc2UgdGFncywgd2UgZG9uJ3Qgd2FudCB0bwotICAgICAgICAg
ICAgICAgIC8vIHRyZWF0IHRoZW0gYXMgInJlY29nbml6ZWQgdGFncyIgZm9yIHRoZSBwdXJwb3Nl
IG9mIHBhcnNpbmcKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgY2hhbmdlcyBob3cg
d2UgcGFyc2UgZG9jdW1lbnRzLgorICAgICAgICAgICAgYXV0byYgdGFnID0gKnRhZ3NbaV07Cisg
ICAgICAgICAgICAvLyBPbmx5IHRoZSBwYXJhbSBlbGVtZW50IHdhcyBleHBsaWNpdGx5IG1lbnRp
b25lZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHJ1bGUKKyAgICAgICAgICAgIC8vIHdlIHdl
cmUgdHJ5aW5nIHRvIGltcGxlbWVudCwgYnV0IHRoZXNlIGFyZSBvdGhlciBrbm93biBIVE1MIGVs
ZW1lbnRzIHRoYXQgd2UKKyAgICAgICAgICAgIC8vIGhhdmUgZGVjaWRlZCwgb3ZlciB0aGUgeWVh
cnMsIHRvIHRyZWF0IGFzIGNoaWxkcmVuIHRoYXQgZG8gbm90IHByZXZlbnQgb2JqZWN0CisgICAg
ICAgICAgICAvLyBuYW1lcyBmcm9tIGJlaW5nIGV4cG9zZWQuCisgICAgICAgICAgICBpZiAodGFn
ID09IGJnc291bmRUYWcKKyAgICAgICAgICAgICAgICB8fCB0YWcgPT0gY29tbWFuZFRhZworICAg
ICAgICAgICAgICAgIHx8IHRhZyA9PSBkZXRhaWxzVGFnCisgICAgICAgICAgICAgICAgfHwgdGFn
ID09IGZpZ2NhcHRpb25UYWcKKyAgICAgICAgICAgICAgICB8fCB0YWcgPT0gZmlndXJlVGFnCisg
ICAgICAgICAgICAgICAgfHwgdGFnID09IHBhcmFtVGFnCisgICAgICAgICAgICAgICAgfHwgdGFn
ID09IHN1bW1hcnlUYWcKKyAgICAgICAgICAgICAgICB8fCB0YWcgPT0gdHJhY2tUYWcpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXAuYWRk
KHRhZ3NbaV0tPmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICBzZXQuYWRkKHRhZyk7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1hcDsKKyAgICAgICAgcmV0dXJuIHNldDsKICAg
ICB9KCkpOwotICAgIHJldHVybiB0YWdMaXN0LmdldCgpLmNvbnRhaW5zKHRhZ05hbWUubG9jYWxO
YW1lKCkuaW1wbCgpKTsKKyAgICByZXR1cm4gbW9zdEtub3duVGFncy5nZXQoKS5jb250YWlucyhj
aGlsZC50YWdRTmFtZSgpKTsKIH0KIAotdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlRG9j
TmFtZWRJdGVtKCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwcmV2ZW50c1BhcmVudE9iamVjdEZyb21F
eHBvc3VyZShjb25zdCBOb2RlJiBjaGlsZCkKIHsKLSAgICAvLyBUaGUgcnVsZSBpcyAiPG9iamVj
dD4gZWxlbWVudHMgd2l0aCBubyBjaGlsZHJlbiBvdGhlciB0aGFuCi0gICAgLy8gPHBhcmFtPiBl
bGVtZW50cywgdW5rbm93biBlbGVtZW50cyBhbmQgd2hpdGVzcGFjZSBjYW4gYmUKLSAgICAvLyBm
b3VuZCBieSBuYW1lIGluIGEgZG9jdW1lbnQsIGFuZCBvdGhlciA8b2JqZWN0PiBlbGVtZW50cyBj
YW5ub3QuIgotICAgIGJvb2wgd2FzTmFtZWRJdGVtID0gbV9kb2NOYW1lZEl0ZW07Ci0gICAgYm9v
bCBpc05hbWVkSXRlbSA9IHRydWU7Ci0gICAgTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0g
ICAgd2hpbGUgKGNoaWxkICYmIGlzTmFtZWRJdGVtKSB7Ci0gICAgICAgIGlmIChpczxFbGVtZW50
PigqY2hpbGQpKSB7Ci0gICAgICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKmNoaWxkKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2Ugb2YgaXNSZWNvZ25pemVk
VGFnTmFtZSBpcyBhbG1vc3QgY2VydGFpbmx5IHdyb25nIGhlcmUuCi0gICAgICAgICAgICBpZiAo
aXNSZWNvZ25pemVkVGFnTmFtZShlbGVtZW50LnRhZ1FOYW1lKCkpICYmICFlbGVtZW50Lmhhc1Rh
Z05hbWUocGFyYW1UYWcpKQotICAgICAgICAgICAgICAgIGlzTmFtZWRJdGVtID0gZmFsc2U7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoaXM8VGV4dD4oKmNoaWxkKSkgewotICAgICAgICAgICAgaWYgKCFk
b3duY2FzdDxUZXh0PigqY2hpbGQpLmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKSkKLSAgICAgICAg
ICAgICAgICBpc05hbWVkSXRlbSA9IGZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGlzTmFtZWRJdGVtID0gZmFsc2U7Ci0gICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCk7CisgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkKSkKKyAgICAgICAgcmV0dXJuIHByZXZlbnRz
UGFyZW50T2JqZWN0RnJvbUV4cG9zdXJlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKSk7CisgICAg
aWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAgcmV0dXJuICFkb3duY2FzdDxUZXh0PihjaGls
ZCkuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkQmVFeHBvc2VkKGNvbnN0IEhUTUxPYmplY3RFbGVtZW50JiBl
bGVtZW50KQoreworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWRvbmUgdG8gdXNlIHRo
ZSBjb25jZXB0IG9mIGFuIGV4cG9zZWQgb2JqZWN0IGVsZW1lbnQsCisgICAgLy8gYXMgZG9jdW1l
bnRlZCBpbiB0aGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNlY3Rpb24gZGVzY3JpYmluZyBET00gdHJl
ZSBhY2Nlc3NvcnMuCisKKyAgICAvLyBUaGUgcnVsZSB3ZSB0cnkgdG8gaW1wbGVtZW50IGhlcmUs
IGZyb20gb2xkZXIgSFRNTCBzcGVjaWZpY2F0aW9ucywgaXMgIm9iamVjdCBlbGVtZW50cworICAg
IC8vIHdpdGggbm8gY2hpbGRyZW4gb3RoZXIgdGhhbiBwYXJhbSBlbGVtZW50cywgdW5rbm93biBl
bGVtZW50cyBhbmQgd2hpdGVzcGFjZSBjYW4gYmUgZm91bmQKKyAgICAvLyBieSBuYW1lIGluIGEg
ZG9jdW1lbnQsIGFuZCBvdGhlciBvYmplY3QgZWxlbWVudHMgY2Fubm90Ii4KKworICAgIGZvciAo
YXV0byogY2hpbGQgPSBlbGVtZW50LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHByZXZlbnRzUGFyZW50T2JqZWN0RnJvbUV4
cG9zdXJlKCpjaGlsZCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlm
IChpc05hbWVkSXRlbSAhPSB3YXNOYW1lZEl0ZW0gJiYgaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNo
YWRvd1RyZWUoKSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7Ci0gICAgICAgIEhU
TUxEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRG9jdW1lbnQ+KHRoaXMtPmRvY3Vt
ZW50KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEhUTUxPYmplY3RFbGVtZW50Ojp1
cGRhdGVFeHBvc2VkU3RhdGUoKQoreworICAgIGJvb2wgd2FzRXhwb3NlZCA9IHN0ZDo6ZXhjaGFu
Z2UobV9pc0V4cG9zZWQsIHNob3VsZEJlRXhwb3NlZCgqdGhpcykpOworCisgICAgaWYgKG1faXNF
eHBvc2VkICE9IHdhc0V4cG9zZWQgJiYgaXNDb25uZWN0ZWQoKSAmJiAhaXNJblNoYWRvd1RyZWUo
KSAmJiBpczxIVE1MRG9jdW1lbnQ+KGRvY3VtZW50KCkpKSB7CisgICAgICAgIGF1dG8mIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8SFRNTERvY3VtZW50Pih0aGlzLT5kb2N1bWVudCgpKTsKIAotICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZ2V0SWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgYXV0
byYgaWQgPSBnZXRJZEF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgaWYgKGlzTmFtZWRJdGVtKQorICAgICAgICAgICAgaWYgKG1faXNFeHBvc2Vk
KQogICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZERvY3VtZW50TmFtZWRJdGVtKCppZC5pbXBs
KCksICp0aGlzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBkb2N1bWVudC5y
ZW1vdmVEb2N1bWVudE5hbWVkSXRlbSgqaWQuaW1wbCgpLCAqdGhpcyk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBnZXROYW1lQXR0cmlidXRlKCk7Cisg
ICAgICAgIGF1dG8mIG5hbWUgPSBnZXROYW1lQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghbmFt
ZS5pc0VtcHR5KCkgJiYgaWQgIT0gbmFtZSkgewotICAgICAgICAgICAgaWYgKGlzTmFtZWRJdGVt
KQorICAgICAgICAgICAgaWYgKG1faXNFeHBvc2VkKQogICAgICAgICAgICAgICAgIGRvY3VtZW50
LmFkZERvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZURvY3VtZW50TmFtZWRJdGVtKCpu
YW1lLmltcGwoKSwgKnRoaXMpOwogICAgICAgICB9CiAgICAgfQotICAgIG1fZG9jTmFtZWRJdGVt
ID0gaXNOYW1lZEl0ZW07CiB9CiAKIGJvb2wgSFRNTE9iamVjdEVsZW1lbnQ6OmNvbnRhaW5zSmF2
YUFwcGxldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5k
ZXggNmNkMTQwNTQ3NTNlZWYwNzRiMDFmMmU0Zjk0MjI3NzI5YWRhM2FmZC4uZWMwODkyN2JlNjZm
ZWUzNDgwNzU0ZDNjZjg2OWIwYzFhODIzODI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxI
VE1MT2JqZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5I
VE1MT2JqZWN0RWxlbWVudCgpOwogCi0gICAgYm9vbCBpc0RvY05hbWVkSXRlbSgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jTmFtZWRJdGVtOyB9CisgICAgYm9vbCBpc0V4cG9zZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRXhwb3NlZDsgfQogICAgIGJvb2wgY29udGFpbnNKYXZhQXBwbGV0KCkgY29uc3Q7
CiAKICAgICBib29sIGhhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0OwpAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgdXBkYXRlV2lkZ2V0KENyZWF0ZVBs
dWdpbnMpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRG9jTmFtZWRJdGVtKCk7CisgICAgdm9pZCB1
cGRhdGVFeHBvc2VkU3RhdGUoKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3Vs
ZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQogICAgIC8vIHNvIHRoYXQgd2UgY2Fu
IGJldHRlciBzaGFyZSBjb2RlIGJldHdlZW4gPG9iamVjdD4gYW5kIDxlbWJlZD4uCkBAIC0xMDMs
OCArMTAzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgbV9kb2NOYW1lZEl0ZW0gOiAxOwotICAgIGJvb2wg
bV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOworICAgIGJvb2wgbV9pc0V4cG9zZWQgeyB0cnVlIH07
CisgICAgYm9vbCBtX3VzZUZhbGxiYWNrQ29udGVudCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggMTkzNGIzNTY1
MzI1MWUzODNmNDg4NTljMTE3MjA3ZTYyY2Y4OTRkYi4uN2U0ZDM3M2Q1NGNkMWQ1NjM0NzgzZjMx
MmM5MGY5MmRkMjE2N2RiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhl
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNywzMyArMjcs
NzMgQEAKICNpbmNsdWRlICJUaGVtZS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisjaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2ludCBUaGVtZTo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQo
Q29udHJvbFBhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0ZDo6b3B0aW9uYWw8
Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWU6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBj
b25zdCBGb250Q2FzY2FkZSYsIGZsb2F0KSBjb25zdAoreworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Cit9CisKK0xlbmd0aFNpemUgVGhlbWU6OmNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpvb21lZFNpemUsIGZsb2F0KSBjb25z
dAoreworICAgIHJldHVybiB6b29tZWRTaXplOworfQorCitMZW5ndGhTaXplIFRoZW1lOjptaW5p
bXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHsgeyAwLCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsKK30KKwor
Ym9vbCBUaGVtZTo6Y29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVGhlbWU6OnBhaW50KENvbnRyb2xQ
YXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQsIFNjcm9sbFZpZXcqLCBmbG9hdCwgZmxvYXQpCit7Cit9CisKK3ZvaWQgVGhlbWU6Omlu
ZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwg
RmxvYXRSZWN0JiwgZmxvYXQpIGNvbnN0Cit7Cit9CisKK2Jvb2wgVGhlbWU6OnVzZXJQcmVmZXJz
UmVkdWNlZE1vdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2Nh
ZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2Ug
TWVudWxpc3RQYXJ0OgotICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKLSAgICAgICAgY2Fz
ZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgIGNhc2UgUmFkaW9QYXJ0OgotICAgICAgICAgICAgcmV0
dXJuIExlbmd0aEJveCgwKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB6
b29tZWRCb3g7CisgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKKyAgICBjYXNlIE1lbnVsaXN0UGFy
dDoKKyAgICBjYXNlIFNlYXJjaEZpZWxkUGFydDoKKyAgICBjYXNlIENoZWNrYm94UGFydDoKKyAg
ICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94OwogICAgIH0KIH0KIAogTGVuZ3RoQm94IFRo
ZW1lOjpjb250cm9sUGFkZGluZyhDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCkgY29uc3QKIHsKICAgICBzd2l0Y2gg
KHBhcnQpIHsKLSAgICAgICAgY2FzZSBNZW51bGlzdFBhcnQ6Ci0gICAgICAgIGNhc2UgTWVudWxp
c3RCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIENoZWNrYm94UGFydDoKLSAgICAgICAgY2FzZSBS
YWRpb1BhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDApOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIHpvb21lZEJveDsKKyAgICBjYXNlIE1lbnVsaXN0UGFy
dDoKKyAgICBjYXNlIE1lbnVsaXN0QnV0dG9uUGFydDoKKyAgICBjYXNlIENoZWNrYm94UGFydDoK
KyAgICBjYXNlIFJhZGlvUGFydDoKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gem9vbWVkQm94OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmgKaW5kZXggOTQwMjlkNzcxMmYyNTExYWJkYTg5MTNiOTY5MjlmMTBiMDc3YWZi
Zi4uNThkODA5OGMzZTNmMDI3YzgxYTFhYjA2NjZiNmEyN2UwYjY2ZTg2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAx
NyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDEwNSArMjMsNjkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgVGhlbWVfaAotI2RlZmluZSBUaGVtZV9oCisjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgotI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCi0jaW5jbHVkZSAiTGVuZ3RoQm94LmgiCi0jaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgog
I2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRy
b2xTdGF0ZXM7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBGb250Q2FzY2FkZTsKK2NsYXNzIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb247CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBMZW5n
dGhCb3g7CiBjbGFzcyBTY3JvbGxWaWV3OwogCi0vLyBVbmxpa2Ugb3RoZXIgcGxhdGZvcm0gY2xh
c3NlcywgVGhlbWUgZG9lcyBleHRlbnNpdmVseSB1c2UgdmlydHVhbCBmdW5jdGlvbnMuICBUaGlz
IGRlc2lnbiBhbGxvd3MgYSBwbGF0Zm9ybSB0byBzd2l0Y2ggYmV0d2VlbiBtdWx0aXBsZSB0aGVt
ZXMgYXQgcnVudGltZS4KK3N0cnVjdCBMZW5ndGhTaXplOworCiBjbGFzcyBUaGVtZSB7CiBwdWJs
aWM6Ci0gICAgVGhlbWUoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZSgpIHsgfQorICAgIHN0YXRp
YyBUaGVtZSYgc2luZ2xldG9uKCk7CiAKLSAgICAvLyBBIG1ldGhvZCB0byBvYnRhaW4gdGhlIGJh
c2VsaW5lIHBvc2l0aW9uIGFkanVzdG1lbnQgZm9yIGEgImxlYWYiIGNvbnRyb2wuICBUaGlzIHdp
bGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKKyAgICAvLyBBIGZ1bmN0aW9uIHRvIG9idGFp
biB0aGUgYmFzZWxpbmUgcG9zaXRpb24gYWRqdXN0bWVudCBmb3IgYSAibGVhZiIgY29udHJvbC4g
VGhpcyB3aWxsIGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBi
ZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250ZW50LiBDaGVja2JveGVzIGFuZCBy
YWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgotICAgIC8vIGNvbnRyb2xzIHRoYXQgbmVlZCB0
byBkbyB0aGlzLiAgVGhlIGFkanVzdG1lbnQgaXMgYW4gb2Zmc2V0IHRoYXQgYWRkcyB0byB0aGUg
YmFzZWxpbmUsIGUuZy4sIG1hcmdpblRvcCgpICsgaGVpZ2h0KCkgKyB8b2Zmc2V0fC4KKyAgICAv
LyBjb250cm9scyB0aGF0IG5lZWQgdG8gZG8gdGhpcy4gVGhlIGFkanVzdG1lbnQgaXMgYW4gb2Zm
c2V0IHRoYXQgYWRkcyB0byB0aGUgYmFzZWxpbmUsIGUuZy4sIG1hcmdpblRvcCgpICsgaGVpZ2h0
KCkgKyB8b2Zmc2V0fC4KICAgICAvLyBUaGUgb2Zmc2V0IGlzIG5vdCB6b29tZWQuCi0gICAgdmly
dHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChD
b250cm9sUGFydCkgY29uc3Q7CiAKLSAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIGNvbnRy
b2wgY2hhbmdlcyBpdHMgYXBwZWFyYW5jZSB3aGVuIHRoZSB3aW5kb3cgaXMgaW5hY3RpdmUuCi0g
ICAgdmlydHVhbCBib29sIGNvbnRyb2xIYXNJbmFjdGl2ZUFwcGVhcmFuY2UoQ29udHJvbFBhcnQp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgCi0gICAgLy8gR2VuZXJhbCBtZXRob2RzIGZv
ciB3aGV0aGVyIG9yIG5vdCBhbnkgb2YgdGhlIGNvbnRyb2xzIGluIHRoZSB0aGVtZSBjaGFuZ2Ug
YXBwZWFyYW5jZSB3aGVuIHRoZSB3aW5kb3cgaXMgaW5hY3RpdmUgb3IKLSAgICAvLyB3aGVuIGhv
dmVyZWQgb3Zlci4KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbHNDYW5IYXZlSW5hY3RpdmVBcHBl
YXJhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJv
bHNDYW5IYXZlSG92ZXJlZEFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgLy8gVXNlZCBieSBSZW5kZXJUaGVtZTo6aXNDb250cm9sU3R5bGVkIHRvIGZpZ3VyZSBvdXQg
aWYgdGhlIG5hdGl2ZSBsb29rIGFuZCBmZWVsIHNob3VsZCBiZSB0dXJuZWQgb2ZmLgotICAgIHZp
cnR1YWwgYm9vbCBjb250cm9sRHJhd3NCb3JkZXIoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udHJvbERyYXdzQmFja2dyb3VuZChDb250cm9s
UGFydCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sRHJh
d3NGb2N1c091dGxpbmUoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAg
IC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyBwbGF0Zm9ybS1zcGVjaWZpYyBjb2xvcnMuCi0gICAg
dmlydHVhbCBDb2xvciBzZWxlY3Rpb25Db2xvcihDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0
YXRlcyYsIFNlbGVjdGlvblBhcnQpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICB2aXJ0
dWFsIENvbG9yIHRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9y
KCk7IH0KLSAgICAKLSAgICAvLyBDU1Mgc3lzdGVtIGNvbG9ycyBhbmQgZm9udHMKLSAgICB2aXJ0
dWFsIENvbG9yIHN5c3RlbUNvbG9yKFRoZW1lQ29sb3IpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7
IH0KLSAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlIHN5c3RlbUZvbnQoVGhlbWVGb250LCBGb250RGVz
Y3JpcHRpb24mKSBjb25zdCB7IHJldHVybiBGb250Q2FzY2FkZSgpOyB9Ci0gICAgCi0gICAgLy8g
SG93IGZhc3QgdGhlIGNhcmV0IGJsaW5rcyBpbiB0ZXh0IGZpZWxkcy4KLSAgICB2aXJ0dWFsIFNl
Y29uZHMgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyByZXR1cm4gNTAwX21zOyB9Ci0KLSAg
ICAvLyBOb3RpZmljYXRpb24gd2hlbiB0aGUgdGhlbWUgaGFzIGNoYW5nZWQKLSAgICB2aXJ0dWFs
IHZvaWQgdGhlbWVDaGFuZ2VkKCkgeyB9Ci0KLSAgICAvLyBNZXRob2RzIHVzZWQgdG8gYWRqdXN0
IHRoZSBSZW5kZXJTdHlsZXMgb2YgY29udHJvbHMuCi0gICAgCiAgICAgLy8gVGhlIGZvbnQgZGVz
Y3JpcHRpb24gcmVzdWx0IHNob3VsZCBoYXZlIGEgem9vbWVkIGZvbnQgc2l6ZS4KLSAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gY29udHJvbEZvbnQoQ29u
dHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotICAgIAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25h
bDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3Qg
Rm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKKwogICAgIC8vIFRoZSBzaXpl
IGhlcmUgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzIGFscmVhZHkuIElmIGEgbmV3IHNpemUgaXMg
cmV0dXJuZWQsIGl0IGFsc28gbmVlZHMgdG8gYmUgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgotICAg
IHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCAvKnpvb21GYWN0b3Iq
LykgY29uc3QgeyByZXR1cm4gem9vbWVkU2l6ZTsgfQotICAgIAotICAgIC8vIFJldHVybnMgdGhl
IG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpvb21lZCBjb29yZGluYXRlcy4gIAotICAg
IHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgcmV0dXJuIHsgeyAw
LCBGaXhlZCB9LCB7IDAsIEZpeGVkIH0gfTsgfQorICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250
cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKKworICAgIC8vIFJldHVybnMg
dGhlIG1pbmltdW0gc2l6ZSBmb3IgYSBjb250cm9sIGluIHpvb21lZCBjb29yZGluYXRlcy4KKyAg
ICB2aXJ0dWFsIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwogICAgIAogICAgIC8vIEFs
bG93cyB0aGUgdGhlbWUgdG8gbW9kaWZ5IHRoZSBleGlzdGluZyBwYWRkaW5nL2JvcmRlci4KICAg
ICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9sUGFkZGluZyhDb250cm9sUGFydCwgY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3Q7CiAgICAgdmlydHVhbCBMZW5ndGhCb3ggY29udHJvbEJvcmRlcihDb250cm9sUGFydCwg
Y29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9v
bUZhY3RvcikgY29uc3Q7Ci0gICAgCisKICAgICAvLyBXaGV0aGVyIG9yIG5vdCB3aGl0ZXNwYWNl
OiBwcmUgc2hvdWxkIGJlIGZvcmNlZCBvbiBhbHdheXMuCi0gICAgdmlydHVhbCBib29sIGNvbnRy
b2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJv
bFBhcnQpIGNvbnN0OwogCiAgICAgLy8gTWV0aG9kIGZvciBwYWludGluZyBhIGNvbnRyb2wuIFRo
ZSByZWN0IGlzIGluIHpvb21lZCBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
Q29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywgU2Nyb2xsVmlldyos
IGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2NhbGVGYWN0b3IqLykg
eyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3Rvcik7CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2YgdGhl
aXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAgV2hl
biB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBjb21t
dW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNhbiBp
bnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgogICAgIC8vIFRoZSByZWN0IHBhc3NlZCBpbiBp
cyBpbiB6b29tZWQgY29vcmRpbmF0ZXMsIHNvIHRoZSBpbmZsYXRpb24gc2hvdWxkIHRha2UgdGhh
dCBpbnRvIGFjY291bnQgYW5kIG1ha2Ugc3VyZSB0aGUgaW5mbGF0aW9uCiAgICAgLy8gYW1vdW50
IGlzIGFsc28gc2NhbGVkIGJ5IHRoZSB6b29tRmFjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBpbmZs
YXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZs
b2F0UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovKSBjb25zdCB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0
b3IpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgdmly
dHVhbCBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigpIGNvbnN0Owog
Ci0gICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIG9uY2UsIGZyb20gUmVuZGVyVGhlbWU6OmFk
anVzdERlZmF1bHRTdHlsZVNoZWV0KCksIHRvIGxldCBlYWNoIHBsYXRmb3JtIGFkanVzdAotICAg
IC8vIHRoZSBkZWZhdWx0IENTUyBydWxlcyBpbiBodG1sLmNzcy4KLSAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHRTdHlsZVNoZWV0KCk7Citwcm90ZWN0ZWQ6CisgICAgVGhlbWUoKSA9IGRlZmF1bHQ7
CisgICAgdmlydHVhbCB+VGhlbWUoKSB7IH0KIAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIENvbG9y
IG1fYWN0aXZlU2VsZWN0aW9uQ29sb3I7Ci0gICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlU2Vs
ZWN0aW9uQ29sb3I7CisgICAgVGhlbWUoY29uc3QgVGhlbWUmKSA9IGRlbGV0ZTsKKyAgICB2b2lk
IG9wZXJhdG9yPShjb25zdCBUaGVtZSYpID0gZGVsZXRlOwogfTsKIAotLy8gRnVuY3Rpb24gdG8g
b2J0YWluIHRoZSB0aGVtZS4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtLXNw
ZWNpZmljIHN1YmNsYXNzZXMuCi1UaGVtZSogcGxhdGZvcm1UaGVtZSgpOwotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9UaGVtZUNvY29hLmgKaW5kZXggZGM1MTg0NzBkNmNiNTZhYjc1NDYxMTIxZTBiZTNh
NGRiNzI3N2FkNC4uZTM0YmJkMDAwZTJjZTUzOTZlYmJmZjUzMzMyYTQ0MGYyYjQzN2M2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMjMsMjEgKzIz
LDE3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgVGhlbWVDb2NvYV9oCi0jZGVm
aW5lIFRoZW1lQ29jb2FfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJUaGVtZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRoZW1lQ29jb2EgOiBwdWJsaWMgVGhlbWUgewot
cHVibGljOgotICAgIFRoZW1lQ29jb2EoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZUNvY29hKCkg
eyB9Ci0KLSAgICB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworcHJvdGVjdGVkOgorICAg
IFRoZW1lQ29jb2EoKSA9IGRlZmF1bHQ7Citwcml2YXRlOgorICAgIHZvaWQgZHJhd05hbWVkSW1h
Z2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgY29u
c3QgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVt
ZUNvY29hX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCmlu
ZGV4IDQ4YjJlNWU0YjUyN2VhMWRhMDRkOTMyYTM3ODA0YzBjYjU3Y2UwNmMuLjg2MTUwZTVhOGFl
MzdiY2FhY2UxNDJlMTJhZjhhZDAzMDk1YjljZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVGhlbWVDb2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIlRoZW1lQ29jb2EuaCIKIAorI2ltcG9ydCAiRm9udENhc2NhZGUuaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCA8ZGxmY24uaD4KIApAQCAtNTEsNiArNTIs
NyBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9Cb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwogfQogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
Kwogc3RhdGljIE5TQnVuZGxlICpwYXNzS2l0QnVuZGxlKCkKIHsKICAgICBzdGF0aWMgTlNCdW5k
bGUgKnBhc3NLaXRCdW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
YW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dh
bWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCmluZGV4IGI4YmQyMWE1ZTg2NjIyNjI0ZDNjZDdh
OWRjODM1MmMyNGUyNDU4NGIuLjNjOGRkNzNmZWVkMWYzMDExNmUxY2MzNDM3ZjdkZTQyNjRmZTRh
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1l
cGFkc0dsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvZ2xpYi9H
YW1lcGFkc0dsaWIuY3BwCkBAIC0yMTAsOCArMjEwLDggQEAgZ2Jvb2xlYW4gR2FtZXBhZHNHbGli
Ojppc0dhbWVwYWREZXZpY2UoR1VkZXZEZXZpY2UqIGRldmljZSkKIAogdm9pZCBzYW1wbGVHYW1l
cGFkcyhHYW1lcGFkTGlzdCogaW50bykKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoR2FtZXBhZHNHbGliLCBnYW1lcGFkc0dsaWIsIChpbnRvLT5sZW5ndGgoKSkpOwotICAg
IGdhbWVwYWRzR2xpYi51cGRhdGVHYW1lcGFkTGlzdChpbnRvKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8R2FtZXBhZHNHbGliPiBnYW1lcGFkc0dsaWIoaW50by0+bGVuZ3RoKCk7CisgICAg
Z2FtZXBhZHNHbGliLmdldCgpLnVwZGF0ZUdhbWVwYWRMaXN0KGludG8pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKaW5kZXggZDdjOWQ0MjRhMmJmYTIyNjE2NjA0YmFkNDU4ZjZmYmI0MjI4
NzJkZC4uZWYwN2E4MDQzOTBhNTkzNGUxMDYxY2U3ZDNmOTFjM2M0MTA4NTU5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsNTAgKzM0LDQxIEBA
CiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKLSNpZiBVU0UoQ0FJUk8pCi0j
aW5jbHVkZSA8Y2Fpcm8uaD4KLSNlbmRpZgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgPGNhaXJv
Lmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmlj
b2RlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBSZWY8Rm9udENhc2NhZGVGb250
cz4gcmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
LCBSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKTsKLQogc3RhdGljIGJvb2wgdXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewogICAgIGlmIChm
YW1pbHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3RhdGljIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiogc2V0OwotICAgIGlmICghc2V0KSB7Ci0gICAgICAgIHNldCA9IG5l
dyBIYXNoU2V0PEF0b21pY1N0cmluZz47Ci0gICAgICAgIHNldC0+YWRkKCJNUyBQR290aGljIik7
Ci0gICAgICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQR290aGljW10gPSB7MHhGRjJELCAweEZGMzMs
IDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUZ9OwotICAgICAg
ICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BHb3RoaWMsIFdURl9BUlJBWV9M
RU5HVEgodW5pY29kZU5hbWVNU1BHb3RoaWMpKSk7Ci0KLSAgICAgICAgc2V0LT5hZGQoIk1TIFBN
aW5jaG8iKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BNaW5jaG9bXSA9IHsweEZGMkQs
IDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEfTsKLSAgICAgICAgc2V0LT5h
ZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQTWluY2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVu
aWNvZGVOYW1lTVNQTWluY2hvKSkpOwotCi0gICAgICAgIHNldC0+YWRkKCJNUyBHb3RoaWMiKTsK
LSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU0dvdGhpY1tdID0gezB4RkYyRCwgMHhGRjMzLCAw
eDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07Ci0gICAgICAgIHNldC0+YWRk
KEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TR290aGljLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNv
ZGVOYW1lTVNHb3RoaWMpKSk7Ci0KLSAgICAgICAgc2V0LT5hZGQoIk1TIE1pbmNobyIpOwotICAg
ICAgICBVQ2hhciB1bmljb2RlTmFtZU1TTWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAy
MCwgMHg2NjBFLCAweDY3MUR9OwotICAgICAgICBzZXQtPmFkZChBdG9taWNTdHJpbmcodW5pY29k
ZU5hbWVNU01pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1TTWluY2hvKSkpOwot
Ci0gICAgICAgIHNldC0+YWRkKCJNZWlyeW8iKTsKLSAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVN
ZWlyeW9bXSA9IHsweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUF9OwotICAgICAgICBzZXQt
PmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8sIFdURl9BUlJBWV9MRU5HVEgodW5p
Y29kZU5hbWVNZWlyeW8pKSk7Ci0gICAgfQotICAgIHJldHVybiBzZXQtPmNvbnRhaW5zKGZhbWls
eSk7CisgICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsK
KyAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNldDsKKyAgICAgICAgYXV0byBhZGQgPSBb
JnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVQ2hhcj4gdW5p
Y29kZU5hbWUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5hbWVMZW5ndGggPSBzdHJsZW4obmFt
ZSk7CisgICAgICAgICAgICBzZXQuYWRkKEF0b21pY1N0cmluZyB7IG5hbWUsIG5hbWVMZW5ndGgs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwgfSk7CisgICAgICAgICAgICB1bnNp
Z25lZCB1bmljb2RlTmFtZUxlbmd0aCA9IHVuaWNvZGVOYW1lLnNpemUoKTsKKyAgICAgICAgICAg
IHNldC5hZGQoQXRvbWljU3RyaW5nIHsgdW5pY29kZU5hbWUuYmVnaW4oKSwgdW5pY29kZU5hbWVM
ZW5ndGggfSk7CisgICAgICAgIH07CisgICAgICAgIGFkZCgiTVMgUEdvdGhpYyIsIHsgMHhGRjJE
LCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUYg
fSk7CisgICAgICAgIGFkZCgiTVMgUE1pbmNobyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwg
MHhGRjMwLCAweDY2MEUsIDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKCJNUyBHb3RoaWMiLCB7IDB4
RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRiB9KTsK
KyAgICAgICAgYWRkKCJNUyBNaW5jaG8iLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4NjYw
RSwgMHg2NzFEIH0pOworICAgICAgICBhZGQoIk1laXJ5byIsIHsgMHgzMEUxLCAweDMwQTQsIDB4
MzBFQSwgMHgzMEFBIH0pOworICAgICAgICByZXR1cm4gc2V0OworICAgIH0oKSk7CisgICAgcmV0
dXJuIHNldC5nZXQoKS5jb250YWlucyhmYW1pbHkpOwogfQogCiBGb250Q2FzY2FkZTo6Q29kZVBh
dGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBBdXRvOwpAQCAtODgsMTEgKzc5LDYgQEAgRm9u
dENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpzX2NvZGVQYXRoID0gQXV0bzsKIAogRm9u
dENhc2NhZGU6OkZvbnRDYXNjYWRlKCkKICAgICA6IG1fd2Vha1B0ckZhY3RvcnkodGhpcykKLSAg
ICAsIG1fbGV0dGVyU3BhY2luZygwKQotICAgICwgbV93b3JkU3BhY2luZygwKQotICAgICwgbV91
c2VCYWNrc2xhc2hBc1llblN5bWJvbChmYWxzZSkKLSAgICAsIG1fZW5hYmxlS2VybmluZyhmYWxz
ZSkKLSAgICAsIG1fcmVxdWlyZXNTaGFwaW5nKGZhbHNlKQogewogfQogCkBAIC0xMTEsOSArOTcs
NiBAQCBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlv
biYgZmQsIGZsb2F0IGxldHRlclNwYWNpbmcsCiBGb250Q2FzY2FkZTo6Rm9udENhc2NhZGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udERhdGEsIEZvbnRTbW9vdGhpbmdNb2RlIGZvbnRTbW9v
dGhpbmdNb2RlKQogICAgIDogbV9mb250cyhGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGVGb3JQbGF0
Zm9ybUZvbnQoZm9udERhdGEpKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlzKQotICAgICwg
bV9sZXR0ZXJTcGFjaW5nKDApCi0gICAgLCBtX3dvcmRTcGFjaW5nKDApCi0gICAgLCBtX3VzZUJh
Y2tzbGFzaEFzWWVuU3ltYm9sKGZhbHNlKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGNvbXB1dGVF
bmFibGVLZXJuaW5nKCkpCiAgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhjb21wdXRlUmVxdWlyZXNT
aGFwaW5nKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaAppbmRleCA3NzFjNmZiZTZjMjRiOGE0NmYyZDBiYTY1MjQ5ZTA1MWZhNjFlMjhlLi4z
Y2QyMTQ0MjdjYzljYTM5Y2I0ZjU1MWVmM2FjZjJhYzE2YWUzYzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDAgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAxMCwgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIyLDE1ICsyMiwxMyBAQAogICoKICAqLwogCi0j
aWZuZGVmIEZvbnRDYXNjYWRlX2gKLSNkZWZpbmUgRm9udENhc2NhZGVfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
Rm9udENhc2NhZGVGb250cy5oIgogI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgogI2luY2x1
ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CkBAIC00NCwxMyArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0
UG9pbnQ7Ci1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBGb250RGF0YTsKLWNsYXNzIEZvbnRNZXRy
aWNzOwotY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIEZvbnRTZWxlY3RvcjsKLWNsYXNz
IEdseXBoQnVmZmVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgTGF5b3V0UmVjdDsK
IGNsYXNzIFJlbmRlclRleHQ7CkBAIC02MCwyMSArNTEsMTIgQEAgY2xhc3MgVGV4dFJ1bjsKIHN0
cnVjdCBHbHlwaERhdGE7CiAKIHN0cnVjdCBHbHlwaE92ZXJmbG93IHsKLSAgICBHbHlwaE92ZXJm
bG93KCkKLSAgICAgICAgOiBsZWZ0KDApCi0gICAgICAgICwgcmlnaHQoMCkKLSAgICAgICAgLCB0
b3AoMCkKLSAgICAgICAgLCBib3R0b20oMCkKLSAgICAgICAgLCBjb21wdXRlQm91bmRzKGZhbHNl
KQotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBpc0VtcHR5KCkKKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFsZWZ0ICYmICFyaWdodCAmJiAh
dG9wICYmICFib3R0b207CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgZXh0ZW5kVG8oY29uc3Qg
R2x5cGhPdmVyZmxvdyYgb3RoZXIpCisgICAgdm9pZCBleHRlbmRUbyhjb25zdCBHbHlwaE92ZXJm
bG93JiBvdGhlcikKICAgICB7CiAgICAgICAgIGxlZnQgPSBzdGQ6Om1heChsZWZ0LCBvdGhlci5s
ZWZ0KTsKICAgICAgICAgcmlnaHQgPSBzdGQ6Om1heChyaWdodCwgb3RoZXIucmlnaHQpOwpAQCAt
ODQsMTQgKzY2LDE1IEBAIHN0cnVjdCBHbHlwaE92ZXJmbG93IHsKIAogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBHbHlwaE92ZXJmbG93JiBvdGhlcikKICAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBQcm9iYWJseSBzaG91bGQgbmFtZSB0aGlzIHJhdGhlciB0aGFuIG1ha2luZyBpdCB0aGUgIT0g
b3BlcmF0b3Igc2luY2UgaXQgaWdub3JlcyB0aGUgdmFsdWUgb2YgY29tcHV0ZUJvdW5kcy4KICAg
ICAgICAgcmV0dXJuIGxlZnQgIT0gb3RoZXIubGVmdCB8fCByaWdodCAhPSBvdGhlci5yaWdodCB8
fCB0b3AgIT0gb3RoZXIudG9wIHx8IGJvdHRvbSAhPSBvdGhlci5ib3R0b207CiAgICAgfQogCi0g
ICAgaW50IGxlZnQ7Ci0gICAgaW50IHJpZ2h0OwotICAgIGludCB0b3A7Ci0gICAgaW50IGJvdHRv
bTsKLSAgICBib29sIGNvbXB1dGVCb3VuZHM7CisgICAgaW50IGxlZnQgeyAwIH07CisgICAgaW50
IHJpZ2h0IHsgMCB9OworICAgIGludCB0b3AgeyAwIH07CisgICAgaW50IGJvdHRvbSB7IDAgfTsK
KyAgICBib29sIGNvbXB1dGVCb3VuZHMgeyBmYWxzZSB9OwogfTsKIAogY2xhc3MgR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yIHsKQEAgLTMyNSwxMSArMzA4LDExIEBAIHByaXZhdGU6CiAgICAgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiBtX2ZvbnREZXNjcmlwdGlvbjsKICAgICBtdXRhYmxlIFJlZlB0cjxG
b250Q2FzY2FkZUZvbnRzPiBtX2ZvbnRzOwogICAgIFdlYWtQdHJGYWN0b3J5PEZvbnRDYXNjYWRl
PiBtX3dlYWtQdHJGYWN0b3J5OwotICAgIGZsb2F0IG1fbGV0dGVyU3BhY2luZzsKLSAgICBmbG9h
dCBtX3dvcmRTcGFjaW5nOwotICAgIG11dGFibGUgYm9vbCBtX3VzZUJhY2tzbGFzaEFzWWVuU3lt
Ym9sOwotICAgIG11dGFibGUgdW5zaWduZWQgbV9lbmFibGVLZXJuaW5nIDogMTsgLy8gQ29tcHV0
ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcmVxdWly
ZXNTaGFwaW5nIDogMTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KKyAgICBm
bG9hdCBtX2xldHRlclNwYWNpbmcgeyAwIH07CisgICAgZmxvYXQgbV93b3JkU3BhY2luZyB7IDAg
fTsKKyAgICBtdXRhYmxlIGJvb2wgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCB7IGZhbHNlIH07
CisgICAgbXV0YWJsZSBib29sIG1fZW5hYmxlS2VybmluZyB7IGZhbHNlIH07IC8vIENvbXB1dGVk
IGZyb20gbV9mb250RGVzY3JpcHRpb24uCisgICAgbXV0YWJsZSBib29sIG1fcmVxdWlyZXNTaGFw
aW5nIHsgZmFsc2UgfTsgLy8gQ29tcHV0ZWQgZnJvbSBtX2ZvbnREZXNjcmlwdGlvbi4KIH07CiAK
IHZvaWQgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKQEAgLTM3MCw1ICszNTMsMyBAQCBp
bmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldpZHRoKGNvbnN0IEZvbnQmIGZvbnQsIHVuc2ln
bmVkIHRhYlNpemUsIGZsb2F0IHBvcwogfQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5jcHAKaW5kZXggYTMwMGUwZjFiODg0NWU3MjQzMjM2OTNjMDNlNTdkZDE2YTIzYzQ4My4u
MGFmMzMwMjg0MDZjZTdlOTUzMjRlOGI3ZjNjNGM4YzExN2U3MDVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAg
ICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKLSAgICBwbGF0Zm9y
bVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CisgICAg
VGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVj
dCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOwpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdAogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgcGxhdGZvcm1UaGVtZSgpLT5kcmF3
TmFtZWRJbWFnZShtX25hbWUsIGdyYXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KDAsIDAsIHNpemUo
KS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpKTsKKyAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJh
d05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggYjRmYWQwNzkx
YTAwYWRiMmM1M2RmNTc3MmI1MDNmZjliZjMxZDM1ZC4uZjhlZjRkNWJlNDRhNzVhYmEyNGU3NjM1
Mjk2ZjkyMWIxNmU4MWJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0yNjUsMjIgKzI2NSwxOSBA
QCBzdGF0aWMgQ0ZBcnJheVJlZiBtZXRhZGF0YUtleU5hbWVzKCkKIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgQVZDRlRpbWVkTWV0YWRhdGFHcm91cC5oIGV4cG9ydGVkIHRoaXMga2V5
Lgogc3RhdGljIENGU3RyaW5nUmVmIENNVGltZVJhbmdlU3RhcnRLZXkoKQogewotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChDRlN0cmluZ1JlZiwga2V5LCAoQ0ZTVFIoInN0YXJ0
IikpKTsKLSAgICByZXR1cm4ga2V5OworICAgIHJldHVybiBDRlNUUigic3RhcnQiKTsKIH0KIAog
Ly8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBpZiBBVkNGVGltZWRNZXRhZGF0YUdyb3VwLmgg
ZXhwb3J0ZWQgdGhpcyBrZXkuCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgQ01UaW1lUmFuZ2VEdXJhdGlv
bktleSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKENGU3RyaW5nUmVm
LCBrZXksIChDRlNUUigiZHVyYXRpb24iKSkpOwotICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJu
IENGU1RSKCJkdXJhdGlvbiIpOwogfQogCiAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IEFWQ0YgZXhwb3J0ZWQgdGhpcyBub3RpZmljYXRpb24gbmFtZS4KIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24oKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChDRlN0cmluZ1JlZiwgbmFtZSwgKENGU1RSKCJrQ0FDRkNvbnRl
eHROZWVkc0ZsdXNoTm90aWZpY2F0aW9uIikpKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1
cm4gQ0ZTVFIoImtDQUNGQ29udGV4dE5lZWRzRmx1c2hOb3RpZmljYXRpb24iKTsKIH0KIAogLy8g
RGVmaW5lIEFWQ0Ygb2JqZWN0IGFjY2Vzc29ycyBhcyBpbmxpbmUgZnVuY3Rpb25zIGhlcmUgaW5z
dGVhZCBvZiBpbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiBzbyB3ZSBkb24ndCBo
YXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
TGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1c2hlci5jcHAKaW5kZXggMGRiODhjODViY2Q4YTA2ODM0
MjE1OGNhM2Q3MTc5ZmM1YTQ2OTcwZS4uNDEzYzkwYmRkNTZhZGM5ZjEzNzc5NmE0N2VjNzNmZTg1
NDQyMDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0xheWVyQ2hhbmdlc0ZsdXNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZWRFeGNlcHRpb25IYW5kbGVyU3VwcHJlc3Nvci5oIgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBM
YXllckNoYW5nZXNGbHVzaGVyJiBMYXllckNoYW5nZXNGbHVzaGVyOjpzaW5nbGV0b24oKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMYXllckNoYW5nZXNGbHVzaGVyLCBm
bHVzaGVyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExheWVyQ2hhbmdlc0ZsdXNo
ZXI+IGZsdXNoZXI7CiAgICAgcmV0dXJuIGZsdXNoZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vTGF5ZXJDaGFuZ2VzRmx1
c2hlci5oCmluZGV4IDI4ZTY2Yjk4NTM5ZjAzZDcxMTRlNmE4MjA3MjAxNGZlMTZiZjBkMjAuLjhk
MDY0ZWYyMDJiY2ZkNGE5YWUwZGQ5ZDhkZTllNTcyMmVjODg0YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9MYXllckNoYW5nZXNGbHVzaGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0xheWVyQ2hhbmdl
c0ZsdXNoZXIuaApAQCAtMjMsMTAgKzIzLDEwIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgTGF5ZXJDaGFuZ2VzRmx1c2hlcl9oCi0jZGVmaW5lIExheWVyQ2hhbmdlc0ZsdXNoZXJf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCkBAIC00Myw2ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFBlbmRp
bmdGbHVzaChBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0Kik7CiAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPExheWVyQ2hhbmdlc0ZsdXNoZXI+OwogICAgIExheWVyQ2hhbmdl
c0ZsdXNoZXIoKTsKICAgICB+TGF5ZXJDaGFuZ2VzRmx1c2hlcigpOwogCkBAIC01Nyw1ICs1OCwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBM
YXllckNoYW5nZXNGbHVzaGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKaW5kZXggODA4ODMwYjhiODU3YmQy
ODZiODNmZThkNDRjNDZhOTQxNzA5N2EzNS4uNmQ1MzczN2JjZWMzYTcyNjI3ZmEzNjUwZWVkNTFl
ZGQwYmI4YmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VTb3VyY2VDR1dpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMzkgKzQ2LDM3IEBAIFN0cmluZyBNSU1F
VHlwZUZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFN0cmluZyBwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewot
ICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICBpZiAodHlwZS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBT
dHJpbmdNYXA7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZ01hcCwg
VVRJTWFwLCAoKSk7Ci0gICAgaWYgKFVUSU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVVRJTWFw
LmFkZCgicHVibGljLmh0bWwiLCAiaHRtbCIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMu
anBlZyIsICJqcGVnIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5qcGVnLTIwMDAiLCAi
anAyIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy5wbGFpbi10ZXh0IiwgInR4dCIpOwot
ICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMucG5nIiwgInBuZyIpOwotICAgICAgICBVVElNYXAu
YWRkKCJwdWJsaWMudGlmZiIsICJ0aWZmIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoInB1YmxpYy54
Yml0bWFwLWltYWdlIiwgInhibSIpOwotICAgICAgICBVVElNYXAuYWRkKCJwdWJsaWMueG1sIiwg
InhtbCIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20uYWRvYmUuaWxsdXN0cmF0b3IuYWktaW1h
Z2UiLCAiYWkiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBkZiIsICJwZGYiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBob3Rvc2hvcC1pbWFnZSIsICJwc2QiKTsK
LSAgICAgICAgVVRJTWFwLmFkZCgiY29tLmFkb2JlLnBvc3RzY3JpcHQiLCAicHMiKTsKLSAgICAg
ICAgVVRJTWFwLmFkZCgiY29tLmFwcGxlLmljbnMiLCAiaWNucyIpOwotICAgICAgICBVVElNYXAu
YWRkKCJjb20uYXBwbGUubWFjcGFpbnQtaW1hZ2UiLCAicG50ZyIpOwotICAgICAgICBVVElNYXAu
YWRkKCJjb20uYXBwbGUucGljdCIsICJwaWN0Iik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5h
cHBsZS5xdWlja3RpbWUtaW1hZ2UiLCAicXRpZiIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20u
YXBwbGUud2ViYXJjaGl2ZSIsICJ3ZWJhcmNoaXZlIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNv
bS5jb21wdXNlcnZlLmdpZiIsICJnaWYiKTsgICAgICAgIAotICAgICAgICBVVElNYXAuYWRkKCJj
b20uaWxtLm9wZW5leHItaW1hZ2UiLCAiZXhyIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5r
b2Rhay5mbGFzaHBpeC1pbWFnZSIsICJmcHgiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLm1p
Y3Jvc29mdC5ibXAiLCAiYm1wIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS5taWNyb3NvZnQu
aWNvIiwgImljbyIpOwotICAgICAgICBVVElNYXAuYWRkKCJjb20ubmV0c2NhcGUuamF2YXNjcmlw
dC1zb3VyY2UiLCAianMiKTsKLSAgICAgICAgVVRJTWFwLmFkZCgiY29tLnNnaS5zZ2ktaW1hZ2Ui
LCAic2dpIik7Ci0gICAgICAgIFVUSU1hcC5hZGQoImNvbS50cnVldmlzaW9uLnRnYS1pbWFnZSIs
ICJ0Z2EiKTsKLSAgICB9Ci0gICAgcmV0dXJuIFVUSU1hcC5nZXQodHlwZSk7CisgICAgc3RhdGlj
IGNvbnN0IGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkKEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geworICAgICAgICB7ICJwdWJsaWMuaHRtbCIs
ICJodG1sIiB9LAorICAgICAgICB7ICJwdWJsaWMuanBlZyIsICJqcGVnIiB9LAorICAgICAgICB7
ICJwdWJsaWMuanBlZy0yMDAwIiwgImpwMiIgfSwKKyAgICAgICAgeyAicHVibGljLnBsYWluLXRl
eHQiLCAidHh0IiB9LAorICAgICAgICB7ICJwdWJsaWMucG5nIiwgInBuZyIgfSwKKyAgICAgICAg
eyAicHVibGljLnRpZmYiLCAidGlmZiIgfSwKKyAgICAgICAgeyAicHVibGljLnhiaXRtYXAtaW1h
Z2UiLCAieGJtIiB9LAorICAgICAgICB7ICJwdWJsaWMueG1sIiwgInhtbCIgfSwKKyAgICAgICAg
eyAiY29tLmFkb2JlLmlsbHVzdHJhdG9yLmFpLWltYWdlIiwgImFpIiB9LAorICAgICAgICB7ICJj
b20uYWRvYmUucGRmIiwgInBkZiIgfSwKKyAgICAgICAgeyAiY29tLmFkb2JlLnBob3Rvc2hvcC1p
bWFnZSIsICJwc2QiIH0sCisgICAgICAgIHsgImNvbS5hZG9iZS5wb3N0c2NyaXB0IiwgInBzIiB9
LAorICAgICAgICB7ICJjb20uYXBwbGUuaWNucyIsICJpY25zIiB9LAorICAgICAgICB7ICJjb20u
YXBwbGUubWFjcGFpbnQtaW1hZ2UiLCAicG50ZyIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLnBp
Y3QiLCAicGljdCIgfSwKKyAgICAgICAgeyAiY29tLmFwcGxlLnF1aWNrdGltZS1pbWFnZSIsICJx
dGlmIiB9LAorICAgICAgICB7ICJjb20uYXBwbGUud2ViYXJjaGl2ZSIsICJ3ZWJhcmNoaXZlIiB9
LAorICAgICAgICB7ICJjb20uY29tcHVzZXJ2ZS5naWYiLCAiZ2lmIiB9LAorICAgICAgICB7ICJj
b20uaWxtLm9wZW5leHItaW1hZ2UiLCAiZXhyIiB9LAorICAgICAgICB7ICJjb20ua29kYWsuZmxh
c2hwaXgtaW1hZ2UiLCAiZnB4IiB9LAorICAgICAgICB7ICJjb20ubWljcm9zb2Z0LmJtcCIsICJi
bXAiIH0sCisgICAgICAgIHsgImNvbS5taWNyb3NvZnQuaWNvIiwgImljbyIgfSwKKyAgICAgICAg
eyAiY29tLm5ldHNjYXBlLmphdmFzY3JpcHQtc291cmNlIiwgImpzIiB9LAorICAgICAgICB7ICJj
b20uc2dpLnNnaS1pbWFnZSIsICJzZ2kiIH0sCisgICAgICAgIHsgImNvbS50cnVldmlzaW9uLnRn
YS1pbWFnZSIsICJ0Z2EiIH0sCisgICAgfSk7CisgICAgcmV0dXJuIG1hcC5nZXQoKS5nZXQodHlw
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwCmluZGV4
IDgzZmYyN2VhNTI1NjIyOGE4ZDU3NWJhZWYxN2M2NzU2NTZjMjE3YTQuLjc5MTk1YTIzNTE3YTk2
ZjdkODE3NjIzN2QxYTQ4MjcwNWMzNjhlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlIDxoYi1v
dC5oPgogI2luY2x1ZGUgPGhiLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzQsOCArNzUsOCBAQCB0eXBlZGVmIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxGYWNlQ2FjaGVFbnRyeT4sIFdURjo6SW50SGFzaDx1aW50NjRfdD4s
IFdURjo6VQogCiBzdGF0aWMgSGFyZkJ1enpGYWNlQ2FjaGUqIGhhcmZCdXp6RmFjZUNhY2hlKCkK
IHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoSGFyZkJ1enpGYWNlQ2FjaGUs
IHNfaGFyZkJ1enpGYWNlQ2FjaGUsICgpKTsKLSAgICByZXR1cm4gJnNfaGFyZkJ1enpGYWNlQ2Fj
aGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhcmZCdXp6RmFjZUNhY2hlPiBzX2hhcmZC
dXp6RmFjZUNhY2hlOworICAgIHJldHVybiAmc19oYXJmQnV6ekZhY2VDYWNoZS5nZXQoKTsKIH0K
IAogSGFyZkJ1enpGYWNlOjpIYXJmQnV6ekZhY2UoRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1E
YXRhLCB1aW50NjRfdCB1bmlxdWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggNzgxYjZmODAzOGRjZGZlMjdj
MzYxMzgzNzQ2YWFhZmNmMDcyZWE2OS4uYWNmZTc5ZTZhYjQyNjdhNWU1YjI2NzE1YmI3MzBlN2Q2
OGFjZWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTM0MCw4ICszNDAsOSBAQCBSZWZQdHI8Rm9udD4gRm9u
dENhY2hlOjpmb250RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbgogCiBSZWY8Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQogewotICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZhbGxiYWNrRm9udE5hbWUsICgpKTsK
LSAgICBpZiAoIWZhbGxiYWNrRm9udE5hbWUuaXNFbXB0eSgpKQorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IGZhbGxiYWNrRm9udE5hbWU7CisKKyAgICBpZiAoIWZhbGxi
YWNrRm9udE5hbWUuZ2V0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gKmZvbnRGb3JGYW1p
bHkoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnROYW1lKTsKIAogICAgIC8vIEZJWE1FOiBX
b3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9u
dCBoZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCkBAIC0zNjAsNyArMzYxLDcgQEAgUmVmPEZvbnQ+
IEZvbnRDYWNoZTo6bGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGkKICAgICBSZWZQdHI8Rm9udD4gc2ltcGxlRm9udDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tGb250cyk7ICsraSkgewog
ICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBm
YWxsYmFja0ZvbnRzW2ldKSkgewotICAgICAgICAgICAgZmFsbGJhY2tGb250TmFtZSA9IGZhbGxi
YWNrRm9udHNbaV07CisgICAgICAgICAgICBmYWxsYmFja0ZvbnROYW1lLmdldCgpID0gZmFsbGJh
Y2tGb250c1tpXTsKICAgICAgICAgICAgIHJldHVybiAqc2ltcGxlRm9udDsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgKaW5kZXggMzc3YjgyMjZl
NGFmODEzZGY5ZWY1MGU2MjE3MDQyNTlkNDhhOTgyOS4uNzBiNjFhYmFhZjlkMGQ0YzMxNDdhZjdk
ZmI0ZjliNmY4N2Q4MjlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1RoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLmgK
QEAgLTIzLDIxICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBUaGVt
ZUlPU19oCi0jZGVmaW5lIFRoZW1lSU9TX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVGhl
bWVDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRoZW1lSU9TIDogcHVi
bGljIFRoZW1lQ29jb2EgewotcHVibGljOgotICAgIFRoZW1lSU9TKCkgeyB9Ci0gICAgdmlydHVh
bCB+VGhlbWVJT1MoKSB7IH0KLQotICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CitjbGFzcyBUaGVtZUlPUyBmaW5hbCA6IHB1YmxpYyBUaGVtZUNvY29h
IHsKK3ByaXZhdGU6CisgICAgYm9vbCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBm
aW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFRoZW1lSU9T
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9UaGVtZUlPUy5tbQppbmRleCAwNzIwZDY0NmQ5
NTAyMDI2YjIyNGJjMDZmNWVkZDljNGVjMDdkNWRlLi4zMTUwMmNiYWEwMTRjZDA2NTdmYjc3ZGQ1
ZWVmOTY5N2I0MWY0Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1RoZW1lSU9TLm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxNyBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDExICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRoZW1lSU9TLmgi
CiAKLSNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2lu
Zy5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19GUkFN
RVdPUksoVUlLaXQpCiBTT0ZUX0xJTksoVUlLaXQsIFVJQWNjZXNzaWJpbGl0eUlzUmVkdWNlTW90
aW9uRW5hYmxlZCwgQk9PTCwgKHZvaWQpLCAoKSkKQEAgLTM5LDEyICszNiwxMCBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBJbXBsZW1l
bnQgYmVmb3JlIGVuYWJsaW5nIFVTRShORVdfVEhFTUUpLgotCi1UaGVtZSogcGxhdGZvcm1UaGVt
ZSgpCitUaGVtZSYgVGhlbWU6OnNpbmdsZXRvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFRoZW1lSU9TPiB0aGVtZUlPUzsKLSAgICByZXR1cm4gJnRoZW1lSU9TLmdldCgpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZUlPUz4gdGhlbWU7CisgICAgcmV0dXJuIHRoZW1l
OwogfQogCiBib29sIFRoZW1lSU9TOjp1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRleCBiMzQ2YTY1ZWQwMTZhNDgw
NzkxMDRlOTNlMjg1ODRhNjJiMGNhZjNjLi5lMmMzNDA2NGIyN2Q2ODliODI1MzVhZjU0YzgyMDA0
N2M4OTNkYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0NiAr
MjMsMzggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgVGhlbWVNYWNfaAotI2Rl
ZmluZSBUaGVtZU1hY19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlRoZW1lQ29jb2EuaCIK
IAotQGludGVyZmFjZSBOU0ZvbnQoV2ViQ29yZVRoZW1lKQotLSAoTlNTdHJpbmcqKXdlYkNvcmVG
YW1pbHlOYW1lOwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRoZW1lTWFj
IDogcHVibGljIFRoZW1lQ29jb2EgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xh
c3MgVGhlbWVNYWMgZmluYWwgOiBwdWJsaWMgVGhlbWVDb2NvYSB7CiBwdWJsaWM6Ci0gICAgVGhl
bWVNYWMoKSB7IH0KLSAgICB2aXJ0dWFsIH5UaGVtZU1hYygpIHsgfQotICAgIAotICAgIGludCBi
YXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgc3RhdGljIE5TVmlldyAqZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyosIGNvbnN0IENvbnRyb2xT
dGF0ZXMmLCBib29sIHVzZVVucGFyZW50ZWRWaWV3ID0gZmFsc2UpOworICAgIHN0YXRpYyB2b2lk
IHNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHN0YXRpYyBib29s
IGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcgKiwgYm9vbCBkcmF3QnV0dG9uQ2Vs
bCwgYm9vbCBkcmF3Rm9jdXNSaW5nLCBib29sIHVzZUltYWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3Rvcik7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+
IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IG92ZXJyaWRlOwotICAgIAotICAgIExlbmd0aFNpemUgY29udHJvbFNpemUo
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0
IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwotICAgIExlbmd0aFNpemUgbWluaW11bUNvbnRy
b2xTaXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3Ip
IGNvbnN0IG92ZXJyaWRlOworcHJpdmF0ZToKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8VGhl
bWVNYWM+OworICAgIFRoZW1lTWFjKCkgPSBkZWZhdWx0OwogCi0gICAgTGVuZ3RoQm94IGNvbnRy
b2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJv
eCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICBMZW5n
dGhCb3ggY29udHJvbEJvcmRlcihDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25z
dCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdCBm
aW5hbDsKIAotICAgIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFy
dCBwYXJ0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9
CisgICAgc3RkOjpvcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBjb250cm9sRm9udChD
b250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxW
aWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29u
c3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92
ZXJyaWRlOworICAgIExlbmd0aFNpemUgY29udHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZp
bmFsOworICAgIExlbmd0aFNpemUgbWluaW11bUNvbnRyb2xTaXplKENvbnRyb2xQYXJ0LCBjb25z
dCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9v
bCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBMZW5ndGhC
b3ggY29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
TGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IGZpbmFsOworICAg
IExlbmd0aEJveCBjb250cm9sQm9yZGVyKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYs
IGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBmaW5h
bDsKIAotICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVy
IHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgotICAg
IHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3Rh
dGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKLSAgICBzdGF0aWMgdm9pZCBz
ZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxs
ICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8s
IGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKKyAgICBib29sIGNvbnRyb2xSZXF1aXJl
c1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3QgZmluYWwgeyByZXR1cm4gcGFy
dCA9PSBQdXNoQnV0dG9uUGFydDsgfQorCisgICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpv
b21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKSBmaW5hbDsKKyAgICB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENv
bnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZh
Y3RvcikgY29uc3QgZmluYWw7CisKKyAgICBib29sIHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbigp
IGNvbnN0IGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
VGhlbWVNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDJl
MWIyY2I2N2UwZGE2MjExNWIwYWQ4MjU4ZDcxNTdjMTlhNDcwNzIuLjBlNTk1OGI1YmVkYjQ3Njc5
ODc5NGFhZTJiOTU4ZjViMzdmM2ViY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEw
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMsNyArMTMsNyBAQAogICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCiAgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKQEAgLTI3LDggKzI3LDEwIEBACiAjaW1wb3J0ICJUaGVtZU1hYy5oIgogCiAj
aW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJDb250cm9sU3RhdGVzLmgiCiAjaW1w
b3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVyLmgiCisjaW1wb3J0
ICJMZW5ndGhTaXplLmgiCiAjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIK
ICNpbXBvcnQgIk5TQnV0dG9uQ2VsbFNQSS5oIgogI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgpAQCAt
NDQsNiArNDYsOSBAQCBzdGF0aWMgQk9PTCB0aGVtZVdpbmRvd0hhc0tleUFwcGVhcmFuY2U7CiBA
aW50ZXJmYWNlIFdlYkNvcmVUaGVtZVdpbmRvdyA6IE5TV2luZG93CiBAZW5kCiAKK0BpbnRlcmZh
Y2UgV2ViQ29yZVRoZW1lVmlldyA6IE5TQ29udHJvbAorQGVuZAorCiBAaW1wbGVtZW50YXRpb24g
V2ViQ29yZVRoZW1lV2luZG93CiAKIC0gKEJPT0wpaGFzS2V5QXBwZWFyYW5jZQpAQCAtNTgsOSAr
NjMsNiBAQCAtIChCT09MKWlzS2V5V2luZG93CiAKIEBlbmQKIAotQGludGVyZmFjZSBXZWJDb3Jl
VGhlbWVWaWV3IDogTlNDb250cm9sCi1AZW5kCi0KIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlVGhl
bWVWaWV3CiAKIC0gKE5TV2luZG93ICopd2luZG93CkBAIC0xMDgsMTggKzExMCw2IEBAIC0gKHZv
aWQpYWRkU3VidmlldzooTlNWaWV3KilzdWJ2aWV3CiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9u
IE5TRm9udCAoV2ViQ29yZVRoZW1lKQotCi0tIChOU1N0cmluZyopd2ViQ29yZUZhbWlseU5hbWUK
LXsKLSAgICBpZiAoW1tzZWxmIGZhbWlseU5hbWVdIGhhc1ByZWZpeDpAIi4iXSkKLSAgICAgICAg
cmV0dXJuIFtzZWxmIGZvbnROYW1lXTsKLQotICAgIHJldHVybiBbc2VsZiBmYW1pbHlOYW1lXTsK
LX0KLQotQGVuZAotCiAvLyBGSVhNRTogRGVmYXVsdCBidXR0b25zIHJlYWxseSBzaG91bGQgYmUg
bW9yZSBsaWtlIHB1c2ggYnV0dG9ucyBhbmQgbm90IGxpa2UgYnV0dG9ucy4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTMxLDEwICsxMjEsMTAgQEAgZW51bSB7CiAgICAgbGVmdE1hcmdpbgog
fTsKIAotVGhlbWUqIHBsYXRmb3JtVGhlbWUoKQorVGhlbWUmIFRoZW1lOjpzaW5nbGV0b24oKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaGVtZU1hYz4gdGhlbWVNYWM7Ci0gICAgcmV0
dXJuICZ0aGVtZU1hYy5nZXQoKTsKKyAgICByZXR1cm4gdGhlbWVNYWM7CiB9CiAKIC8vIEhlbHBl
ciBmdW5jdGlvbnMgdXNlZCBieSBhIGJ1bmNoIG9mIGRpZmZlcmVudCBjb250cm9sIHBhcnRzLgpA
QCAtMjQxLDggKzIzMSw4IEBAIHN0YXRpYyBUaGVtZURyYXdTdGF0ZSBjb252ZXJ0Q29udHJvbFN0
YXRlc1RvVGhlbWVEcmF3U3RhdGUoVGhlbWVCdXR0b25LaW5kIGtpbmQsCiAKIHN0YXRpYyBGbG9h
dFJlY3QgaW5mbGF0ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBjb25zdCBJbnRT
aXplJiB6b29tZWRTaXplLCBjb25zdCBpbnQqIG1hcmdpbnMsIGZsb2F0IHpvb21GYWN0b3IpCiB7
Ci0gICAgLy8gT25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVp
Z2h0IGFyZSB0b28gc21hbGwuICBPdGhlcndpc2UgdHJ5IHRvCi0gICAgLy8gZml0IHRoZSBnbG93
L2NoZWNrIHNwYWNlIGludG8gdGhlIGF2YWlsYWJsZSBib3gncyB3aWR0aC9oZWlnaHQuCisgICAg
Ly8gT25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVpZ2h0IGFy
ZSB0b28gc21hbGwuCisgICAgLy8gT3RoZXJ3aXNlIHRyeSB0byBmaXQgdGhlIGdsb3cvY2hlY2sg
c3BhY2UgaW50byB0aGUgYXZhaWxhYmxlIGJveCdzIHdpZHRoL2hlaWdodC4KICAgICBpbnQgd2lk
dGhEZWx0YSA9IHpvb21lZFJlY3Qud2lkdGgoKSAtICh6b29tZWRTaXplLndpZHRoKCkgKyBtYXJn
aW5zW2xlZnRNYXJnaW5dICogem9vbUZhY3RvciArIG1hcmdpbnNbcmlnaHRNYXJnaW5dICogem9v
bUZhY3Rvcik7CiAgICAgaW50IGhlaWdodERlbHRhID0gem9vbWVkUmVjdC5oZWlnaHQoKSAtICh6
b29tZWRTaXplLmhlaWdodCgpICsgbWFyZ2luc1t0b3BNYXJnaW5dICogem9vbUZhY3RvciArIG1h
cmdpbnNbYm90dG9tTWFyZ2luXSAqIHpvb21GYWN0b3IpOwogICAgIEZsb2F0UmVjdCByZXN1bHQo
em9vbWVkUmVjdCk7CkBAIC02ODksMzcgKzY3OSwzNyBAQCBpbnQgVGhlbWVNYWM6OmJhc2VsaW5l
UG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0CiBzdGQ6Om9wdGlvbmFs
PEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lTWFjOjpjb250cm9sRm9udChDb250cm9sUGFy
dCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewot
ICAgICAgICAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0KLSAgICAg
ICAgICAgIE5TRm9udCogbnNGb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQg
c3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpjb250cm9sU2l6ZUZvckZvbnQoZm9udCldXTsK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoQXRvbWljU3RyaW5nKCIt
YXBwbGUtc3lzdGVtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbbnNGb250IHBvaW50U2l6
ZV0gKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZp
ZWRTaXplKFtuc0ZvbnQgcG9pbnRTaXplXSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sRm9udChwYXJ0LCBmb250LCB6b29tRmFjdG9yKTsK
KyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OiB7CisgICAgICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0
ZVNpemUodHJ1ZSk7CisKKyAgICAgICAgTlNGb250KiBuc0ZvbnQgPSBbTlNGb250IHN5c3RlbUZv
bnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOmNvbnRyb2xTaXpl
Rm9yRm9udChmb250KV1dOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KEF0
b21pY1N0cmluZygiLWFwcGxlLXN5c3RlbSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShbbnNGb250
IHBvaW50U2l6ZV0gKiB6b29tRmFjdG9yKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNw
ZWNpZmllZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZhY3Rvcik7CisgICAgICAgIHJl
dHVybiBmb250RGVzY3JpcHRpb247CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCiBMZW5ndGhTaXplIFRoZW1lTWFjOjpjb250cm9s
U2l6ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTGVu
Z3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0
Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBDaGVja2JveFBhcnQ6Ci0gICAgICAgICAgICByZXR1
cm4gY2hlY2tib3hTaXplKGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IpOwotICAgICAgICBj
YXNlIFJhZGlvUGFydDoKLSAgICAgICAgICAgIHJldHVybiByYWRpb1NpemUoZm9udCwgem9vbWVk
U2l6ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6Ci0gICAgICAg
ICAgICAvLyBIZWlnaHQgaXMgcmVzZXQgdG8gYXV0byBzbyB0aGF0IHNwZWNpZmllZCBoZWlnaHRz
IGNhbiBiZSBpZ25vcmVkLgotICAgICAgICAgICAgcmV0dXJuIHNpemVGcm9tRm9udChmb250LCB7
IHpvb21lZFNpemUud2lkdGgsIHsgfSB9LCB6b29tRmFjdG9yLCBidXR0b25TaXplcygpKTsKLSAg
ICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICAgICAgaWYgKCF6b29tZWRT
aXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0LmlzSW50
cmluc2ljT3JBdXRvKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7Ci0gICAg
ICAgICAgICByZXR1cm4gc2l6ZUZyb21OU0NvbnRyb2xTaXplKHN0ZXBwZXJDb250cm9sU2l6ZUZv
ckZvbnQoZm9udCksIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXplcygpKTsKLSAg
ICAgICAgZGVmYXVsdDoKKyAgICBjYXNlIENoZWNrYm94UGFydDoKKyAgICAgICAgcmV0dXJuIGNo
ZWNrYm94U2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFjdG9yKTsKKyAgICBjYXNlIFJhZGlv
UGFydDoKKyAgICAgICAgcmV0dXJuIHJhZGlvU2l6ZShmb250LCB6b29tZWRTaXplLCB6b29tRmFj
dG9yKTsKKyAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgorICAgICAgICAvLyBIZWlnaHQgaXMgcmVz
ZXQgdG8gYXV0byBzbyB0aGF0IHNwZWNpZmllZCBoZWlnaHRzIGNhbiBiZSBpZ25vcmVkLgorICAg
ICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHsgem9vbWVkU2l6ZS53aWR0aCwgeyB9IH0s
IHpvb21GYWN0b3IsIGJ1dHRvblNpemVzKCkpOworICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFy
dDoKKyAgICAgICAgaWYgKCF6b29tZWRTaXplLndpZHRoLmlzSW50cmluc2ljT3JBdXRvKCkgJiYg
IXpvb21lZFNpemUuaGVpZ2h0LmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAgICByZXR1
cm4gem9vbWVkU2l6ZTsKKyAgICAgICAgcmV0dXJuIHNpemVGcm9tTlNDb250cm9sU2l6ZShzdGVw
cGVyQ29udHJvbFNpemVGb3JGb250KGZvbnQpLCB6b29tZWRTaXplLCB6b29tRmFjdG9yLCBzdGVw
cGVyU2l6ZXMoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7CiAg
ICAgfQogfQogCkBAIC03NDQsMjggKzczNCwyOCBAQCBMZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRy
b2xCb3JkZXIoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbgog
ewogICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIFNxdWFyZUJ1dHRvblBhcnQ6Ci0g
ICAgICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2UgQnV0dG9uUGFydDoK
LSAgICAgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCwgem9vbWVkQm94LnJpZ2h0KCkudmFsdWUo
KSwgMCwgem9vbWVkQm94LmxlZnQoKS52YWx1ZSgpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJvbEJvcmRlcihwYXJ0LCBmb250LCB6b29tZWRCb3gs
IHpvb21GYWN0b3IpOworICAgIGNhc2UgRGVmYXVsdEJ1dHRvblBhcnQ6CisgICAgY2FzZSBCdXR0
b25QYXJ0OgorICAgICAgICByZXR1cm4gTGVuZ3RoQm94KDAsIHpvb21lZEJveC5yaWdodCgpLnZh
bHVlKCksIDAsIHpvb21lZEJveC5sZWZ0KCkudmFsdWUoKSk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIFRoZW1lOjpjb250cm9sQm9yZGVyKHBhcnQsIGZvbnQsIHpvb21lZEJveCwgem9v
bUZhY3Rvcik7CiAgICAgfQogfQogCiBMZW5ndGhCb3ggVGhlbWVNYWM6OmNvbnRyb2xQYWRkaW5n
KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBMZW5ndGhC
b3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKIHsKICAgICBzd2l0Y2ggKHBh
cnQpIHsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewotICAgICAgICAgICAgLy8gSnVz
dCB1c2UgOHB4LiAgQXBwS2l0IHdhbnRzIHRvIHVzZSAxMXB4IGZvciBtaW5pIGJ1dHRvbnMsIGJ1
dCB0aGF0IHBhZGRpbmcgaXMganVzdCB0b28gbGFyZ2UKLSAgICAgICAgICAgIC8vIGZvciByZWFs
LXdvcmxkIFdlYiBzaXRlcyAoY3JlYXRpbmcgYSBodWdlIG5lY2Vzc2FyeSBtaW5pbXVtIHdpZHRo
IGZvciBidXR0b25zIHdob3NlIHNwYWNlIGlzCi0gICAgICAgICAgICAvLyBieSBkZWZpbml0aW9u
IGNvbnN0cmFpbmVkLCBzaW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZvciBzbWFsbCBjcmFtcGVk
IGVudmlyb25tZW50cy4KLSAgICAgICAgICAgIC8vIFRoaXMgYWxzbyBndWFyYW50ZWVzIHRoZSBI
VE1MIDxidXR0b24+IHdpbGwgbWF0Y2ggb3VyIHJlbmRlcmluZyBieSBkZWZhdWx0LCBzaW5jZSB3
ZSdyZSB1c2luZyBhIGNvbnNpc3RlbnQKLSAgICAgICAgICAgIC8vIHBhZGRpbmcuCi0gICAgICAg
ICAgICBjb25zdCBpbnQgcGFkZGluZyA9IDggKiB6b29tRmFjdG9yOwotICAgICAgICAgICAgcmV0
dXJuIExlbmd0aEJveCgyLCBwYWRkaW5nLCAzLCBwYWRkaW5nKTsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sUGFkZGluZyhwYXJ0
LCBmb250LCB6b29tZWRCb3gsIHpvb21GYWN0b3IpOworICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6
IHsKKyAgICAgICAgLy8gSnVzdCB1c2UgOHB4LiBBcHBLaXQgd2FudHMgdG8gdXNlIDExcHggZm9y
IG1pbmkgYnV0dG9ucywgYnV0IHRoYXQgcGFkZGluZyBpcyBqdXN0IHRvbyBsYXJnZQorICAgICAg
ICAvLyBmb3IgcmVhbC13b3JsZCBXZWIgc2l0ZXMgKGNyZWF0aW5nIGEgaHVnZSBuZWNlc3Nhcnkg
bWluaW11bSB3aWR0aCBmb3IgYnV0dG9ucyB3aG9zZSBzcGFjZSBpcworICAgICAgICAvLyBieSBk
ZWZpbml0aW9uIGNvbnN0cmFpbmVkLCBzaW5jZSB3ZSBzZWxlY3QgbWluaSBvbmx5IGZvciBzbWFs
bCBjcmFtcGVkIGVudmlyb25tZW50cy4KKyAgICAgICAgLy8gVGhpcyBhbHNvIGd1YXJhbnRlZXMg
dGhlIEhUTUwgPGJ1dHRvbj4gd2lsbCBtYXRjaCBvdXIgcmVuZGVyaW5nIGJ5IGRlZmF1bHQsIHNp
bmNlIHdlJ3JlIHVzaW5nIGEgY29uc2lzdGVudAorICAgICAgICAvLyBwYWRkaW5nLgorICAgICAg
ICBjb25zdCBpbnQgcGFkZGluZyA9IDggKiB6b29tRmFjdG9yOworICAgICAgICByZXR1cm4gTGVu
Z3RoQm94KDIsIHBhZGRpbmcsIDMsIHBhZGRpbmcpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gVGhlbWU6OmNvbnRyb2xQYWRkaW5nKHBhcnQsIGZvbnQsIHpvb21lZEJveCwg
em9vbUZhY3Rvcik7CiAgICAgfQogfQogCkBAIC03NzYsNyArNzY2LDcgQEAgdm9pZCBUaGVtZU1h
Yzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJv
bFN0YXRlcyYgc3QKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBDaGVja2JveFBh
cnQ6IHsKICAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJlY3QgYXMgbmVlZGVkIHRvIGFj
Y291bnQgZm9yIHBhZGRpbmcgaW5jbHVkZWQgaW4gdGhlIGNlbGwgdG8gYWNjb21tb2RhdGUgdGhl
IGNoZWNrYm94Ci0gICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suICBXZSBkb24n
dCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJL
aXQuCisgICAgICAgICAgICAvLyBzaGFkb3ciIGFuZCB0aGUgY2hlY2suIFdlIGRvbid0IGNvbnNp
ZGVyIHRoaXMgcGFydCBvZiB0aGUgYm91bmRzIG9mIHRoZSBjb250cm9sIGluIFdlYktpdC4KICAg
ICAgICAgICAgIE5TQ2VsbCAqY2VsbCA9IHNoYXJlZENoZWNrYm94Q2VsbChzdGF0ZXMsIHpvb21S
ZWN0U2l6ZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xT
aXplID0gW2NlbGwgY29udHJvbFNpemVdOwogICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXpl
ID0gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXTsKQEAgLTc4Nyw3ICs3NzcsNyBAQCB2b2lk
IFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBjb25z
dCBDb250cm9sU3RhdGVzJiBzdAogICAgICAgICB9CiAgICAgICAgIGNhc2UgUmFkaW9QYXJ0OiB7
CiAgICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50
IGZvciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSByYWRp
byBidXR0b24KLSAgICAgICAgICAgIC8vIHNoYWRvdyIuICBXZSBkb24ndCBjb25zaWRlciB0aGlz
IHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCisgICAgICAgICAg
ICAvLyBzaGFkb3ciLiBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBv
ZiB0aGUgY29udHJvbCBpbiBXZWJLaXQuCiAgICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSBzaGFy
ZWRSYWRpb0NlbGwoc3RhdGVzLCB6b29tUmVjdFNpemUsIHpvb21GYWN0b3IpOwogICAgICAgICAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsKICAgICAg
ICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6ZV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCmluZGV4IDI3MmVhMTM2NjE1NmZj
YzE5ZDY0OGNkNjE2MDc1MWUxMmEyYjI4ZWEuLjcyZTc4ZDc4ZTY1ODQzZDQ5N2RmOWZiZjdmNDNj
ODg0N2NkYzU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCkBA
IC0zMiw3ICszMiw2IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAi
Rm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIgogI2lu
Y2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKaW5kZXggNWQ4NmZmMjU0
N2NhMTUzNmJjMzVjNGU3ZGE4YjMyZGE5ZTQwYTVjNC4uNjZmODExN2FiNzZmOGJiMzdlYTM1Yjlk
MWM0OTQxOGQxODEwMTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFj
LmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgi
CiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggMTIy
YmJkZjNjNGRmYjFkZjJjYmEwODQyNDdmOGIxOTJiY2MxYjRiOC4uMGM0YjVjYmM2MjAxN2Q5YWI3
ZGE5ZjcyZjVhNjcyNmVhOTIxZWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtMzIsNyArMzIsNiBAQAog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKaW5kZXggZmY1
MmI3ZDM5MTYzZDVkOWY4NDE0NjQzMGJjM2U4NTY2MmZkN2Q2NS4uZTAwZGU5NjY1YTBhMDNkZmU4
MWNhY2UwMjI2ZTU0OTg5MGY1NjFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBzdGF0aWMgdWludDMyX3QgbWFnaWNOdW1iZXIoKQogCiBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24oKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGV4dGVuc2lvbiwgKEFTQ0lJTGl0ZXJhbCgiLmRvd25sb2FkIikpKTsKKyAgICBzdGF0
aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBleHRlbnNpb24geyBBU0NJSUxpdGVyYWwg
eyAiLmRvd25sb2FkIiB9IH07CiAgICAgcmV0dXJuIGV4dGVuc2lvbjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApp
bmRleCBmOGU1NmI2ZWU0NGU5ODI0NjkzMDgxOTQ2NjQ1MjFmMWU4NjEwODJlLi4yZGRjMzcwYjlj
MjJiY2UwYjUzZmI2NGJjMDMxOGQwYjVmZGI2ODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjk5LDEzICsy
OTksMTIgQEAgdm9pZCBtYXJrdXBUb0NGSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3Qg
U3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmUKIAogdm9pZCByZXBsYWNlTmV3bGluZXNX
aXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3RyaW5nJiBzdHIpCiB7Ci0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgd2luZG93c05ld2xpbmUsIChBU0NJSUxpdGVyYWwo
IlxyXG4iKSkpOwogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IHN0ci5sZW5ndGgoKTsgKytpbmRleCkgewogICAgICAgICBpZiAo
c3RyW2luZGV4XSAhPSAnXG4nIHx8IChpbmRleCA+IDAgJiYgc3RyW2luZGV4IC0gMV0gPT0gJ1xy
JykpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0cltpbmRleF0pOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHdpbmRvd3NOZXdsaW5lKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJcclxuIik7CiAgICAgfQogICAgIHN0ciA9IHJlc3VsdC50
b1N0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1X
aW4uY3BwCmluZGV4IDA3NzIzNzZlZGI2YzdjNDc4ZTliZDg4MzA4M2ZiNTExMzQ2YWVkYmUuLmVj
ZjllOTA4ZGQ3MDQ5ZTEyMGUxZWMwYTFmNjk2MmQ1ODc2MjA2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNG
cm9tRmlsZVRpbWVUb1RpbWV0ID0gMTE2NDQ0NzM2MDA7CkBAIC0yNTcsMjEgKzI1NiwyMSBAQCBT
dHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBTdHJpbmcg
YnVuZGxlTmFtZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgbmFtZSwgKEFTQ0lJTGl0ZXJhbCgiV2ViS2l0IikpKTsKKyAgICBzdGF0aWMgY29uc3QgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10geworICAgICAgICBTdHJpbmcgbmFtZSB7IEFT
Q0lJTGl0ZXJhbCB7ICJXZWJLaXQiIH0gfTsKIAogI2lmIFVTRShDRikKLSAgICBzdGF0aWMgYm9v
bCBpbml0aWFsaXplZDsKLQotICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgaW5pdGlh
bGl6ZWQgPSB0cnVlOwotCi0gICAgICAgIGlmIChDRkJ1bmRsZVJlZiBidW5kbGUgPSBDRkJ1bmRs
ZUdldE1haW5CdW5kbGUoKSkKLSAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxlRXhlY3V0
YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIGtDRkJ1
bmRsZUV4ZWN1dGFibGVLZXkpKQorICAgICAgICBpZiAoQ0ZCdW5kbGVSZWYgYnVuZGxlID0gQ0ZC
dW5kbGVHZXRNYWluQnVuZGxlKCkpIHsKKyAgICAgICAgICAgIGlmIChDRlR5cGVSZWYgYnVuZGxl
RXhlY3V0YWJsZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUs
IGtDRkJ1bmRsZUV4ZWN1dGFibGVLZXkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKGJ1bmRsZUV4ZWN1dGFibGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCiAgICAgICAgICAg
ICAgICAgICAgIG5hbWUgPSByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVFeGVj
dXRhYmxlKTsKLSAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICNlbmRpZgogCisgICAg
ICAgIHJldHVybiBuYW1lOworICAgIH0oKTsKKwogICAgIHJldHVybiBuYW1lOwogfQogCkBAIC0y
ODMsOCArMjgyLDcgQEAgc3RhdGljIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJ
ZGVudGlmaWVyKQogICAgIGJ1ZmZlci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKICAg
ICBTdHJpbmcgZGlyZWN0b3J5ID0gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCi0g
ICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29tcGFueU5hbWVEaXJl
Y3RvcnksIChBU0NJSUxpdGVyYWwoIkFwcGxlIENvbXB1dGVyXFwiKSkpOwotICAgIGRpcmVjdG9y
eSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIGNvbXBhbnlOYW1lRGlyZWN0
b3J5ICsgYnVuZGxlTmFtZSgpKTsKKyAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwogICAg
IGlmICghbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1RoZW1lV1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9UaGVtZVdQRS5jcHAKaW5kZXggZDVh
ZDk3NzNkODQxMjlmMmUwMzRiNWEzNmZmYzFjZjYyMTFhZWRhYi4uMjcxOTQ5YWFiNmVjZTJmMTIy
ZjhjNGE2YzQzMGVkOGFhYWRhNjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd3BlL1RoZW1lV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhl
bWVXUEUuY3BwCkBAIC0yNywxNiArMjcsMTggQEAKICNpbmNsdWRlICJUaGVtZVdQRS5oIgogCiAj
aW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb250cm9sU3RhdGVzLmgiCiAjaW5jbHVkZSAi
RmxvYXRSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1UaGVtZSogcGxhdGZvcm1UaGVtZSgpCitUaGVtZSYgVGhlbWU6
OnNpbmdsZXRvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRoZW1lV1BFPiB0aGVt
ZTsKLSAgICByZXR1cm4gJnRoZW1lLmdldCgpOworICAgIHJldHVybiB0aGVtZTsKIH0KIAogTGVu
Z3RoU2l6ZSBUaGVtZVdQRTo6Y29udHJvbFNpemUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9h
dCB6b29tRmFjdG9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1RoZW1lV1BFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaApp
bmRleCA3MzlmNWMxZTFjYWFiZjRjNDA0MzQzNWY0OTdmODllNjkxMzRiMDNmLi5iNTI0YzQ4OTdj
NWFmZDhiMDA5MTc4ODkwNDJkNDMzYWYzM2IzM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93cGUvVGhlbWVXUEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
cGUvVGhlbWVXUEUuaApAQCAtMjksMTYgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgVGhlbWVXUEUgOiBwdWJsaWMgVGhlbWUgewotcHVibGljOgotICAgIFRoZW1lV1BF
KCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVXUEUoKSB7IH0KLQotICAgIExlbmd0aFNpemUgY29u
dHJvbFNpemUoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZ3RoU2l6
ZSYsIGZsb2F0KSBjb25zdCBvdmVycmlkZTsKK2NsYXNzIFRoZW1lV1BFIGZpbmFsIDogcHVibGlj
IFRoZW1lIHsKK3ByaXZhdGU6CisgICAgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9sUGFy
dCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQpIGNvbnN0IGZp
bmFsOwogCi0gICAgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBTY3JvbGxWaWV3KiwgZmxvYXQs
IGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3Rh
dGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQsIFNjcm9sbFZp
ZXcqLCBmbG9hdCwgZmxvYXQpIGZpbmFsOwogCi1wcml2YXRlOgogICAgIHZvaWQgcGFpbnRDaGVj
a2JveChDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQpOwogICAgIHZvaWQgcGFpbnRSYWRpbyhDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpOwogICAgIHZvaWQgcGFpbnRCdXR0b24oQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDI4MTI2NGRkOGI4
YzgxYzNiNzgxZWU0MmZhMDA5ZjMxMmE5ZWQ2NTEuLmVjMWY1NTJmOTUwYzMyNjYzOGVmNjI2ZTVj
YWIyYTRjYzFiMmJlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNw
cApAQCAtMSw3ICsxLDUgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUg
aW1wbGVtZW50YXRpb24gZm9yIGZvcm0gY29udHJvbHMgaW4gV2ViQ29yZS4KLSAqCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAxMCwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC01OSw3ICs1Nyw5IEBACiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2VuZGlmCiAKLS8vIFRoZSBtZXRob2RzIGluIHRoaXMgZmlsZSBhcmUg
c2hhcmVkIGJ5IGFsbCB0aGVtZXMgb24gZXZlcnkgcGxhdGZvcm0uCisjaWYgVVNFKE5FV19USEVN
RSkKKyNpbmNsdWRlICJUaGVtZS5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzIsOSArNzIsNiBAQCBzdGF0aWMgQ29sb3ImIGN1c3RvbUZvY3VzUmluZ0NvbG9yKCkKIH0K
IAogUmVuZGVyVGhlbWU6OlJlbmRlclRoZW1lKCkKLSNpZiBVU0UoTkVXX1RIRU1FKQotICAgIDog
bV90aGVtZShwbGF0Zm9ybVRoZW1lKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMTIyLDcgKzExOSw3
IEBAIHZvaWQgUmVuZGVyVGhlbWU6OmFkanVzdFN0eWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICBjYXNlIEJ1dHRvblBhcnQ6IHsKICAgICAg
ICAgLy8gQm9yZGVyCiAgICAgICAgIExlbmd0aEJveCBib3JkZXJCb3goc3R5bGUuYm9yZGVyVG9w
V2lkdGgoKSwgc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCBzdHlsZS5ib3JkZXJCb3R0b21XaWR0
aCgpLCBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgIGJvcmRlckJveCA9IG1fdGhl
bWUtPmNvbnRyb2xCb3JkZXIocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgYm9yZGVyQm94LCBz
dHlsZS5lZmZlY3RpdmVab29tKCkpOworICAgICAgICBib3JkZXJCb3ggPSBUaGVtZTo6c2luZ2xl
dG9uKCkuY29udHJvbEJvcmRlcihwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBib3JkZXJCb3gs
IHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGlmIChib3JkZXJCb3gudG9wKCkudmFs
dWUoKSAhPSBzdGF0aWNfY2FzdDxpbnQ+KHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpKSB7CiAgICAg
ICAgICAgICBpZiAoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgc3R5
bGUuc2V0Qm9yZGVyVG9wV2lkdGgoYm9yZGVyQm94LnRvcCgpLnZhbHVlKCkpOwpAQCAtMTUxLDMy
ICsxNDgsMzIgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICB9CiAKICAgICAgICAg
Ly8gUGFkZGluZwotICAgICAgICBMZW5ndGhCb3ggcGFkZGluZ0JveCA9IG1fdGhlbWUtPmNvbnRy
b2xQYWRkaW5nKHBhcnQsIHN0eWxlLmZvbnRDYXNjYWRlKCksIHN0eWxlLnBhZGRpbmdCb3goKSwg
c3R5bGUuZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3ggPSBU
aGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFBhZGRpbmcocGFydCwgc3R5bGUuZm9udENhc2NhZGUo
KSwgc3R5bGUucGFkZGluZ0JveCgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBp
ZiAocGFkZGluZ0JveCAhPSBzdHlsZS5wYWRkaW5nQm94KCkpCiAgICAgICAgICAgICBzdHlsZS5z
ZXRQYWRkaW5nQm94KFdURk1vdmUocGFkZGluZ0JveCkpOwogCiAgICAgICAgIC8vIFdoaXRlc3Bh
Y2UKLSAgICAgICAgaWYgKG1fdGhlbWUtPmNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UocGFy
dCkpCisgICAgICAgIGlmIChUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFJlcXVpcmVzUHJlV2hp
dGVTcGFjZShwYXJ0KSkKICAgICAgICAgICAgIHN0eWxlLnNldFdoaXRlU3BhY2UoUFJFKTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgIC8vIFdpZHRoIC8gSGVpZ2h0CiAgICAgICAgIC8vIFRoZSB3
aWR0aCBhbmQgaGVpZ2h0IGhlcmUgYXJlIGFmZmVjdGVkIGJ5IHRoZSB6b29tLgogICAgICAgICAv
LyBGSVhNRTogQ2hlY2sgaXMgZmxhd2VkLCBzaW5jZSBpdCBkb2Vzbid0IHRha2UgbWluLXdpZHRo
L21heC13aWR0aCBpbnRvIGFjY291bnQuCi0gICAgICAgIExlbmd0aFNpemUgY29udHJvbFNpemUg
PSBtX3RoZW1lLT5jb250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCB7IHN0eWxl
LndpZHRoKCksIHN0eWxlLmhlaWdodCgpIH0sIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CisgICAg
ICAgIExlbmd0aFNpemUgY29udHJvbFNpemUgPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbFNp
emUocGFydCwgc3R5bGUuZm9udENhc2NhZGUoKSwgeyBzdHlsZS53aWR0aCgpLCBzdHlsZS5oZWln
aHQoKSB9LCBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBpZiAoY29udHJvbFNpemUu
d2lkdGggIT0gc3R5bGUud2lkdGgoKSkKICAgICAgICAgICAgIHN0eWxlLnNldFdpZHRoKFdURk1v
dmUoY29udHJvbFNpemUud2lkdGgpKTsKICAgICAgICAgaWYgKGNvbnRyb2xTaXplLmhlaWdodCAh
PSBzdHlsZS5oZWlnaHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldEhlaWdodChXVEZNb3ZlKGNv
bnRyb2xTaXplLmhlaWdodCkpOwogCiAgICAgICAgIC8vIE1pbi1XaWR0aCAvIE1pbi1IZWlnaHQK
LSAgICAgICAgTGVuZ3RoU2l6ZSBtaW5Db250cm9sU2l6ZSA9IG1fdGhlbWUtPm1pbmltdW1Db250
cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZlY3RpdmVab29tKCkp
OworICAgICAgICBMZW5ndGhTaXplIG1pbkNvbnRyb2xTaXplID0gVGhlbWU6OnNpbmdsZXRvbigp
Lm1pbmltdW1Db250cm9sU2l6ZShwYXJ0LCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdHlsZS5lZmZl
Y3RpdmVab29tKCkpOwogICAgICAgICBpZiAobWluQ29udHJvbFNpemUud2lkdGggIT0gc3R5bGUu
bWluV2lkdGgoKSkKICAgICAgICAgICAgIHN0eWxlLnNldE1pbldpZHRoKFdURk1vdmUobWluQ29u
dHJvbFNpemUud2lkdGgpKTsKICAgICAgICAgaWYgKG1pbkNvbnRyb2xTaXplLmhlaWdodCAhPSBz
dHlsZS5taW5IZWlnaHQoKSkKICAgICAgICAgICAgIHN0eWxlLnNldE1pbkhlaWdodChXVEZNb3Zl
KG1pbkNvbnRyb2xTaXplLmhlaWdodCkpOwogCiAgICAgICAgIC8vIEZvbnQKLSAgICAgICAgaWYg
KGF1dG8gdGhlbWVGb250ID0gbV90aGVtZS0+Y29udHJvbEZvbnQocGFydCwgc3R5bGUuZm9udENh
c2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgeworICAgICAgICBpZiAoYXV0byB0aGVt
ZUZvbnQgPSBUaGVtZTo6c2luZ2xldG9uKCkuY29udHJvbEZvbnQocGFydCwgc3R5bGUuZm9udENh
c2NhZGUoKSwgc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSkgewogICAgICAgICAgICAgLy8gSWYgb3Zl
cnJpZGluZyB0aGUgc3BlY2lmaWVkIGZvbnQgd2l0aCB0aGUgdGhlbWUgZm9udCwgYWxzbyBvdmVy
cmlkZSB0aGUgbGluZSBoZWlnaHQgd2l0aCB0aGUgc3RhbmRhcmQgbGluZSBoZWlnaHQuCiAgICAg
ICAgICAgICBzdHlsZS5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdo
dCgpKTsKICAgICAgICAgICAgIGlmIChzdHlsZS5zZXRGb250RGVzY3JpcHRpb24odGhlbWVGb250
LnZhbHVlKCkpKQpAQCAtMzA2LDcgKzMwMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNv
bnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAg
ICAgY2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAg
ICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0g
ICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIHBhaW50SW5mby5jb250
ZXh0KCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20o
KSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVG
YWN0b3IpOworICAgICAgICBUaGVtZTo6c2luZ2xldG9uKCkucGFpbnQocGFydCwgY29udHJvbFN0
YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTY4Niw3ICs2ODMsNyBAQCBDb2xvciBSZW5kZXJU
aGVtZTo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdAogaW50IFJlbmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJlbmRlckJveCYg
Ym94KSBjb25zdAogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgcmV0dXJuIGJveC5oZWlnaHQo
KSArIGJveC5tYXJnaW5Ub3AoKSArIG1fdGhlbWUtPmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50
KGJveC5zdHlsZSgpLmFwcGVhcmFuY2UoKSkgKiBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7
CisgICAgcmV0dXJuIGJveC5oZWlnaHQoKSArIGJveC5tYXJnaW5Ub3AoKSArIFRoZW1lOjpzaW5n
bGV0b24oKS5iYXNlbGluZVBvc2l0aW9uQWRqdXN0bWVudChib3guc3R5bGUoKS5hcHBlYXJhbmNl
KCkpICogYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogI2Vsc2UKICAgICByZXR1cm4gYm94
LmhlaWdodCgpICsgYm94Lm1hcmdpblRvcCgpOwogI2VuZGlmCkBAIC03MzAsNyArNzI3LDcgQEAg
dm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgRmxvYXRSZWN0JiByZWMKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIENvbnRy
b2xTdGF0ZXMgc3RhdGVzKGV4dHJhY3RDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIocmVuZGVyZXIp
KTsKLSAgICBtX3RoZW1lLT5pbmZsYXRlQ29udHJvbFBhaW50UmVjdChyZW5kZXJlci5zdHlsZSgp
LmFwcGVhcmFuY2UoKSwgc3RhdGVzLCByZWN0LCByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpv
b20oKSk7CisgICAgVGhlbWU6OnNpbmdsZXRvbigpLmluZmxhdGVDb250cm9sUGFpbnRSZWN0KHJl
bmRlcmVyLnN0eWxlKCkuYXBwZWFyYW5jZSgpLCBzdGF0ZXMsIHJlY3QsIHJlbmRlcmVyLnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsK
ICAgICBVTlVTRURfUEFSQU0ocmVjdCk7CkBAIC05NDUsNiArOTQyLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZTo6YWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBj
b25zdCBFbGVtZW4KIH0KIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorCiB2b2lkIFJlbmRl
clRoZW1lOjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogICAgIHN0eWxlLnNldEJveFNoYWRvdyhudWxs
cHRyKTsKQEAgLTk2NCw3ICs5NjIsOCBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludE1ldGVyKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlYwogewogICAg
IHJldHVybiB0cnVlOwogfQotI2VuZGlmCisKKyNlbmRpZiAvLyBNRVRFUl9FTEVNRU5UCiAKIHZv
aWQgUmVuZGVyVGhlbWU6OmFkanVzdENhcHNMb2NrSW5kaWNhdG9yU3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgY29uc3QgRWxlbWVudCopIGNvbnN0CiB7CkBAIC05NzYsNiArOTc1
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLAogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKwogdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0QXR0YWNobWVudFN0eWxlKFN0eWxl
UmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBjb25zdAogewogfQpAQCAt
OTg0LDkgKzk4NCwxMSBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEF0dGFjaG1lbnQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSQogewogICAgIHJldHVybiBm
YWxzZTsKIH0KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKwogTGF5
b3V0VW5pdCBSZW5kZXJUaGVtZTo6c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gMDsKQEAgLTEwNjksNiArMTA3MSw3IEBAIHZvaWQgUmVuZGVyVGhlbWU6
OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IHBhaW50CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwog
ICAgIH0KIH0KKwogI2VuZGlmCiAKIFNlY29uZHMgUmVuZGVyVGhlbWU6OmFuaW1hdGlvblJlcGVh
dEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MmKSBjb25zdApAQCAtMTI4NSwx
MCArMTI4OCwxMiBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFy
Y2hIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
CiBDb2xvciBSZW5kZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogewogICAgIHJldHVybiBz
aW5nbGV0b24oKS5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7CiB9CisKICNlbmRpZgogCiAv
LyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uIFRoaXMgY2FuIGJlIHR3ZWFrZWQuCkBAIC0x
MzE1LDkgKzEzMjAsOSBAQCBDb2xvciBSZW5kZXJUaGVtZTo6ZGlzYWJsZWRUZXh0Q29sb3IoY29u
c3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncgogICAgIHJldHVybiBkaXNh
YmxlZENvbG9yOwogfQogCi12b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xv
cihjb25zdCBDb2xvciYgYykKK3ZvaWQgUmVuZGVyVGhlbWU6OnNldEN1c3RvbUZvY3VzUmluZ0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0g
YzsKKyAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0gY29sb3I7CiB9CiAKIENvbG9yIFJlbmRl
clRoZW1lOjpmb2N1c1JpbmdDb2xvcigpCkBAIC0xMzQ5LDEzICsxMzU0LDE0IEBAIFN0cmluZyBS
ZW5kZXJUaGVtZTo6ZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0
LCBjb25zdCBGb250Q2FzCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCiBDb2xvciBS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0CiB7CiAgICAgLy8g
VGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3biBvbiBhIHNlbWktdHJhbnNwYXJlbnQg
b3ZlcmxheSwKICAgICAvLyBtYWtpbmcgaXQgbW9yZSB0cmFuc3BhcmVudCB0aGFuIGl0cyBhbHBo
YSB2YWx1ZSBpbmRpY2F0ZXMuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IENvbG9y
PiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSBDb2xvcigwLCAwLCAwLCAxMDIpOwotICAgIHJl
dHVybiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7CisgICAgcmV0dXJuIENvbG9yKDAsIDAsIDAs
IDEwMik7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGM3MjgwMWRkZjAzNWFmM2Y2ZTYyZTAzOTY3
NWNjN2ZiYWRkNjg1MWMuLmEyOGJhYWNhN2Q1MDcyZGI2YjY0NjUwNjRlZmI1Mzc0ZTlkM2UyYjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0yNCwxMiArMjQsNyBA
QAogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgIlBvcHVwTWVudVN0eWxlLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKLQotI2lmIFVTRShORVdfVEhFTUUpCi0jaW5jbHVkZSAi
VGhlbWUuaCIKLSNlbHNlCiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgotI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDA0LDEwICszOTksNiBAQCBwcml2YXRlOgogICAgIG11dGFi
bGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3I7CiAgICAg
bXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAg
ICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xv
cjsKLQotI2lmIFVTRShORVdfVEhFTUUpCi0gICAgVGhlbWUqIG1fdGhlbWU7IC8vIFRoZSBwbGF0
Zm9ybS1zcGVjaWZpYyB0aGVtZS4KLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUJyZWFrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVCcmVha2VyLmgKaW5kZXggZDkz
ODkzZTk4NDllZWFjNjVkOWZlOTNhMjAzZTJmZDg3Njg0NDM0My4uNjU4NTg3N2Y5ZDNiNDdlYTIy
N2FjN2RhZmMzZjUzMzhlOTExOTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUJyZWFrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lQnJlYWtlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
MCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHQgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBDaGFuZ1Nlb2sgT2ggPHNoaXZhbWlk
b3dAZ21haWwuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBB
bGwgcmlnaHQgcmVzZXJ2ZWQuCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUlubGluZUhlYWRlcnMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4
IDU2Y2E1ZWEzNmMyZjBiNjUzY2E2YzI5MjIzYWVhMGRhYTA4NDM1ZDkuLmUxNTU4N2U4NTgyNGM4
YjMwMThhNDc5N2QxZWRjMGVlMWYxMWM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCwyNyAr
NjQsMTcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Zpc2libGVQb3NpdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaXNpYmxlVW5pdHMuaD4K
LQogI2ltcG9ydCA8V2ViQ29yZS9XQUtBcHBLaXRTdHVicy5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotdXNpbmcgV2ViQ29yZTo6RmxvYXRQb2ludDsKLXVzaW5nIFdlYkNvcmU6OkZv
bnRDYXNjYWRlOwotdXNpbmcgV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50OwotdXNpbmcgV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDsKLXVzaW5nIFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Owot
dXNpbmcgV2ViQ29yZTo6SW5saW5lQm94OwotdXNpbmcgV2ViQ29yZTo6SW50UmVjdDsKIHVzaW5n
IFdlYkNvcmU6Ok5vZGU7CiB1c2luZyBXZWJDb3JlOjpQb3NpdGlvbjsKIHVzaW5nIFdlYkNvcmU6
OlJhbmdlOwogdXNpbmcgV2ViQ29yZTo6UmVuZGVyQmxvY2s7CiB1c2luZyBXZWJDb3JlOjpSZW5k
ZXJCb3g7CiB1c2luZyBXZWJDb3JlOjpSZW5kZXJPYmplY3Q7Ci11c2luZyBXZWJDb3JlOjpSZW5k
ZXJTdHlsZTsKIHVzaW5nIFdlYkNvcmU6OlJlbmRlclRleHQ7Ci11c2luZyBXZWJDb3JlOjpSb290
SW5saW5lQm94OwogdXNpbmcgV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOwogCiBAaW1wbGVtZW50
YXRpb24gRE9NUmFuZ2UgKFVJS2l0RXh0ZW5zaW9ucykKQEAgLTE2MSw3ICsxNTEsNyBAQCAtIChO
U0FycmF5ICopYm91bmRpbmdCb3hlcwogICAgIH0KIAogICAgIGlmICghW3JlY3RzIGNvdW50XSkK
LSAgICAgICAgcmVjdHMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpib3VuZHNdXTsKKyAgICAgICAgcmVjdHMgPSBAW1tOU1ZhbHVlIHZhbHVlV2l0aFJl
Y3Q6Ym91bmRzXV07CiAKICAgICByZXR1cm4gcmVjdHM7CiB9CkBAIC0xODIsNyArMTcyLDcgQEAg
LSAoTlNBcnJheSAqKWFic29sdXRlUXVhZHMKIAogICAgIGlmICghW3F1YWRzIGNvdW50XSkgewog
ICAgICAgICBXS1F1YWRPYmplY3QqIHF1YWRPYmplY3QgPSBbW1dLUXVhZE9iamVjdCBhbGxvY10g
aW5pdFdpdGhRdWFkOltzZWxmIGFic29sdXRlUXVhZF1dOwotICAgICAgICBxdWFkcyA9IFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdDpxdWFkT2JqZWN0XTsKKyAgICAgICAgcXVhZHMgPSBAW3F1YWRP
YmplY3RdOwogICAgICAgICBbcXVhZE9iamVjdCByZWxlYXNlXTsKICAgICB9CiAKQEAgLTI1MCwx
MiArMjQwLDExIEBAIC0gKENHRmxvYXQpdGV4dEhlaWdodAogCiAtIChET01Ob2RlICopZmluZEV4
cGxvZGVkVGV4dE5vZGVBdFBvaW50OihDR1BvaW50KXBvaW50CiB7Ci0gICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CisgICAgYXV0byogcmVuZGVyZXIg
PSBjb3JlKHNlbGYpLT5yZW5kZXJlcigpOwogICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93Pihy
ZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZW5kZXJCbG9ja0Zsb3cqIGJs
b2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlcik7Ci0gICAgUmVuZGVyVGV4
dCogcmVuZGVyVGV4dCA9IGJsb2NrLT5maW5kQ2xvc2VzdFRleHRBdEFic29sdXRlUG9pbnQocG9p
bnQpOworICAgIGF1dG8qIHJlbmRlclRleHQgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpy
ZW5kZXJlcikuZmluZENsb3Nlc3RUZXh0QXRBYnNvbHV0ZVBvaW50KHBvaW50KTsKICAgICBpZiAo
cmVuZGVyVGV4dCAmJiByZW5kZXJUZXh0LT50ZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm4ga2l0
KHJlbmRlclRleHQtPnRleHROb2RlKCkpOwogCkBAIC0yNjYsMTAgKzI1NSw4IEBAIEBlbmQKIAog
Ly8tLS0tLS0tLS0tLS0tLS0tLQogCi1AaW1wbGVtZW50YXRpb24gRE9NRWxlbWVudCAoRE9NVUlL
aXRDb21wbGV4aXR5RXh0ZW5zaW9ucykgCi0KK0BpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChE
T01VSUtpdENvbXBsZXhpdHlFeHRlbnNpb25zKQogLSAoaW50KXN0cnVjdHVyYWxDb21wbGV4aXR5
Q29udHJpYnV0aW9uIHsgcmV0dXJuIDA7IH0KLQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gRE9N
SFRNTEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpIApAQCAtMzA4LDcgKzI5
NSw2IEBAIEBpbXBsZW1lbnRhdGlvbiBET01IVE1MQm9keUVsZW1lbnQgKERPTVVJS2l0Q29tcGxl
eGl0eUV4dGVuc2lvbnMpCiAtIChpbnQpc3RydWN0dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24g
eyByZXR1cm4gMDsgfQogQGVuZAogCi0KIC8vIE1heGltYWxseSBjb21wbGV4IGVsZW1lbnRzCiAK
IEBpbXBsZW1lbnRhdGlvbiBET01IVE1MRm9ybUVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4
dGVuc2lvbnMpCkBAIC0zNDMsMjMgKzMyOSwyMCBAQCBAaW1wbGVtZW50YXRpb24gRE9NSFRNTFNl
bGVjdEVsZW1lbnQgKERPTVVJS2l0Q29tcGxleGl0eUV4dGVuc2lvbnMpCiAtIChpbnQpc3RydWN0
dXJhbENvbXBsZXhpdHlDb250cmlidXRpb24geyByZXR1cm4gSU5UX01BWDsgfQogQGVuZAogCi0K
IC8vLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgCiBAaW1wbGVtZW50YXRpb24gRE9NSFRNTEFy
ZWFFbGVtZW50IChET01VSUtpdEV4dGVuc2lvbnMpCiAKLS0gKENHUmVjdClib3VuZGluZ0JveFdp
dGhPd25lcjooRE9NTm9kZSAqKWFuT3duZXIKKy0gKENHUmVjdClib3VuZGluZ0JveFdpdGhPd25l
cjooRE9NTm9kZSAqKW93bmVyCiB7CiAgICAgLy8gaWdub3JlcyB0cmFuc2Zvcm1zCi0gICAgcmV0
dXJuIGFuT3duZXIgPyBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRlUmVjdChjb3Jl
KGFuT3duZXIpLT5yZW5kZXJlcigpKSkgOiBDR1JlY3RaZXJvOworICAgIHJldHVybiBvd25lciA/
IHNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNvbXB1dGVSZWN0KGNvcmUob3duZXIpLT5yZW5k
ZXJlcigpKSkgOiBDR1JlY3RaZXJvOwogfQogCi0tIChXS1F1YWQpYWJzb2x1dGVRdWFkV2l0aE93
bmVyOihET01Ob2RlICopYW5Pd25lcgorLSAoV0tRdWFkKWFic29sdXRlUXVhZFdpdGhPd25lcjoo
RE9NTm9kZSAqKW93bmVyCiB7Ci0gICAgaWYgKGFuT3duZXIpIHsKLSAgICAgICAgLy8gRklYTUU6
IEVDTEFJUgotICAgICAgICAvL1dlYkNvcmU6OkZsb2F0UXVhZCB0aGVRdWFkID0gY29yZShzZWxm
KS0+Z2V0QWJzb2x1dGVRdWFkKGNvcmUoYW5Pd25lciktPnJlbmRlcmVyKCkpOwotICAgICAgICBX
ZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSBzbmFwcGVkSW50UmVjdChjb3JlKHNlbGYpLT5jb21wdXRl
UmVjdChjb3JlKGFuT3duZXIpLT5yZW5kZXJlcigpKSk7CisgICAgaWYgKG93bmVyKSB7CisgICAg
ICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHNuYXBwZWRJbnRSZWN0KGNvcmUoc2VsZiktPmNv
bXB1dGVSZWN0KGNvcmUob3duZXIpLT5yZW5kZXJlcigpKSk7CiAgICAgICAgIFdLUXVhZCBxdWFk
OwogICAgICAgICBxdWFkLnAxID0gQ0dQb2ludE1ha2UocmVjdC54KCksIHJlY3QueSgpKTsKICAg
ICAgICAgcXVhZC5wMiA9IENHUG9pbnRNYWtlKHJlY3QubWF4WCgpLCByZWN0LnkoKSk7CkBAIC0z
NzIsMTUgKzM1NSwxNSBAQCAtIChXS1F1YWQpYWJzb2x1dGVRdWFkV2l0aE93bmVyOihET01Ob2Rl
ICopYW5Pd25lcgogICAgIHJldHVybiB6ZXJvUXVhZDsKIH0KIAotLSAoTlNBcnJheSAqKWJvdW5k
aW5nQm94ZXNXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCistIChOU0FycmF5ICopYm91bmRp
bmdCb3hlc1dpdGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiB7Ci0gICAgcmV0dXJuIFtOU0FycmF5
IGFycmF5V2l0aE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGJvdW5kaW5nQm94
V2l0aE93bmVyOmFuT3duZXJdXV07CisgICAgcmV0dXJuIEBbW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpbc2VsZiBib3VuZGluZ0JveFdpdGhPd25lcjpvd25lcl1dXTsKIH0KIAotLSAoTlNBcnJheSAq
KWFic29sdXRlUXVhZHNXaXRoT3duZXI6KERPTU5vZGUgKilhbk93bmVyCistIChOU0FycmF5ICop
YWJzb2x1dGVRdWFkc1dpdGhPd25lcjooRE9NTm9kZSAqKW93bmVyCiB7Ci0gICAgV0tRdWFkT2Jq
ZWN0KiBxdWFkT2JqZWN0ID0gW1tXS1F1YWRPYmplY3QgYWxsb2NdIGluaXRXaXRoUXVhZDpbc2Vs
ZiBhYnNvbHV0ZVF1YWRXaXRoT3duZXI6YW5Pd25lcl1dOwotICAgIE5TQXJyYXkqICAgIHF1YWRB
cnJheSA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpxdWFkT2JqZWN0XTsKKyAgICBXS1F1YWRP
YmplY3QgKnF1YWRPYmplY3QgPSBbW1dLUXVhZE9iamVjdCBhbGxvY10gaW5pdFdpdGhRdWFkOltz
ZWxmIGFic29sdXRlUXVhZFdpdGhPd25lcjpvd25lcl1dOworICAgIE5TQXJyYXkgKnF1YWRBcnJh
eSA9IEBbcXVhZE9iamVjdF07CiAgICAgW3F1YWRPYmplY3QgcmVsZWFzZV07CiAgICAgcmV0dXJu
IHF1YWRBcnJheTsKIH0KQEAgLTQwNSwxMyArMzg4LDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBET01I
VE1MSW1hZ2VFbGVtZW50IChXZWJET01IVE1MSW1hZ2VFbGVtZW50T3BlcmF0aW9uc1ByaXZhdGUp
CiAKIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKIHsK
LSAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNo
ZWRJbWFnZSgpOworICAgIGF1dG8qIGNhY2hlZEltYWdlID0gY29yZShzZWxmKS0+Y2FjaGVkSW1h
Z2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFdl
YkNvcmU6OkltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOworICAgIGF1dG8qIGlt
YWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGRhdGEgPSByYXdJbWFnZURhdGEg
PyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CisgICAgYXV0
byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDog
aW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CkBAIC00MTksMTAgKzQw
Miw5IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEK
IAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQogewotICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlICpj
YWNoZWRJbWFnZSA9IGNvcmUoc2VsZiktPmNhY2hlZEltYWdlKCk7CisgICAgYXV0byogY2FjaGVk
SW1hZ2UgPSBjb3JlKHNlbGYpLT5jYWNoZWRJbWFnZSgpOwogICAgIGlmICghY2FjaGVkSW1hZ2Ug
fHwgIWNhY2hlZEltYWdlLT5pbWFnZSgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAogICAg
IHJldHVybiBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4
IDBiZjhiNTkwZDJkMjczOGU4NWEyZWY3NTA4NDkwY2Y3ZTljN2NkNjEuLmIwZTYwNmU5NDMzNTM2
MGZjODgzNDI2Mzc5MTNjNmE1ZGJmZmIxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0zMCwyNiArMzAsMjkgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CisKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKICNlbmRpZgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8UGx1Z2luUGFja2FnZT4gPiBQbHVnaW5QYWNrYWdlQnlOYW1lTWFw
OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkKKwogc3RhdGlj
IGNvbnN0IHNpemVfdCBtYXhpbXVtUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVTaXplID0g
MzI3Njg7CiAKIHN0YXRpYyBib29sIGdQZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUlzRW5h
YmxlZDsKIAogU3RyaW5nJiBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVBhdGgoKQogewot
ICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNhY2hlUGF0aCwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNhY2hlUGF0aDsKICAgICByZXR1
cm4gY2FjaGVQYXRoOwogfQorCiAjZW5kaWYKIAogUGx1Z2luRGF0YWJhc2U6OlBsdWdpbkRhdGFi
YXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwCmluZGV4IDEyMDEyZTAyZmU3ZGFiYjA5MGIx
YzcyYjI5NmI4NWY5OTNmMDM3NzYuLjFjNTliMzMyZTE1ZGVkNTk1YjQ5NDYzY2E4OTBiY2I3YmU0
YTIyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
TWFpblRocmVhZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5o
IgogCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlciYgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
cjo6c2NoZWR1bGVyKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoUGx1
Z2luTWFpblRocmVhZFNjaGVkdWxlciwgc2NoZWR1bGVyLCAoKSk7Ci0KKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcj4gc2NoZWR1bGVyOwogICAgIHJl
dHVybiBzY2hlZHVsZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKaW5kZXggOTI2YjRiY2Qx
YzZjOWE0NTJhZDg2YzUwNzFmNTA5ZGUxMDgwZTk2My4uYjE1OTY1YWM1YWMzNzI2YzY0MTcwZWQ0
Y2U2ZTk1ZDQzNDJkODRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmgKQEAgLTIzLDE0ICsyMywx
MyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQbHVnaW5NYWluVGhyZWFkU2No
ZWR1bGVyX2gKLSNkZWZpbmUgUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCiB0eXBlZGVm
IHN0cnVjdCBfTlBQIE5QUF90OwogdHlwZWRlZiBOUFBfdCogTlBQOwpAQCAtNTAsNiArNDksNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyUGx1Z2luKE5QUCk7
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFBsdWdpbk1haW5UaHJlYWRT
Y2hlZHVsZXI+OwogICAgIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIoKTsKICAgICB2b2lkIGRp
c3BhdGNoQ2FsbHMoKTsKIApAQCAtODIsNSArODIsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUGx1Z2luTWFpblRocmVhZFNjaGVkdWxlcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAzMWEwOGU4NTcyODQ0ZDZkNmY3
YTNiYzI5MGJmODI1MjdmODI0YzNhLi40Y2U4Yzk5OGE0MTljNjc4ODViZGY2N2QxYTFjMGViYzQ4
YmE0MDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91
cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KKwogI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5
c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCkBAIC00MSw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpCiB7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
cywgcGxhdGZvcm1TdHJhdGVnaWVzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdl
YlBsYXRmb3JtU3RyYXRlZ2llcz4gcGxhdGZvcm1TdHJhdGVnaWVzOwogfQogCiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OldlYlBsYXRmb3JtU3RyYXRlZ2llcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDhkMzY1MzI4Y2NkNmQ2YzA1MmVmYWJiYzgyMGNiOTA5ZWM3ODExYzAuLjJj
MTM5MjcwNWVlN2NhYTRjZDcyN2U4OTg2MjUwZmE4MjRhNzM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC0yMywyMCArMjMsMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCi0jZGVm
aW5lIFdlYlBsYXRmb3JtU3RyYXRlZ2llc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llc1N0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVn
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogY2xhc3MgV2ViUGxhdGZvcm1TdHJhdGVnaWVzIDogcHVibGljIFdl
YkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcywgcHJpdmF0ZSBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICAKIHByaXZh
dGU6CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz47CiAg
ICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzKCk7Ci0gICAgCisKICAgICAvLyBXZWJDb3JlOjpQbGF0
Zm9ybVN0cmF0ZWdpZXMKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3Jl
YXRlQ29va2llc1N0cmF0ZWd5KCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJhdGVn
eSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKTsKQEAgLTUyLDUgKzUzLDMgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIH07Ci0KLSNlbmRpZiAvLyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCBhYWU5
OWViNTIyOTE5NDAwNjI1Nzk5YzViNzBkMjE2YjIzNzhjNTVmLi4yMmIwODQ2YTkwNmI3ODI4NjU2
YjhkOTU3YzEwYTBkZmFmZjhiMzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
LmNwcApAQCAtMjM2LDkgKzIzNiw5IEBAIFVMT05HIFdlYkhpc3Rvcnk6OlJlbGVhc2UoKQogCiAv
LyBJV2ViSGlzdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXRpYyBpbmxpbmUgQ09NUHRyPFdlYkhpc3Rvcnk+
JiBzaGFyZWRIaXN0b3J5U3RvcmFnZSgpCitzdGF0aWMgQ09NUHRyPFdlYkhpc3Rvcnk+JiBzaGFy
ZWRIaXN0b3J5U3RvcmFnZSgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FM
KENPTVB0cjxXZWJIaXN0b3J5Piwgc2hhcmVkSGlzdG9yeSwgKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxDT01QdHI8V2ViSGlzdG9yeT4+IHNoYXJlZEhpc3Rvcnk7CiAgICAgcmV0dXJu
IHNoYXJlZEhpc3Rvcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJM
b2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IDhmZjBlZmNjOGE1ODZhZTEzYzgyOTg2YzdkZWQw
ZDA0Mjk1ZmFjMGYuLmI3NTczOTE1OWZlZmQyMWVkNmZhMzM2ODg4MGExOWI5YmMxNDIxZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNw
cApAQCAtNDcsMjUgKzQ3LDI1IEBAIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIExvY2FsaXplZFN0
cmluZyo+IExvY2FsaXplZFN0cmluZ01hcDsKIAogc3RhdGljIExvY2smIG1haW5CdW5kbGVMb2NT
dHJpbmdzTXV0ZXgoKQogewotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChMb2Nr
LCBtdXRleCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxMb2NrPiBtdXRleDsKICAg
ICByZXR1cm4gbXV0ZXg7CiB9CiAKIHN0YXRpYyBMb2NhbGl6ZWRTdHJpbmdNYXAmIG1haW5CdW5k
bGVMb2NTdHJpbmdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoTG9j
YWxpemVkU3RyaW5nTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TG9j
YWxpemVkU3RyaW5nTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIAogc3RhdGljIExvY2sm
IGZyYW1ld29ya0xvY1N0cmluZ3NNdXRleCgpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKExvY2ssIG11dGV4LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPExv
Y2s+IG11dGV4OwogICAgIHJldHVybiBtdXRleDsKIH0KIAogc3RhdGljIExvY2FsaXplZFN0cmlu
Z01hcCBmcmFtZXdvcmtMb2NTdHJpbmdzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoTG9jYWxpemVkU3RyaW5nTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TG9jYWxpemVkU3RyaW5nTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkMDY2ZDNhYTEwODk1ZjZiNjBmYWE3
ZTg1NzkzZDM3MTI3NjRjZTY0Li41NWQ4ZjFkZTVkYWY4MjAyZDMzNWI0ZjM2ZWM4OGU3NmMyOTQw
MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgQXBwY2VsZXJhdG9y
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQg
RnVsZ2hhbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yMjYsMjQgKzIyNiwyNCBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBKU0M6
OkpTTG9jazsKIAorc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCk7CisKK3N0YXRp
YyBjb25zdCBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXkgPSBDRlNUUigi
V2ViS2l0TG9jYWxDYWNoZSIpOwogc3RhdGljIEhNT0RVTEUgYWNjZXNzaWJpbGl0eUxpYjsKKwog
c3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+JiBwZW5kaW5nRGVsZXRlQmFja2luZ1N0b3JlU2V0KCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJWaWV3Kj4+IHBlbmRpbmdE
ZWxldGVCYWNraW5nU3RvcmVTZXQ7CiAgICAgcmV0dXJuIHBlbmRpbmdEZWxldGVCYWNraW5nU3Rv
cmVTZXQ7CiB9CiAKLXN0YXRpYyBDRlN0cmluZ1JlZiBXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNL
ZXkgPSBDRlNUUigiV2ViS2l0TG9jYWxDYWNoZSIpOwotCi1zdGF0aWMgU3RyaW5nIHdlYktpdFZl
cnNpb25TdHJpbmcoKTsKLQogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKCFw
YWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAg
ICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmlzRW1wdHlDaHJvbWVDbGllbnQoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDaHJvbWVDbGllbnQmPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSku
d2ViVmlldygpOwogfQpAQCAtMTU1NSwxMCArMTU1NSw4IEBAIGJvb2wgV2ViVmlldzo6Y2FuSGFu
ZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIFN0
cmluZyBXZWJWaWV3OjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3Qg
U3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUpCiB7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgb3NWZXJzaW9uLCAod2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygpKSk7
Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgd2ViS2l0VmVyc2lv
biwgKHdlYktpdFZlcnNpb25TdHJpbmcoKSkpOwotCi0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1v
emlsbGEvNS4wICgiLCBvc1ZlcnNpb24sICIpIEFwcGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb24s
ICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6
ICIgIiwgYXBwbGljYXRpb25OYW1lKTsKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBwcmVmaXggPSBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgd2luZG93c1ZlcnNp
b25Gb3JVQVN0cmluZygpLCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uU3RyaW5nKCks
ICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHByZWZpeC5n
ZXQoKSwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBhcHBsaWNhdGlvbk5h
bWUpOwogfQogCiBQYWdlKiBXZWJWaWV3OjpwYWdlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlN2FkZjU5MWZiMzlkMzU3NzljMTc1ZjU0NWFi
MzUyZGRkMWJmYzZmLi5iOWRiYTlmYzRkYmY3NzE1YmRkN2I5NjIwZThlOWMxOTk5Y2ZmNjBjIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTctMDctMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vcmUgTmV2ZXJEZXN0cm95ZWQgYW5kIHJlbGF0ZWQgY2xlYW51cAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NzQ1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9K
YXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgp
OiBVc2UgTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCBvZgorICAgICAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwuCisgICAgICAgIChqYXZhU2NyaXB0VGhyZWFkcyk6IERpdHRvLgorCiAy
MDE3LTA3LTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXSBBZGQgbGliZXBveHkgdG8gdGhlIEpoYnVpbGQgbW9kdWxlc2V0CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwCmluZGV4IDJlYWZiYmViZmI1YmI5
OWRiMTZiZTRhNjQwZmY1NGQzMDZmMTg1ZjkuLjkyZGE3ZTE5NzhjNWQwMzhlNmJiOTk5NWU0YjIw
NWEyMjFkOWE2N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRU
aHJlYWRpbmcuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRp
bmcuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMp
IDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAg
ICAgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqICAgICAgICAgICAo
QykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlIDxwYXJvZ2FAcGFyb2dhLmNvbT4KQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NywxNCArNDgsMTQgQEAg
c3RhdGljIEpTQ29udGV4dEdyb3VwUmVmIGphdmFTY3JpcHRUaHJlYWRzR3JvdXA7CiAKIHN0YXRp
YyBMb2NrJiBqYXZhU2NyaXB0VGhyZWFkc011dGV4KCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoTG9jaywgc3RhdGljTXV0ZXgsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8TG9jaz4gc3RhdGljTXV0ZXg7CiAgICAgcmV0dXJuIHN0YXRpY011dGV4OwogfQog
CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFRocmVhZD4+IFRocmVhZFNldDsKIHN0YXRpYyBUaHJl
YWRTZXQmIGphdmFTY3JpcHRUaHJlYWRzKCkKIHsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFU
SUNfTE9DQUwoVGhyZWFkU2V0LCBzdGF0aWNKYXZhU2NyaXB0VGhyZWFkcywgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUaHJlYWRTZXQ+IHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzOwog
ICAgIEFTU0VSVCghamF2YVNjcmlwdFRocmVhZHNNdXRleCgpLnRyeUxvY2soKSk7CiAgICAgcmV0
dXJuIHN0YXRpY0phdmFTY3JpcHRUaHJlYWRzOwogfQo=
</data>
<flag name="review"
          id="336969"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>