<?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>121647</bug_id>
          
          <creation_ts>2013-09-19 17:13:52 -0700</creation_ts>
          <short_desc>Modernize Length setters/getters</short_desc>
          <delta_ts>2013-09-19 17:59:22 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931135</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-19 17:13:52 -0700</bug_when>
    <thetext>Modernize Length setters/getters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931140</commentid>
    <comment_count>1</comment_count>
      <attachid>212109</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-19 17:27:27 -0700</bug_when>
    <thetext>Created attachment 212109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931141</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-19 17:28:58 -0700</bug_when>
    <thetext>Attachment 212109 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/platform/CalculationValue.h&apos;, u&apos;Source/WebCore/platform/Length.cpp&apos;, u&apos;Source/WebCore/platform/Length.h&apos;, u&apos;Source/WebCore/platform/LengthBox.cpp&apos;, u&apos;Source/WebCore/platform/LengthBox.h&apos;, u&apos;Source/WebCore/platform/LengthSize.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperation.h&apos;, u&apos;Source/WebCore/rendering/style/BasicShapes.h&apos;, u&apos;Source/WebCore/rendering/style/FillLayer.h&apos;, u&apos;Source/WebCore/rendering/style/NinePieceImage.cpp&apos;, u&apos;Source/WebCore/rendering/style/NinePieceImage.h&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.h&apos;, u&apos;Source/WebCore/rendering/style/StyleBoxData.h&apos;, u&apos;Source/WebCore/rendering/style/StyleReflection.h&apos;]&quot; exit_code: 1
Source/WebCore/platform/Length.cpp:181:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/platform/Length.cpp:193:  Missing spaces around &gt;&gt;  [whitespace/operators] [3]
Source/WebCore/css/DeprecatedStyleBuilder.cpp:500:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/css/DeprecatedStyleBuilder.cpp:515:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931142</commentid>
    <comment_count>3</comment_count>
      <attachid>212109</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-19 17:35:02 -0700</bug_when>
    <thetext>Comment on attachment 212109
Patch

Delicious C++11!
r=me assuming tests still pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931143</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-19 17:59:22 -0700</bug_when>
    <thetext>Committed r156132: &lt;http://trac.webkit.org/changeset/156132&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212109</attachid>
            <date>2013-09-19 17:27:27 -0700</date>
            <delta_ts>2013-09-19 17:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121647-20130919172726.patch</filename>
            <type>text/plain</type>
            <size>86169</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI1NmYxNzVhZWE0NGUz
Mzg1MWNiMjM2M2FiMWY2MWJlNzc0OWJkNi4uNGQ3NDNhMGQxZjc4ZjgxOTM1OGZlOGJlYjRmZjU0
ODJjZWNhMGQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAxMy0wOS0xOSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybml6ZSBM
ZW5ndGggc2V0dGVycy9nZXR0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjE2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQg
b3BlcmF0b3IgdG8gTGVuZ3RoIGFuZCBmaXh1cCBzb21lIG9mIHRoZSBnZXR0ZXJzIGFuZCBzZXR0
ZXJzLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUpOgorICAgICAgICAqIGNzcy9EZXBy
ZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlM
ZW5ndGg6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMZW5ndGg6
OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlclJh
ZGl1czo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlclJh
ZGl1czo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGlu
ZUhlaWdodDo6Y3JlYXRlSGFuZGxlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJv
cGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoUHJvcGVydHlXcmFw
cGVyOjpMZW5ndGhQcm9wZXJ0eVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoUHJv
cGVydHlXcmFwcGVyOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXJQcm9wZXJ0
eVdyYXBwZXI6OkZpbGxMYXllclByb3BlcnR5V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXI6OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
b3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFw
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDYWxjRXhwcmVzc2lvbkxlbmd0aDo6Q2FsY0V4cHJlc3Npb25MZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aDo6Q2FsY0V4cHJlc3Npb25CbGVu
ZExlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbGN1bGF0aW9uVmFsdWVIYW5kbGVNYXA6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWxjdWxhdGlvblZhbHVlSGFuZGxlTWFwOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okxl
bmd0aDo6ZGVjcmVtZW50Q2FsY3VsYXRlZFJlZik6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3Ro
Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Okxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZW5ndGg6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Om1vdmVGcm9t
TGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoQm94Ojpsb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmxvZ2ljYWxSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okxlbmd0aEJveDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjplbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aEJveC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3Ro
Qm94OjpMZW5ndGhCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94OjpsZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6cmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGVu
Z3RoQm94Ojp0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpib3R0b20pOgorICAg
ICAgICAqIHBsYXRmb3JtL0xlbmd0aFNpemUuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFNp
emU6Okxlbmd0aFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoU2l6ZTo6c2V0V2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoU2l6ZTo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVuZ3RoU2l6ZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFNpemU6
OmhlaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6Qmx1ckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6Qmx1
ckZpbHRlck9wZXJhdGlvbjo6c3RkRGV2aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbjo6Qmx1ckZpbHRlck9wZXJhdGlvbjo6Qmx1ckZpbHRlck9wZXJhdGlvbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNpY1NoYXBlUmVjdGFuZ2xlOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVS
ZWN0YW5nbGU6OnkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJlY3RhbmdsZTo6d2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJlY3RhbmdsZTo6aGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVSZWN0YW5nbGU6OmNvcm5lclJhZGl1c1gpOgorICAg
ICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJlY3RhbmdsZTo6Y29ybmVyUmFkaXVzWSk6CisgICAg
ICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUmVjdGFuZ2xlOjpzZXRYKToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljU2hhcGVSZWN0YW5nbGU6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZVJlY3RhbmdsZTo6c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJl
Y3RhbmdsZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVSZWN0YW5n
bGU6OnNldENvcm5lclJhZGl1c1gpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVJlY3Rh
bmdsZTo6c2V0Q29ybmVyUmFkaXVzWSk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlQ2ly
Y2xlOjpjZW50ZXJYKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVDaXJjbGU6OmNlbnRl
clkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNpcmNsZTo6cmFkaXVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVDaXJjbGU6OnNldENlbnRlclgpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUNpcmNsZTo6c2V0Q2VudGVyWSk6CisgICAgICAgIChXZWJDb3JlOjpC
YXNpY1NoYXBlQ2lyY2xlOjpzZXRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFw
ZUVsbGlwc2U6OmNlbnRlclgpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6
OmNlbnRlclkpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6OnJhZGl1c1gp
OgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6OnJhZGl1c1kpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6OnNldENlbnRlclgpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUVsbGlwc2U6OnNldENlbnRlclkpOgorICAgICAgICAoV2ViQ29yZTo6
QmFzaWNTaGFwZUVsbGlwc2U6OnNldFJhZGl1c1gpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNT
aGFwZUVsbGlwc2U6OnNldFJhZGl1c1kpOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZVBv
bHlnb246OmdldFhBdCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUG9seWdvbjo6Z2V0
WUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVQb2x5Z29uOjphcHBlbmRQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGU6OnRvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGU6OnJpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZTo6Ym90dG9tKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZTo6bGVmdCk6CisgICAgICAgIChXZWJDb3Jl
OjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGU6OmNvcm5lclJhZGl1c1gpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlOjpjb3JuZXJSYWRpdXNZKToKKyAgICAgICAg
KFdlYkNvcmU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZTo6c2V0VG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZTo6c2V0UmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlOjpzZXRCb3R0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlOjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZTo6c2V0Q29ybmVyUmFkaXVzWCk6CisgICAgICAg
IChXZWJDb3JlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGU6OnNldENvcm5lclJhZGl1c1kpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbGxTaXplOjpGaWxsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OnhQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6OnlQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpGaWxsTGF5ZXI6OnNpemVMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
bExheWVyOjpzZXRYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpzZXRZ
UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6TmluZVBpZWNlSW1hZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6TmluZVBpZWNlSW1hZ2U6OnNldEltYWdlU2xpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5p
bmVQaWVjZUltYWdlOjpzZXRCb3JkZXJTbGljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmluZVBp
ZWNlSW1hZ2U6OnNldE91dHNldCk6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6
Y29tcHV0ZU91dHNldCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJveERh
dGE6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQm94RGF0YTo6aGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQm94RGF0YTo6bWluV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCb3hEYXRhOjptaW5IZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCb3hE
YXRhOjptYXhXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJveERhdGE6Om1heEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJveERhdGE6OnZlcnRpY2FsQWxpZ24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVmbGVjdGlvbjo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVm
bGVjdGlvbjo6c2V0T2Zmc2V0KToKKwogMjAxMy0wOS0xOSAgQmVtIEpvbmVzLUJleSAgPGJqb25l
c2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBGaXggaGFuZGxpbmcgb2YgdG9wIG1hcmdpbiBvbiBm
bG9hdCB3aXRoIHNoYXBlLW91dHNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggY2Q1OWVkY2ZlYWMzODFhYjQyZGExYTE2
YTU5YzgxYWJmZDA1N2ViMC4uYzlmM2U2MjU4ODM0ZmI5YTUzN2VlM2IxY2Q3NzU3ZjA3YWI5Mzgz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTcwMyw3ICs3MDMsNyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUgogICAg
IHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVDb2xvclZhbHVlKGNvbG9yLnJnYigpKTsKIH0K
IAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJW
YWx1ZXMoTGVuZ3RoU2l6ZSByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
VmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Qm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50KQpAQCAtNzE3LDcgKzcx
Nyw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWVzKExlbmd0aFNpemUgcmFkaXVzLCBjCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgp
OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWUoTGVuZ3RoU2l6ZSByYWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVy
VmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRCb3JkZXJS
YWRpdXNDb3JuZXJWYWx1ZShjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKIHsKICAgICBpZiAocmFkaXVzLndp
ZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7CiAgICAgICAgIGlmIChyYWRpdXMud2lkdGgoKS50
eXBlKCkgPT0gUGVyY2VudCkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHls
ZSkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1Zh
bHVlTm9ybWFsKTsKIH0KIAotdHlwZWRlZiBMZW5ndGggKFJlbmRlclN0eWxlOjoqUmVuZGVyU3R5
bGVMZW5ndGhHZXR0ZXIpKCkgY29uc3Q7Cit0eXBlZGVmIGNvbnN0IExlbmd0aCYgKFJlbmRlclN0
eWxlOjoqUmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIpKCkgY29uc3Q7CiB0eXBlZGVmIExheW91dFVu
aXQgKFJlbmRlckJveE1vZGVsT2JqZWN0OjoqUmVuZGVyQm94Q29tcHV0ZWRDU1NWYWx1ZUdldHRl
cikoKSBjb25zdDsKIAogdGVtcGxhdGU8UmVuZGVyU3R5bGVMZW5ndGhHZXR0ZXIgbGVuZ3RoR2V0
dGVyLCBSZW5kZXJCb3hDb21wdXRlZENTU1ZhbHVlR2V0dGVyIGNvbXB1dGVkQ1NTVmFsdWVHZXR0
ZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5k
ZXggMTE5NTdkODQzNDQwM2IwOGFkZDFlNWZjMzgxNDhhZWU5OTA1M2JlNS4uZmY1ODUyMDU3ZjI5
MTM4MzBjNTFhODlmNGVmM2U0YTQ1ZTY0MGU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIGVudW0gTGVuZ3Ro
TGVnYWN5SW50cmluc2ljIHsgTGVnYWN5SW50cmluc2ljRGlzYWJsZWQgPSAwLCBMZWdhY3lJbnRy
aW5zaWNFbmFibGVkCiBlbnVtIExlbmd0aEludHJpbnNpYyB7IEludHJpbnNpY0Rpc2FibGVkID0g
MCwgSW50cmluc2ljRW5hYmxlZCB9OwogZW51bSBMZW5ndGhOb25lIHsgTm9uZURpc2FibGVkID0g
MCwgTm9uZUVuYWJsZWQgfTsKIGVudW0gTGVuZ3RoVW5kZWZpbmVkIHsgVW5kZWZpbmVkRGlzYWJs
ZWQgPSAwLCBVbmRlZmluZWRFbmFibGVkIH07Ci10ZW1wbGF0ZSA8TGVuZ3RoIChSZW5kZXJTdHls
ZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAordGVtcGxhdGUgPGNvbnN0IExlbmd0aCYgKFJl
bmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsCiAgICAgICAgICAgdm9pZCAoUmVu
ZGVyU3R5bGU6OipzZXR0ZXJGdW5jdGlvbikoTGVuZ3RoKSwKICAgICAgICAgICBMZW5ndGggKCpp
bml0aWFsRnVuY3Rpb24pKCksCiAgICAgICAgICAgTGVuZ3RoQXV0byBhdXRvRW5hYmxlZCA9IEF1
dG9EaXNhYmxlZCwKQEAgLTM1Niw3ICszNTYsNyBAQCB0ZW1wbGF0ZSA8TGVuZ3RoIChSZW5kZXJT
dHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LAogICAgICAgICAgIExlbmd0aFVuZGVmaW5l
ZCBub25lVW5kZWZpbmVkID0gVW5kZWZpbmVkRGlzYWJsZWQ+CiBjbGFzcyBBcHBseVByb3BlcnR5
TGVuZ3RoIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZShSZW5kZXJTdHlsZSog
c3R5bGUsIExlbmd0aCB2YWx1ZSkgeyAoc3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9
CisgICAgc3RhdGljIHZvaWQgc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGggdmFs
dWUpIHsgKHN0eWxlLT4qc2V0dGVyRnVuY3Rpb24pKHN0ZDo6bW92ZSh2YWx1ZSkpOyB9CiAgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCkBAIC00MDIsNyArNDAyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7Ci0gICAgICAgIFByb3Bl
cnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPExlbmd0aCwgZ2V0
dGVyRnVuY3Rpb24sIExlbmd0aCwgc2V0dGVyRnVuY3Rpb24sIExlbmd0aCwgaW5pdGlhbEZ1bmN0
aW9uPjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9
IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxjb25zdCBMZW5ndGgmLCBnZXR0ZXJGdW5jdGlvbiwg
TGVuZ3RoLCBzZXR0ZXJGdW5jdGlvbiwgTGVuZ3RoLCBpbml0aWFsRnVuY3Rpb24+OjpjcmVhdGVI
YW5kbGVyKCk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5pbmhlcml0
RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUpOwogICAg
IH0KIH07CkBAIC00MzAsMTAgKzQzMCwxMCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotdGVtcGxh
dGUgPExlbmd0aFNpemUgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZv
aWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyRnVuY3Rpb24pKExlbmd0aFNpemUpLCBMZW5ndGhTaXpl
ICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgordGVtcGxhdGUgPGNvbnN0IExlbmd0aFNpemUmIChSZW5k
ZXJTdHlsZTo6KmdldHRlckZ1bmN0aW9uKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNl
dHRlckZ1bmN0aW9uKShMZW5ndGhTaXplKSwgTGVuZ3RoU2l6ZSAoKmluaXRpYWxGdW5jdGlvbiko
KT4KIGNsYXNzIEFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXMgewogcHVibGljOgotICAgIHN0YXRp
YyB2b2lkIHNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgTGVuZ3RoU2l6ZSB2YWx1ZSkgeyAo
c3R5bGUtPipzZXR0ZXJGdW5jdGlvbikodmFsdWUpOyB9CisgICAgc3RhdGljIHZvaWQgc2V0VmFs
dWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBMZW5ndGhTaXplIHZhbHVlKSB7IChzdHlsZS0+KnNldHRl
ckZ1bmN0aW9uKShzdGQ6Om1vdmUodmFsdWUpKTsgfQogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUq
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQpA
QCAtNDc2LDcgKzQ3Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFu
ZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7Ci0gICAgICAgIFByb3BlcnR5SGFuZGxlciBoYW5k
bGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPExlbmd0aFNpemUsIGdldHRlckZ1bmN0aW9u
LCBMZW5ndGhTaXplLCBzZXR0ZXJGdW5jdGlvbiwgTGVuZ3RoU2l6ZSwgaW5pdGlhbEZ1bmN0aW9u
Pjo6Y3JlYXRlSGFuZGxlcigpOworICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFw
cGx5UHJvcGVydHlEZWZhdWx0QmFzZTxjb25zdCBMZW5ndGhTaXplJiwgZ2V0dGVyRnVuY3Rpb24s
IExlbmd0aFNpemUsIHNldHRlckZ1bmN0aW9uLCBMZW5ndGhTaXplLCBpbml0aWFsRnVuY3Rpb24+
OjpjcmVhdGVIYW5kbGVyKCk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxl
ci5pbmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFs
dWUpOwogICAgIH0KIH07CkBAIC00ODUsMTIgKzQ4NSwyMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHN0cnVjdCBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzIHsKICAgICB0eXBlZGVmIFQgU2V0dGVy
OwogICAgIHR5cGVkZWYgVCBHZXR0ZXI7CisgICAgdHlwZWRlZiBUIEluaXRpYWxHZXR0ZXI7CiB9
OwogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IEZpbGxMYXllckFjY2Vzc29yVHlwZXM8U3R5bGVJbWFn
ZSo+IHsKICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU2V0dGVyOwogICAgIHR5
cGVkZWYgU3R5bGVJbWFnZSogR2V0dGVyOworICAgIHR5cGVkZWYgU3R5bGVJbWFnZSogSW5pdGlh
bEdldHRlcjsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVz
PExlbmd0aD4KK3sKKyAgICB0eXBlZGVmIExlbmd0aCBTZXR0ZXI7CisgICAgdHlwZWRlZiBjb25z
dCBMZW5ndGgmIEdldHRlcjsKKyAgICB0eXBlZGVmIExlbmd0aCBJbml0aWFsR2V0dGVyOwogfTsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsCkBAIC01MDIsNyArNTEyLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQsCiAgICAgICAgICAgdHlwZW5hbWUgRmlsbExheWVyQWNjZXNzb3JUeXBlczxUPjo6
R2V0dGVyIChGaWxsTGF5ZXI6OipnZXRGdW5jdGlvbikoKSBjb25zdCwKICAgICAgICAgICB2b2lk
IChGaWxsTGF5ZXI6OipzZXRGdW5jdGlvbikodHlwZW5hbWUgRmlsbExheWVyQWNjZXNzb3JUeXBl
czxUPjo6U2V0dGVyKSwKICAgICAgICAgICB2b2lkIChGaWxsTGF5ZXI6OipjbGVhckZ1bmN0aW9u
KSgpLAotICAgICAgICAgIHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OkdldHRl
ciAoKmluaXRpYWxGdW5jdGlvbikoRUZpbGxMYXllclR5cGUpLAorICAgICAgICAgIHR5cGVuYW1l
IEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OkluaXRpYWxHZXR0ZXIgKCppbml0aWFsRnVuY3Rp
b24pKEVGaWxsTGF5ZXJUeXBlKSwKICAgICAgICAgICB2b2lkIChDU1NUb1N0eWxlTWFwOjoqbWFw
RmlsbEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgogY2xh
c3MgQXBwbHlQcm9wZXJ0eUZpbGxMYXllciB7CiBwdWJsaWM6CkBAIC0xNDIwLDcgKzE0MzAsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCiAgICAgewotICAgICAgICBQcm9wZXJ0eUhhbmRsZXIgaGFuZGxlciA9IEFwcGx5UHJvcGVy
dHlEZWZhdWx0QmFzZTxMZW5ndGgsICZSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCwg
TGVuZ3RoLCAmUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQsIExlbmd0aCwgJlJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUhlaWdodD46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAgICAgUHJvcGVydHlI
YW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8Y29uc3QgTGVuZ3RoJiwg
JlJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0LCBMZW5ndGgsICZSZW5kZXJTdHlsZTo6
c2V0TGluZUhlaWdodCwgTGVuZ3RoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0Pjo6
Y3JlYXRlSGFuZGxlcigpOwogICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKGhhbmRsZXIu
aW5oZXJpdEZ1bmN0aW9uKCksIGhhbmRsZXIuaW5pdGlhbEZ1bmN0aW9uKCksICZhcHBseVZhbHVl
KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDI3NWYyZjhjNjcxYWZmMWMyYTEzN2EyYmJj
YmNiNjQ3ZjIyZDdjZWYuLmNhMzNhNmViODdhMmYxYjkyY2ViNDU0NzU3OWJhZGVjNTM1Y2JlNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAKQEAgLTQ2MSw2ICs0NjEsMjMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
KFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFBhc3NSZWZQdHI8VD4pOwogfTsKIAordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitjbGFzcyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgUHJvcGVy
dHlXcmFwcGVyR2V0dGVyPGNvbnN0IFQmPiB7CitwdWJsaWM6CisgICAgTGVuZ3RoUHJvcGVydHlX
cmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcCwgY29uc3QgVCYgKFJlbmRlclN0eWxlOjoqZ2V0dGVy
KSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCkpCisgICAgICAgIDogUHJv
cGVydHlXcmFwcGVyR2V0dGVyPGNvbnN0IFQmPihwcm9wLCBnZXR0ZXIpCisgICAgICAgICwgbV9z
ZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5
bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CisgICAg
eworICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KlByb3BlcnR5
V3JhcHBlckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3BlcnR5V3JhcHBl
ckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVzcykpOworICAgIH0KKworcHJv
dGVjdGVkOgorICAgIHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFQpOworfTsKIAogY2xh
c3MgUHJvcGVydHlXcmFwcGVyQ2xpcFBhdGggOiBwdWJsaWMgUmVmQ291bnRlZFByb3BlcnR5V3Jh
cHBlcjxDbGlwUGF0aE9wZXJhdGlvbj4gewogcHVibGljOgpAQCAtNTE5LDYgKzUzNiw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYp
OwogfTsKIAorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogY2xhc3MgUHJvcGVy
dHlXcmFwcGVyQWNjZWxlcmF0ZWRPcGFjaXR5IDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxmbG9h
dD4gewogcHVibGljOgpAQCAtODI3LDE3ICs4NDUsMTcgQEAgcHJvdGVjdGVkOgogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIgOiBwdWJs
aWMgRmlsbExheWVyUHJvcGVydHlXcmFwcGVyR2V0dGVyPFQ+IHsKK2NsYXNzIEZpbGxMYXllclBy
b3BlcnR5V3JhcHBlciA6IHB1YmxpYyBGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8Y29u
c3QgVCY+IHsKIHB1YmxpYzoKLSAgICBGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXIoVCAoRmlsbExh
eWVyOjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChGaWxsTGF5ZXI6OipzZXR0ZXIpKFQpKQotICAg
ICAgICA6IEZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxUPihnZXR0ZXIpCisgICAgRmls
bExheWVyUHJvcGVydHlXcmFwcGVyKGNvbnN0IFQmIChGaWxsTGF5ZXI6OipnZXR0ZXIpKCkgY29u
c3QsIHZvaWQgKEZpbGxMYXllcjo6KnNldHRlcikoVCkpCisgICAgICAgIDogRmlsbExheWVyUHJv
cGVydHlXcmFwcGVyR2V0dGVyPGNvbnN0IFQmPihnZXR0ZXIpCiAgICAgICAgICwgbV9zZXR0ZXIo
c2V0dGVyKQogICAgIHsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5p
bWF0aW9uQmFzZSogYW5pbSwgRmlsbExheWVyKiBkc3QsIGNvbnN0IEZpbGxMYXllciogYSwgY29u
c3QgRmlsbExheWVyKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgewotICAgICAgICAo
ZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KkZpbGxMYXllclByb3BlcnR5V3Jh
cHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCksIChiLT4qRmlsbExheWVyUHJvcGVydHlXcmFwcGVy
R2V0dGVyPFQ+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsKKyAgICAgICAgKGRzdC0+Km1fc2V0
dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8
Y29uc3QgVCY+OjptX2dldHRlcikoKSwgKGItPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0
ZXI8Y29uc3QgVCY+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CiAKIHByb3RlY3Rl
ZDoKQEAgLTg4NCw3ICs5MDIsNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotCiBjbGFzcyBGaWxs
TGF5ZXJzUHJvcGVydHlXcmFwcGVyIDogcHVibGljIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJh
c2UgewogcHVibGljOgogICAgIHR5cGVkZWYgY29uc3QgRmlsbExheWVyKiAoUmVuZGVyU3R5bGU6
OipMYXllcnNHZXR0ZXIpKCkgY29uc3Q7CkBAIC0xMTI2LDE4ICsxMTQzLDE4IEBAIENTU1Byb3Bl
cnR5QW5pbWF0aW9uV3JhcHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkK
IHsKICAgICAvLyBidWlsZCB0aGUgbGlzdCBvZiBwcm9wZXJ0eSB3cmFwcGVycyB0byBkbyB0aGUg
Y29tcGFyaXNvbnMgYW5kIGJsZW5kcwogICAgIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2Uq
IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnR5V3JhcHBlcnNbXSA9IHsKLSAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TGVmdCwgJlJlbmRlclN0eWxlOjpsZWZ0
LCAmUmVuZGVyU3R5bGU6OnNldExlZnQpLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExl
bmd0aD4oQ1NTUHJvcGVydHlSaWdodCwgJlJlbmRlclN0eWxlOjpyaWdodCwgJlJlbmRlclN0eWxl
OjpzZXRSaWdodCksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9w
ZXJ0eVRvcCwgJlJlbmRlclN0eWxlOjp0b3AsICZSZW5kZXJTdHlsZTo6c2V0VG9wKSwKLSAgICAg
ICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5Qm90dG9tLCAmUmVuZGVy
U3R5bGU6OmJvdHRvbSwgJlJlbmRlclN0eWxlOjpzZXRCb3R0b20pLAorICAgICAgICBuZXcgTGVu
Z3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlMZWZ0LCAmUmVuZGVyU3R5bGU6
OmxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TGVmdCksCisgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0
eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVJpZ2h0LCAmUmVuZGVyU3R5bGU6OnJpZ2h0LCAm
UmVuZGVyU3R5bGU6OnNldFJpZ2h0KSwKKyAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5V3JhcHBl
cjxMZW5ndGg+KENTU1Byb3BlcnR5VG9wLCAmUmVuZGVyU3R5bGU6OnRvcCwgJlJlbmRlclN0eWxl
OjpzZXRUb3ApLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NT
UHJvcGVydHlCb3R0b20sICZSZW5kZXJTdHlsZTo6Ym90dG9tLCAmUmVuZGVyU3R5bGU6OnNldEJv
dHRvbSksCiAKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5
V2lkdGgsICZSZW5kZXJTdHlsZTo6d2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0V2lkdGgpLAotICAg
ICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNaW5XaWR0aCwgJlJl
bmRlclN0eWxlOjptaW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRNaW5XaWR0aCksCi0gICAgICAg
IG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1heFdpZHRoLCAmUmVuZGVy
U3R5bGU6Om1heFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE1heFdpZHRoKSwKKyAgICAgICAgbmV3
IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2lkdGgsICZSZW5kZXJT
dHlsZTo6d2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0V2lkdGgpLAorICAgICAgICBuZXcgTGVuZ3Ro
UHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNaW5XaWR0aCwgJlJlbmRlclN0eWxl
OjptaW5XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRNaW5XaWR0aCksCisgICAgICAgIG5ldyBMZW5n
dGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1heFdpZHRoLCAmUmVuZGVyU3R5
bGU6Om1heFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE1heFdpZHRoKSwKIAotICAgICAgICBuZXcg
UHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlIZWlnaHQsICZSZW5kZXJTdHlsZTo6
aGVpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldEhlaWdodCksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdy
YXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjptaW5IZWln
aHQsICZSZW5kZXJTdHlsZTo6c2V0TWluSGVpZ2h0KSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3Jh
cHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCAmUmVuZGVyU3R5bGU6Om1heEhlaWdo
dCwgJlJlbmRlclN0eWxlOjpzZXRNYXhIZWlnaHQpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVy
dHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlIZWlnaHQsICZSZW5kZXJTdHlsZTo6aGVpZ2h0
LCAmUmVuZGVyU3R5bGU6OnNldEhlaWdodCksCisgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdy
YXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1pbkhlaWdodCwgJlJlbmRlclN0eWxlOjptaW5IZWln
aHQsICZSZW5kZXJTdHlsZTo6c2V0TWluSGVpZ2h0KSwKKyAgICAgICAgbmV3IExlbmd0aFByb3Bl
cnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCAmUmVuZGVyU3R5bGU6Om1h
eEhlaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXhIZWlnaHQpLAogCiAgICAgICAgIG5ldyBQcm9w
ZXJ0eVdyYXBwZXJGbGV4KCksCiAKQEAgLTExNDUsMTQgKzExNjIsMTQgQEAgQ1NTUHJvcGVydHlB
bmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAg
ICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPHVuc2lnbmVkPihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJSaWdodFdpZHRoKSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZD4o
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwg
JlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdy
YXBwZXI8dW5zaWduZWQ+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHls
ZTo6Ym9yZGVyQm90dG9tV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tV2lkdGgp
LAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0LCAmUmVuZGVyU3R5bGU6Om1hcmdpbkxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TWFyZ2luTGVm
dCksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCAmUmVuZGVyU3R5bGU6Om1hcmdpblJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldE1hcmdp
blJpZ2h0KSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5
TWFyZ2luVG9wLCAmUmVuZGVyU3R5bGU6Om1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjpzZXRNYXJn
aW5Ub3ApLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sICZSZW5kZXJTdHlsZTo6bWFyZ2luQm90dG9tLCAmUmVuZGVyU3R5bGU6OnNl
dE1hcmdpbkJvdHRvbSksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0LCAmUmVuZGVyU3R5bGU6OnBhZGRpbmdMZWZ0LCAmUmVuZGVyU3R5
bGU6OnNldFBhZGRpbmdMZWZ0KSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+
KENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCAmUmVuZGVyU3R5bGU6OnBhZGRpbmdSaWdodCwgJlJl
bmRlclN0eWxlOjpzZXRQYWRkaW5nUmlnaHQpLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVy
PExlbmd0aD4oQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCAmUmVuZGVyU3R5bGU6OnBhZGRpbmdUb3As
ICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ1RvcCksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBw
ZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sICZSZW5kZXJTdHlsZTo6cGFkZGlu
Z0JvdHRvbSwgJlJlbmRlclN0eWxlOjpzZXRQYWRkaW5nQm90dG9tKSwKKyAgICAgICAgbmV3IExl
bmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgJlJlbmRl
clN0eWxlOjptYXJnaW5MZWZ0LCAmUmVuZGVyU3R5bGU6OnNldE1hcmdpbkxlZnQpLAorICAgICAg
ICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlNYXJnaW5SaWdo
dCwgJlJlbmRlclN0eWxlOjptYXJnaW5SaWdodCwgJlJlbmRlclN0eWxlOjpzZXRNYXJnaW5SaWdo
dCksCisgICAgICAgIG5ldyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0
eU1hcmdpblRvcCwgJlJlbmRlclN0eWxlOjptYXJnaW5Ub3AsICZSZW5kZXJTdHlsZTo6c2V0TWFy
Z2luVG9wKSwKKyAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCAmUmVuZGVyU3R5bGU6Om1hcmdpbkJvdHRvbSwgJlJlbmRlclN0
eWxlOjpzZXRNYXJnaW5Cb3R0b20pLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVy
PExlbmd0aD4oQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgJlJlbmRlclN0eWxlOjpwYWRkaW5nTGVm
dCwgJlJlbmRlclN0eWxlOjpzZXRQYWRkaW5nTGVmdCksCisgICAgICAgIG5ldyBMZW5ndGhQcm9w
ZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgJlJlbmRlclN0eWxl
OjpwYWRkaW5nUmlnaHQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ1JpZ2h0KSwKKyAgICAgICAg
bmV3IExlbmd0aFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5UGFkZGluZ1RvcCwg
JlJlbmRlclN0eWxlOjpwYWRkaW5nVG9wLCAmUmVuZGVyU3R5bGU6OnNldFBhZGRpbmdUb3ApLAor
ICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlQYWRk
aW5nQm90dG9tLCAmUmVuZGVyU3R5bGU6OnBhZGRpbmdCb3R0b20sICZSZW5kZXJTdHlsZTo6c2V0
UGFkZGluZ0JvdHRvbSksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXJWaXNpdGVkQWZmZWN0
ZWRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yLCAmUmVuZGVyU3R5bGU6OmNvbG9yLCAmUmVuZGVyU3R5
bGU6OnNldENvbG9yLCAmUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IsICZSZW5kZXJTdHls
ZTo6c2V0VmlzaXRlZExpbmtDb2xvciksCiAKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlclZp
c2l0ZWRBZmZlY3RlZENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAmUmVuZGVyU3R5
bGU6OmJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRCYWNrZ3JvdW5kQ29sb3IsICZS
ZW5kZXJTdHlsZTo6dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0
VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpLApAQCAtMTE2Miw5ICsxMTc5LDkgQEAgQ1NTUHJv
cGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAo
KQogICAgICAgICBuZXcgU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSwgJlJlbmRlclN0eWxlOjptYXNrSW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TWFz
a0ltYWdlKSwKIAogICAgICAgICBuZXcgU3R5bGVJbWFnZVByb3BlcnR5V3JhcHBlcihDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OmJvcmRlckltYWdlU291cmNlLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlU291cmNlKSwKLSAgICAgICAgbmV3IFByb3BlcnR5
V3JhcHBlcjxMZW5ndGhCb3g+KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwgJlJlbmRlclN0
eWxlOjpib3JkZXJJbWFnZVNsaWNlcywgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJJbWFnZVNsaWNl
cyksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoQm94PihDU1NQcm9wZXJ0eUJv
cmRlckltYWdlV2lkdGgsICZSZW5kZXJTdHlsZTo6Ym9yZGVySW1hZ2VXaWR0aCwgJlJlbmRlclN0
eWxlOjpzZXRCb3JkZXJJbWFnZVdpZHRoKSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxM
ZW5ndGhCb3g+KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsICZSZW5kZXJTdHlsZTo6Ym9y
ZGVySW1hZ2VPdXRzZXQsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVySW1hZ2VPdXRzZXQpLAorICAg
ICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aEJveD4oQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZVNsaWNlLCAmUmVuZGVyU3R5bGU6OmJvcmRlckltYWdlU2xpY2VzLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlckltYWdlU2xpY2VzKSwKKyAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5V3Jh
cHBlcjxMZW5ndGhCb3g+KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VXaWR0aCwgJlJlbmRlclN0eWxl
Ojpib3JkZXJJbWFnZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckltYWdlV2lkdGgpLAor
ICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aEJveD4oQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZU91dHNldCwgJlJlbmRlclN0eWxlOjpib3JkZXJJbWFnZU91dHNldCwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJJbWFnZU91dHNldCksCiAKICAgICAgICAgbmV3IFN0eWxlSW1hZ2VQ
cm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2UsICZSZW5k
ZXJTdHlsZTo6bWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OnNldE1hc2tCb3hJbWFn
ZVNvdXJjZSksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8Y29uc3QgTmluZVBpZWNlSW1h
Z2UmPihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgJlJlbmRlclN0eWxlOjptYXNrQm94
SW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TWFza0JveEltYWdlKSwKQEAgLTExOTcsMjcgKzEyMTQs
MjcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlv
bldyYXBwZXJNYXAoKQogICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPGludD4oQ1NTUHJvcGVy
dHlaSW5kZXgsICZSZW5kZXJTdHlsZTo6ekluZGV4LCAmUmVuZGVyU3R5bGU6OnNldFpJbmRleCks
CiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8c2hvcnQ+KENTU1Byb3BlcnR5T3JwaGFucywg
JlJlbmRlclN0eWxlOjpvcnBoYW5zLCAmUmVuZGVyU3R5bGU6OnNldE9ycGhhbnMpLAogICAgICAg
ICBuZXcgUHJvcGVydHlXcmFwcGVyPHNob3J0PihDU1NQcm9wZXJ0eVdpZG93cywgJlJlbmRlclN0
eWxlOjp3aWRvd3MsICZSZW5kZXJTdHlsZTo6c2V0V2lkb3dzKSwKLSAgICAgICAgbmV3IFByb3Bl
cnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5TGluZUhlaWdodCwgJlJlbmRlclN0eWxlOjpz
cGVjaWZpZWRMaW5lSGVpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldExpbmVIZWlnaHQpLAorICAgICAg
ICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
LCAmUmVuZGVyU3R5bGU6OnNwZWNpZmllZExpbmVIZWlnaHQsICZSZW5kZXJTdHlsZTo6c2V0TGlu
ZUhlaWdodCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8aW50PihDU1NQcm9wZXJ0eU91
dGxpbmVPZmZzZXQsICZSZW5kZXJTdHlsZTo6b3V0bGluZU9mZnNldCwgJlJlbmRlclN0eWxlOjpz
ZXRPdXRsaW5lT2Zmc2V0KSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjx1bnNpZ25lZCBz
aG9ydD4oQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRo
LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdy
YXBwZXI8aW50PihDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6bGV0dGVy
U3BhY2luZywgJlJlbmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nKSwKICAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjxpbnQ+KENTU1Byb3BlcnR5V29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6
d29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcpLAotICAgICAgICBuZXcg
UHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlUZXh0SW5kZW50LCAmUmVuZGVyU3R5
bGU6OnRleHRJbmRlbnQsICZSZW5kZXJTdHlsZTo6c2V0VGV4dEluZGVudCksCisgICAgICAgIG5l
dyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVRleHRJbmRlbnQsICZS
ZW5kZXJTdHlsZTo6dGV4dEluZGVudCwgJlJlbmRlclN0eWxlOjpzZXRUZXh0SW5kZW50KSwKIAog
ICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPGZsb2F0PihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlLCAmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNw
ZWN0aXZlKSwKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2lu
WCwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblgpLAotICAgICAgICBuZXcgUHJv
cGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblks
ICZSZW5kZXJTdHlsZTo6cGVyc3BlY3RpdmVPcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNw
ZWN0aXZlT3JpZ2luWSksCi0gICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3Jp
Z2luWCwgJlJlbmRlclN0eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5YKSwKLSAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwg
JlJlbmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9y
bU9yaWdpblkpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6cGVyc3BlY3Rp
dmVPcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNwZWN0aXZlT3JpZ2luWCksCisgICAgICAg
IG5ldyBMZW5ndGhQcm9wZXJ0eVdyYXBwZXI8TGVuZ3RoPihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpwZXJzcGVjdGl2ZU9yaWdpblksICZSZW5kZXJT
dHlsZTo6c2V0UGVyc3BlY3RpdmVPcmlnaW5ZKSwKKyAgICAgICAgbmV3IExlbmd0aFByb3BlcnR5
V3JhcHBlcjxMZW5ndGg+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgJlJlbmRl
clN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5YLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdp
blgpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aD4oQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblks
ICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWSksCiAgICAgICAgIG5ldyBQcm9wZXJ0
eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRl
clN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9yaWdp
blopLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BMZWZ0UmFkaXVzLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcExlZnRSYWRpdXMpLAotICAgICAgICBuZXcgUHJvcGVy
dHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZS
ZW5kZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
VG9wUmlnaHRSYWRpdXMpLAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMp
LAotICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9tUmlnaHRSYWRp
dXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpLAorICAgICAgICBu
ZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyVG9w
TGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3JkZXJUb3BMZWZ0UmFkaXVzLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlclRvcExlZnRSYWRpdXMpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlX
cmFwcGVyPExlbmd0aFNpemU+KENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5k
ZXJTdHlsZTo6Ym9yZGVyVG9wUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9w
UmlnaHRSYWRpdXMpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNp
emU+KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgJlJlbmRlclN0eWxlOjpib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMpLAorICAgICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aFNpemU+KENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6Ym9yZGVyQm90dG9t
UmlnaHRSYWRpdXMsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpLAog
ICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPEVWaXNpYmlsaXR5PihDU1NQcm9wZXJ0eVZpc2li
aWxpdHksICZSZW5kZXJTdHlsZTo6dmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmls
aXR5KSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxmbG9hdD4oQ1NTUHJvcGVydHlab29t
LCAmUmVuZGVyU3R5bGU6Onpvb20sICZSZW5kZXJTdHlsZTo6c2V0Wm9vbVdpdGhvdXRSZXR1cm5W
YWx1ZSksCiAKLSAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxMZW5ndGhCb3g+KENTU1Byb3Bl
cnR5Q2xpcCwgJlJlbmRlclN0eWxlOjpjbGlwLCAmUmVuZGVyU3R5bGU6OnNldENsaXApLAorICAg
ICAgICBuZXcgTGVuZ3RoUHJvcGVydHlXcmFwcGVyPExlbmd0aEJveD4oQ1NTUHJvcGVydHlDbGlw
LCAmUmVuZGVyU3R5bGU6OmNsaXAsICZSZW5kZXJTdHlsZTo6c2V0Q2xpcCksCiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXJBY2Nl
bGVyYXRlZE9wYWNpdHkoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nh
bGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFs
dWUuaAppbmRleCA3MjU0M2ZmNjBiZGVkMDMwZGU2MDZkZWJhZjFlMjQ1ZmZkZDhmOGIyLi4wYWE3
ZTIwNjJjNzhjNWIzZGJiNTcxNmVjNjExNWM3OWRlN2M0NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToK
IGNsYXNzIENhbGNFeHByZXNzaW9uTGVuZ3RoIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2FsY0V4cHJlc3Npb25MZW5ndGgoTGVuZ3RoIGxlbmd0
aCkKLSAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCisgICAgICAgIDogbV9sZW5ndGgoc3RkOjpt
b3ZlKGxlbmd0aCkpCiAgICAgewogICAgICAgICBtX3R5cGUgPSBDYWxjRXhwcmVzc2lvbk5vZGVM
ZW5ndGg7CiAgICAgfQpAQCAtMTg4LDggKzE4OCw4IEBAIHByaXZhdGU6CiBjbGFzcyBDYWxjRXhw
cmVzc2lvbkJsZW5kTGVuZ3RoIDogcHVibGljIENhbGNFeHByZXNzaW9uTm9kZSB7CiBwdWJsaWM6
CiAgICAgQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aChMZW5ndGggZnJvbSwgTGVuZ3RoIHRvLCBm
bG9hdCBwcm9ncmVzcykKLSAgICAgICAgOiBtX2Zyb20oZnJvbSkKLSAgICAgICAgLCBtX3RvKHRv
KQorICAgICAgICA6IG1fZnJvbShzdGQ6Om1vdmUoZnJvbSkpCisgICAgICAgICwgbV90byhzdGQ6
Om1vdmUodG8pKQogICAgICAgICAsIG1fcHJvZ3Jlc3MocHJvZ3Jlc3MpCiAgICAgewogICAgICAg
ICBtX3R5cGUgPSBDYWxjRXhwcmVzc2lvbk5vZGVCbGVuZExlbmd0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCmluZGV4IDc4NGUyM2MyMGJkMzUyYjZlMmZmOWRmY2FhNmE0NWNmMTA5OTAx
NWEuLjE5YmUyYjgxNTQ5MTAzODIyYTY1Njk1YWRhMjRiYzBhYmQ2ZjczMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMTc3LDE2ICsxNzcsMjggQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKICAgICAgICAgbV9tYXAucmVtb3ZlKGlu
ZGV4KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHJlbW92ZShIYXNoTWFwPGludCwgUmVmUHRy
PENhbGN1bGF0aW9uVmFsdWU+Pjo6aXRlcmF0b3IgaXQpCisgICAgeworICAgICAgICBBU1NFUlQo
aXQgIT0gbV9tYXAuZW5kKCkpOworICAgICAgICBtX21hcC5yZW1vdmUoaXQpOworICAgIH0KKwog
ICAgIFBhc3NSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gZ2V0KGludCBpbmRleCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX21hcC5jb250YWlucyhpbmRleCkpOwogICAgICAgICByZXR1cm4gbV9t
YXAuZ2V0KGluZGV4KTsKICAgICB9Ci0gICAgCisKKyAgICBIYXNoTWFwPGludCwgUmVmUHRyPENh
bGN1bGF0aW9uVmFsdWU+Pjo6aXRlcmF0b3IgZmluZChpbnQgaW5kZXgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9tYXAuY29udGFpbnMoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmZp
bmQoaW5kZXgpOworICAgIH0KKwogcHJpdmF0ZTogICAgICAgIAogICAgIGludCBtX2luZGV4Owot
ICAgIEhhc2hNYXA8aW50LCBSZWZQdHI8Q2FsY3VsYXRpb25WYWx1ZT4gPiBtX21hcDsKKyAgICBI
YXNoTWFwPGludCwgUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+PiBtX21hcDsKIH07CiAgICAgCiBz
dGF0aWMgQ2FsY3VsYXRpb25WYWx1ZUhhbmRsZU1hcCYgY2FsY0hhbmRsZXMoKQpAQCAtMjMwLDEx
ICsyNDIsMTAgQEAgdm9pZCBMZW5ndGg6OmluY3JlbWVudENhbGN1bGF0ZWRSZWYoKSBjb25zdAog
dm9pZCBMZW5ndGg6OmRlY3JlbWVudENhbGN1bGF0ZWRSZWYoKSBjb25zdAogewogICAgIEFTU0VS
VChpc0NhbGN1bGF0ZWQoKSk7Ci0gICAgUmVmUHRyPENhbGN1bGF0aW9uVmFsdWU+IGNhbGNMZW5n
dGggPSBjYWxjdWxhdGlvblZhbHVlKCk7Ci0gICAgaWYgKGNhbGNMZW5ndGgtPmhhc09uZVJlZigp
KQotICAgICAgICBjYWxjSGFuZGxlcygpLnJlbW92ZShjYWxjdWxhdGlvbkhhbmRsZSgpKTsKLSAg
ICBjYWxjTGVuZ3RoLT5kZXJlZigpOwotfSAgICAKKyAgICBhdXRvIGl0ID0gY2FsY0hhbmRsZXMo
KS5maW5kKGNhbGN1bGF0aW9uSGFuZGxlKCkpOworICAgIGlmIChpdC0+dmFsdWUtPmhhc09uZVJl
ZigpKQorICAgICAgICBjYWxjSGFuZGxlcygpLnJlbW92ZShpdCk7Cit9CiAKIGZsb2F0IExlbmd0
aDo6bm9uTmFuQ2FsY3VsYXRlZFZhbHVlKGludCBtYXhWYWx1ZSkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmgKaW5kZXggZjQwNTE4MWNkMWRmYjU0YjliYjIxZTY5YjA1ZjM3MDM4ODBi
NGQ5ZS4uNzFlNzlmMDY2YzJlYmU2M2ZiZTRkZjAzMWJiYTJlZDk4MjFhMWUyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTg5LDEzICs4OSwyNSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBpbml0RnJvbUxlbmd0aChsZW5ndGgpOwogICAgIH0KLSAgICAKKworICAgIExlbmd0aChM
ZW5ndGgmJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1vdmVGcm9tTGVuZ3RoKHN0ZDo6bW92ZShv
dGhlcikpOworICAgIH0KKwogICAgIExlbmd0aCYgb3BlcmF0b3I9KGNvbnN0IExlbmd0aCYgbGVu
Z3RoKQogICAgIHsKICAgICAgICAgaW5pdEZyb21MZW5ndGgobGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KLSAgICAKKworICAgIExlbmd0aCYgb3BlcmF0b3I9KExlbmd0aCYm
IG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKQorICAgICAgICAgICAg
bW92ZUZyb21MZW5ndGgoc3RkOjptb3ZlKG90aGVyKSk7CisgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICB9CisKICAgICB+TGVuZ3RoKCkKICAgICB7CiAgICAgICAgIGlmIChpc0NhbGN1bGF0ZWQo
KSkKQEAgLTI4Nyw2ICsyOTksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGluY3JlbWVudENh
bGN1bGF0ZWRSZWYoKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmVGcm9tTGVuZ3RoKExlbmd0aCYm
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0aGlzICE9ICZsZW5ndGgpOworICAgICAg
ICBtZW1jcHkodGhpcywgJmxlbmd0aCwgc2l6ZW9mKExlbmd0aCkpOworICAgICAgICBsZW5ndGgu
bV90eXBlID0gQXV0bzsKKyAgICB9CisKICAgICBMZW5ndGggYmxlbmRNaXhlZFR5cGVzKGNvbnN0
IExlbmd0aCYgZnJvbSwgZG91YmxlIHByb2dyZXNzKSBjb25zdDsKIAogICAgIGludCBjYWxjdWxh
dGlvbkhhbmRsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGhCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAppbmRl
eCBhNTIwNWYyNWNlZjNkMDM4MzI0N2FmNzJhZjcxMjFhNDgxMzM5YzcwLi4yNDA2OTAzZDE5NTk1
ZmU3ZWUwZTZiYmZmNjkzNzE4NjFmZGYyMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGhCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aEJveC5jcHAKQEAgLTMzLDE3ICszMywxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxl
bmd0aCBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25z
dAorY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKSBjb25zdAogewogICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsKIH0KIAotTGVuZ3RoIExlbmd0aEJveDo6bG9naWNh
bFJpZ2h0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAorY29uc3QgTGVuZ3RoJiBMZW5n
dGhCb3g6OmxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV9yaWdodCA6
IG1fYm90dG9tOwogfQogCi1MZW5ndGggTGVuZ3RoQm94OjpiZWZvcmUoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpIGNvbnN0Citjb25zdCBMZW5ndGgmIExlbmd0aEJveDo6YmVmb3JlKFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAg
ICBjYXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CkBAIC01OSw3ICs1OSw3IEBAIExlbmd0aCBM
ZW5ndGhCb3g6OmJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKICAgICByZXR1
cm4gbV90b3A7CiB9CiAKLUxlbmd0aCBMZW5ndGhCb3g6OmFmdGVyKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKSBjb25zdAorY29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmFmdGVyKFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlKSBjb25zdAogewogICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAgICBj
YXNlIFRvcFRvQm90dG9tV3JpdGluZ01vZGU6CkBAIC03NSwxNCArNzUsMTQgQEAgTGVuZ3RoIExl
bmd0aEJveDo6YWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0CiAgICAgcmV0dXJu
IG1fYm90dG9tOwogfQogCi1MZW5ndGggTGVuZ3RoQm94OjpzdGFydChXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0Citjb25zdCBMZW5ndGgmIExl
bmd0aEJveDo6c3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uKSBjb25zdAogewogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5n
TW9kZSkpCiAgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikg
PyBtX2xlZnQgOiBtX3JpZ2h0OwogICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRp
cmVjdGlvbikgPyBtX3RvcCA6IG1fYm90dG9tOwogfQogCi1MZW5ndGggTGVuZ3RoQm94OjplbmQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAor
Y29uc3QgTGVuZ3RoJiBMZW5ndGhCb3g6OmVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKHdyaXRpbmdNb2RlKSkKICAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oZGlyZWN0aW9uKSA/IG1fcmlnaHQgOiBtX2xlZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aEJveC5oCmluZGV4IGQ1ZGZjMTNiZGUxZTk2YmVlMWU2YjFjNjk1OWY2NzllNTI5YzcxNjQuLjlh
ZGRhYmQyMzI2YzZkNTI5ZDM1YmQzZTc3NjFiOWFkYjZlNDk5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aEJveC5oCkBAIC01MiwxMCArNTIsMTAgQEAgc3RydWN0IExlbmd0aEJveCB7CiAg
ICAgfQogCiAgICAgTGVuZ3RoQm94KExlbmd0aCB0LCBMZW5ndGggciwgTGVuZ3RoIGIsIExlbmd0
aCBsKQotICAgICAgICA6IG1fbGVmdChsKQotICAgICAgICAsIG1fcmlnaHQocikKLSAgICAgICAg
LCBtX3RvcCh0KQotICAgICAgICAsIG1fYm90dG9tKGIpCisgICAgICAgIDogbV9sZWZ0KHN0ZDo6
bW92ZShsKSkKKyAgICAgICAgLCBtX3JpZ2h0KHN0ZDo6bW92ZShyKSkKKyAgICAgICAgLCBtX3Rv
cChzdGQ6Om1vdmUodCkpCisgICAgICAgICwgbV9ib3R0b20oc3RkOjptb3ZlKGIpKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC02NywxOCArNjcsMTggQEAgc3RydWN0IExlbmd0aEJveCB7CiAgICAg
ewogICAgIH0KIAotICAgIExlbmd0aCBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9Ci0g
ICAgTGVuZ3RoIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQotICAgIExlbmd0aCB0
b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQotICAgIExlbmd0aCBib3R0b20oKSBjb25zdCB7
IHJldHVybiBtX2JvdHRvbTsgfQorICAgIGNvbnN0IExlbmd0aCYgbGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVmdDsgfQorICAgIGNvbnN0IExlbmd0aCYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3JpZ2h0OyB9CisgICAgY29uc3QgTGVuZ3RoJiB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsg
fQorICAgIGNvbnN0IExlbmd0aCYgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0K
IAotICAgIExlbmd0aCBsb2dpY2FsTGVmdChXcml0aW5nTW9kZSkgY29uc3Q7Ci0gICAgTGVuZ3Ro
IGxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsb2dp
Y2FsTGVmdChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsUmln
aHQoV3JpdGluZ01vZGUpIGNvbnN0OwogCi0gICAgTGVuZ3RoIGJlZm9yZShXcml0aW5nTW9kZSkg
Y29uc3Q7Ci0gICAgTGVuZ3RoIGFmdGVyKFdyaXRpbmdNb2RlKSBjb25zdDsKLSAgICBMZW5ndGgg
c3RhcnQoV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OwotICAgIExlbmd0aCBlbmQo
V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24pIGNvbnN0OworICAgIGNvbnN0IExlbmd0aCYgYmVm
b3JlKFdyaXRpbmdNb2RlKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIGFmdGVyKFdyaXRpbmdN
b2RlKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHN0YXJ0KFdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uKSBjb25zdDsKKyAgICBjb25zdCBMZW5ndGgmIGVuZChXcml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoQm94JiBv
KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRleCBkYmNj
ODNkMzE3NTkzZTlkOTYyNjM5ODdkZDJjMTE4MzAyYzI4ODYzLi44MzEzNmFiOWQ1MDg2NWJlNTA0
NzEyZWEyYjI4MDZiNGYzMGUwMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6ZS5o
CkBAIC0zMiw4ICszMiw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgTGVuZ3RoU2l6ZShM
ZW5ndGggd2lkdGgsIExlbmd0aCBoZWlnaHQpCi0gICAgICAgIDogbV93aWR0aCh3aWR0aCkKLSAg
ICAgICAgLCBtX2hlaWdodChoZWlnaHQpCisgICAgICAgIDogbV93aWR0aChzdGQ6Om1vdmUod2lk
dGgpKQorICAgICAgICAsIG1faGVpZ2h0KHN0ZDo6bW92ZShoZWlnaHQpKQogICAgIHsKICAgICB9
CiAKQEAgLTQyLDExICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dpZHRoID09
IG8ubV93aWR0aCAmJiBtX2hlaWdodCA9PSBvLm1faGVpZ2h0OwogICAgIH0KIAotICAgIHZvaWQg
c2V0V2lkdGgoTGVuZ3RoIHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQotICAgIExlbmd0aCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKExlbmd0
aCB3aWR0aCkgeyBtX3dpZHRoID0gc3RkOjptb3ZlKHdpZHRoKTsgfQorICAgIGNvbnN0IExlbmd0
aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAKLSAgICB2b2lkIHNldEhlaWdo
dChMZW5ndGggaGVpZ2h0KSB7IG1faGVpZ2h0ID0gaGVpZ2h0OyB9Ci0gICAgTGVuZ3RoIGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CisgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3Ro
IGhlaWdodCkgeyBtX2hlaWdodCA9IHN0ZDo6bW92ZShoZWlnaHQpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogCiBwcml2YXRlOgogICAg
IExlbmd0aCBtX3dpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNWY2MWY4ZDY1YjMxMjE1
NGQyODNhY2IwM2Q4NTQ4ODUwOTc3NjFmYi4uYzBhZGRkNDJiNjNmYmRmMDhhOTZlODRkYjJmZjI1
OWY5NzczZGMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCkBAIC0zMDcsMTAgKzMwNywxMCBAQCBj
bGFzcyBCbHVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Qmx1ckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKExl
bmd0aCBzdGREZXZpYXRpb24sIE9wZXJhdGlvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJhdGlvbihzdGREZXZpYXRpb24sIHR5cGUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZDo6
bW92ZShzdGREZXZpYXRpb24pLCB0eXBlKSk7CiAgICAgfQogCi0gICAgTGVuZ3RoIHN0ZERldmlh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RkRGV2aWF0aW9uOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvbjsgfQogCiAgICAg
dmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTMy
OCw3ICszMjgsNyBAQCBwcml2YXRlOgogCiAgICAgQmx1ckZpbHRlck9wZXJhdGlvbihMZW5ndGgg
c3RkRGV2aWF0aW9uLCBPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgICAgIDogRmlsdGVyT3BlcmF0
aW9uKHR5cGUpCi0gICAgICAgICwgbV9zdGREZXZpYXRpb24oc3RkRGV2aWF0aW9uKQorICAgICAg
ICAsIG1fc3RkRGV2aWF0aW9uKHN0ZDo6bW92ZShzdGREZXZpYXRpb24pKQogICAgIHsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKaW5kZXgg
ZWMwMjdmZTkxMWU0MDNlMGZiODdjMmNhZWU1NDIwYWMyYWQxMTc2ZC4uMjE1M2NmMzc1MmUxMTRk
OGU3ZDU2MGRiYTU1YWYzMjUxYTgyYTVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVzLmgKQEAgLTY4LDI2ICs2OCwyNiBAQCBjbGFzcyBCYXNpY1NoYXBl
UmVjdGFuZ2xlIDogcHVibGljIEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJhc2ljU2hhcGVSZWN0YW5nbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCYXNpY1NoYXBlUmVjdGFuZ2xlKTsgfQogCi0gICAgTGVuZ3RoIHgoKSBjb25zdCB7IHJldHVy
biBtX3g7IH0KLSAgICBMZW5ndGggeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQotICAgIExlbmd0
aCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICBMZW5ndGggaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KLSAgICBMZW5ndGggY29ybmVyUmFkaXVzWCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ybmVyUmFkaXVzWDsgfQotICAgIExlbmd0aCBjb3JuZXJSYWRpdXNZ
KCkgY29uc3QgeyByZXR1cm4gbV9jb3JuZXJSYWRpdXNZOyB9Ci0KLSAgICB2b2lkIHNldFgoTGVu
Z3RoIHgpIHsgbV94ID0geDsgfQotICAgIHZvaWQgc2V0WShMZW5ndGggeSkgeyBtX3kgPSB5OyB9
Ci0gICAgdm9pZCBzZXRXaWR0aChMZW5ndGggd2lkdGgpIHsgbV93aWR0aCA9IHdpZHRoOyB9Ci0g
ICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIGhlaWdodCkgeyBtX2hlaWdodCA9IGhlaWdodDsgfQor
ICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAgIGNvbnN0IExl
bmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGNvbnN0IExlbmd0aCYgd2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIGNvbnN0IExlbmd0aCYgY29ybmVyUmFkaXVz
WCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ybmVyUmFkaXVzWDsgfQorICAgIGNvbnN0IExlbmd0aCYg
Y29ybmVyUmFkaXVzWSgpIGNvbnN0IHsgcmV0dXJuIG1fY29ybmVyUmFkaXVzWTsgfQorCisgICAg
dm9pZCBzZXRYKExlbmd0aCB4KSB7IG1feCA9IHN0ZDo6bW92ZSh4KTsgfQorICAgIHZvaWQgc2V0
WShMZW5ndGggeSkgeyBtX3kgPSBzdGQ6Om1vdmUoeSk7IH0KKyAgICB2b2lkIHNldFdpZHRoKExl
bmd0aCB3aWR0aCkgeyBtX3dpZHRoID0gc3RkOjptb3ZlKHdpZHRoKTsgfQorICAgIHZvaWQgc2V0
SGVpZ2h0KExlbmd0aCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBzdGQ6Om1vdmUoaGVpZ2h0KTsgfQog
ICAgIHZvaWQgc2V0Q29ybmVyUmFkaXVzWChMZW5ndGggcmFkaXVzWCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghcmFkaXVzWC5pc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgbV9jb3JuZXJSYWRpdXNY
ID0gcmFkaXVzWDsKKyAgICAgICAgbV9jb3JuZXJSYWRpdXNYID0gc3RkOjptb3ZlKHJhZGl1c1gp
OwogICAgIH0KICAgICB2b2lkIHNldENvcm5lclJhZGl1c1koTGVuZ3RoIHJhZGl1c1kpCiAgICAg
ewogICAgICAgICBBU1NFUlQoIXJhZGl1c1kuaXNVbmRlZmluZWQoKSk7Ci0gICAgICAgIG1fY29y
bmVyUmFkaXVzWSA9IHJhZGl1c1k7CisgICAgICAgIG1fY29ybmVyUmFkaXVzWSA9IHN0ZDo6bW92
ZShyYWRpdXNZKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3Qg
RmxvYXRSZWN0JikgT1ZFUlJJREU7CkBAIC0xMDksMTMgKzEwOSwxMyBAQCBjbGFzcyBCYXNpY1No
YXBlQ2lyY2xlIDogcHVibGljIEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEJhc2ljU2hhcGVDaXJjbGU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBC
YXNpY1NoYXBlQ2lyY2xlKTsgfQogCi0gICAgTGVuZ3RoIGNlbnRlclgoKSBjb25zdCB7IHJldHVy
biBtX2NlbnRlclg7IH0KLSAgICBMZW5ndGggY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Vu
dGVyWTsgfQotICAgIExlbmd0aCByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1czsgfQor
ICAgIGNvbnN0IExlbmd0aCYgY2VudGVyWCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWDsgfQor
ICAgIGNvbnN0IExlbmd0aCYgY2VudGVyWSgpIGNvbnN0IHsgcmV0dXJuIG1fY2VudGVyWTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KIAot
ICAgIHZvaWQgc2V0Q2VudGVyWChMZW5ndGggY2VudGVyWCkgeyBtX2NlbnRlclggPSBjZW50ZXJY
OyB9Ci0gICAgdm9pZCBzZXRDZW50ZXJZKExlbmd0aCBjZW50ZXJZKSB7IG1fY2VudGVyWSA9IGNl
bnRlclk7IH0KLSAgICB2b2lkIHNldFJhZGl1cyhMZW5ndGggcmFkaXVzKSB7IG1fcmFkaXVzID0g
cmFkaXVzOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKExlbmd0aCBjZW50ZXJYKSB7IG1fY2VudGVy
WCA9IHN0ZDo6bW92ZShjZW50ZXJYKTsgfQorICAgIHZvaWQgc2V0Q2VudGVyWShMZW5ndGggY2Vu
dGVyWSkgeyBtX2NlbnRlclkgPSBzdGQ6Om1vdmUoY2VudGVyWSk7IH0KKyAgICB2b2lkIHNldFJh
ZGl1cyhMZW5ndGggcmFkaXVzKSB7IG1fcmFkaXVzID0gc3RkOjptb3ZlKHJhZGl1cyk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFw
ZSosIGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7CkBAIC0xMzMsMTUgKzEzMywxNSBAQCBjbGFzcyBC
YXNpY1NoYXBlRWxsaXBzZSA6IHB1YmxpYyBCYXNpY1NoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlRWxsaXBzZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEJhc2ljU2hhcGVFbGxpcHNlKTsgfQogCi0gICAgTGVuZ3RoIGNlbnRlclgoKSBjb25z
dCB7IHJldHVybiBtX2NlbnRlclg7IH0KLSAgICBMZW5ndGggY2VudGVyWSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2VudGVyWTsgfQotICAgIExlbmd0aCByYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9y
YWRpdXNYOyB9Ci0gICAgTGVuZ3RoIHJhZGl1c1koKSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1k7
IH0KKyAgICBjb25zdCBMZW5ndGgmIGNlbnRlclgoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclg7
IH0KKyAgICBjb25zdCBMZW5ndGgmIGNlbnRlclkoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlclk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHJhZGl1c1goKSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1g7
IH0KKyAgICBjb25zdCBMZW5ndGgmIHJhZGl1c1koKSBjb25zdCB7IHJldHVybiBtX3JhZGl1c1k7
IH0KIAotICAgIHZvaWQgc2V0Q2VudGVyWChMZW5ndGggY2VudGVyWCkgeyBtX2NlbnRlclggPSBj
ZW50ZXJYOyB9Ci0gICAgdm9pZCBzZXRDZW50ZXJZKExlbmd0aCBjZW50ZXJZKSB7IG1fY2VudGVy
WSA9IGNlbnRlclk7IH0KLSAgICB2b2lkIHNldFJhZGl1c1goTGVuZ3RoIHJhZGl1c1gpIHsgbV9y
YWRpdXNYID0gcmFkaXVzWDsgfQotICAgIHZvaWQgc2V0UmFkaXVzWShMZW5ndGggcmFkaXVzWSkg
eyBtX3JhZGl1c1kgPSByYWRpdXNZOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKExlbmd0aCBjZW50
ZXJYKSB7IG1fY2VudGVyWCA9IHN0ZDo6bW92ZShjZW50ZXJYKTsgfQorICAgIHZvaWQgc2V0Q2Vu
dGVyWShMZW5ndGggY2VudGVyWSkgeyBtX2NlbnRlclkgPSBzdGQ6Om1vdmUoY2VudGVyWSk7IH0K
KyAgICB2b2lkIHNldFJhZGl1c1goTGVuZ3RoIHJhZGl1c1gpIHsgbV9yYWRpdXNYID0gc3RkOjpt
b3ZlKHJhZGl1c1gpOyB9CisgICAgdm9pZCBzZXRSYWRpdXNZKExlbmd0aCByYWRpdXNZKSB7IG1f
cmFkaXVzWSA9IHN0ZDo6bW92ZShyYWRpdXNZKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhdGgo
UGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlKiwgZG91YmxlKSBjb25zdCBPVkVS
UklERTsKQEAgLTE2MSwxMSArMTYxLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2lj
U2hhcGVQb2x5Z29uKTsgfQogCiAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWVzOyB9Ci0gICAgTGVuZ3RoIGdldFhBdCh1bnNpZ25lZCBpKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlcy5hdCgyICogaSk7IH0KLSAgICBMZW5ndGggZ2V0WUF0KHVu
c2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmF0KDIgKiBpICsgMSk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIGdldFhBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlc1sy
ICogaV07IH0KKyAgICBjb25zdCBMZW5ndGgmIGdldFlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlc1syICogaSArIDFdOyB9CiAKICAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRS
dWxlIHdpbmRSdWxlKSB7IG1fd2luZFJ1bGUgPSB3aW5kUnVsZTsgfQotICAgIHZvaWQgYXBwZW5k
UG9pbnQoTGVuZ3RoIHgsIExlbmd0aCB5KSB7IG1fdmFsdWVzLmFwcGVuZCh4KTsgbV92YWx1ZXMu
YXBwZW5kKHkpOyB9CisgICAgdm9pZCBhcHBlbmRQb2ludChMZW5ndGggeCwgTGVuZ3RoIHkpIHsg
bV92YWx1ZXMuYXBwZW5kKHN0ZDo6bW92ZSh4KSk7IG1fdmFsdWVzLmFwcGVuZChzdGQ6Om1vdmUo
eSkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0Jikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0
IEJhc2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTg2LDI2ICsxODYsMjYg
QEAgY2xhc3MgQmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlIDogcHVibGljIEJhc2ljU2hhcGUgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZSk7
IH0KIAotICAgIExlbmd0aCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3RvcDsgfQotICAgIExlbmd0
aCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KLSAgICBMZW5ndGggYm90dG9tKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0KLSAgICBMZW5ndGggbGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVmdDsgfQotICAgIExlbmd0aCBjb3JuZXJSYWRpdXNYKCkgY29uc3QgeyByZXR1cm4g
bV9jb3JuZXJSYWRpdXNYOyB9Ci0gICAgTGVuZ3RoIGNvcm5lclJhZGl1c1koKSBjb25zdCB7IHJl
dHVybiBtX2Nvcm5lclJhZGl1c1k7IH0KLQotICAgIHZvaWQgc2V0VG9wKExlbmd0aCB0b3ApIHsg
bV90b3AgPSB0b3A7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCByaWdodCkgeyBtX3JpZ2h0
ID0gcmlnaHQ7IH0KLSAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggYm90dG9tKSB7IG1fYm90dG9t
ID0gYm90dG9tOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCBsZWZ0KSB7IG1fbGVmdCA9IGxl
ZnQ7IH0KKyAgICBjb25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKyAgICBj
b25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fYm90dG9tOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9CisgICAgY29uc3QgTGVu
Z3RoJiBjb3JuZXJSYWRpdXNYKCkgY29uc3QgeyByZXR1cm4gbV9jb3JuZXJSYWRpdXNYOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBjb3JuZXJSYWRpdXNZKCkgY29uc3QgeyByZXR1cm4gbV9jb3JuZXJS
YWRpdXNZOyB9CisKKyAgICB2b2lkIHNldFRvcChMZW5ndGggdG9wKSB7IG1fdG9wID0gc3RkOjpt
b3ZlKHRvcCk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCByaWdodCkgeyBtX3JpZ2h0ID0g
c3RkOjptb3ZlKHJpZ2h0KTsgfQorICAgIHZvaWQgc2V0Qm90dG9tKExlbmd0aCBib3R0b20pIHsg
bV9ib3R0b20gPSBzdGQ6Om1vdmUoYm90dG9tKTsgfQorICAgIHZvaWQgc2V0TGVmdChMZW5ndGgg
bGVmdCkgeyBtX2xlZnQgPSBzdGQ6Om1vdmUobGVmdCk7IH0KICAgICB2b2lkIHNldENvcm5lclJh
ZGl1c1goTGVuZ3RoIHJhZGl1c1gpCiAgICAgewogICAgICAgICBBU1NFUlQoIXJhZGl1c1guaXNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIG1fY29ybmVyUmFkaXVzWCA9IHJhZGl1c1g7CisgICAgICAg
IG1fY29ybmVyUmFkaXVzWCA9IHN0ZDo6bW92ZShyYWRpdXNYKTsKICAgICB9CiAgICAgdm9pZCBz
ZXRDb3JuZXJSYWRpdXNZKExlbmd0aCByYWRpdXNZKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFy
YWRpdXNZLmlzVW5kZWZpbmVkKCkpOwotICAgICAgICBtX2Nvcm5lclJhZGl1c1kgPSByYWRpdXNZ
OworICAgICAgICBtX2Nvcm5lclJhZGl1c1kgPSBzdGQ6Om1vdmUocmFkaXVzWSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNvbnN0IEZsb2F0UmVjdCYpIE9WRVJSSURF
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IGI0OGYw
Nzc5NThmYTAwN2Y5ODc5OGY0NjgwODM1YzA0NDg3NTY4ZjUuLmU5ODA3MzRkYWE0NGZjMDY1OTBi
ZjRmZTUwNDFiMWUzZWYyNWIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsbExheWVyLmgKQEAgLTQwLDkgKzQwLDkgQEAgc3RydWN0IEZpbGxTaXplIHsKICAgICB7CiAg
ICAgfQogCi0gICAgRmlsbFNpemUoRUZpbGxTaXplVHlwZSB0LCBMZW5ndGhTaXplIGwpCisgICAg
RmlsbFNpemUoRUZpbGxTaXplVHlwZSB0LCBMZW5ndGhTaXplIHNpemUpCiAgICAgICAgIDogdHlw
ZSh0KQotICAgICAgICAsIHNpemUobCkKKyAgICAgICAgLCBzaXplKHN0ZDo6bW92ZShzaXplKSkK
ICAgICB7CiAgICAgfQogCkBAIC02Niw4ICs2Niw4IEBAIHB1YmxpYzoKICAgICB+RmlsbExheWVy
KCk7CiAKICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KLSAgICBMZW5ndGggeFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV94UG9zaXRpb247
IH0KLSAgICBMZW5ndGggeVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95UG9zaXRpb247IH0K
KyAgICBjb25zdCBMZW5ndGgmIHhQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1feFBvc2l0aW9u
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3lQb3Np
dGlvbjsgfQogICAgIEJhY2tncm91bmRFZGdlT3JpZ2luIGJhY2tncm91bmRYT3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmFja2dyb3VuZEVkZ2VPcmlnaW4+KG1fYmFja2dyb3Vu
ZFhPcmlnaW4pOyB9CiAgICAgQmFja2dyb3VuZEVkZ2VPcmlnaW4gYmFja2dyb3VuZFlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCYWNrZ3JvdW5kRWRnZU9yaWdpbj4obV9iYWNr
Z3JvdW5kWU9yaWdpbik7IH0KICAgICBFRmlsbEF0dGFjaG1lbnQgYXR0YWNobWVudCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQXR0YWNobWVudD4obV9hdHRhY2htZW50KTsgfQpA
QCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgRUZpbGxSZXBlYXQgcmVwZWF0WSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsUmVwZWF0PihtX3JlcGVhdFkpOyB9CiAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29t
cG9zaXRlT3BlcmF0b3I+KG1fY29tcG9zaXRlKTsgfQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQot
ICAgIExlbmd0aFNpemUgc2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUxlbmd0aDsg
fQorICAgIGNvbnN0IExlbmd0aFNpemUmIHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3Np
emVMZW5ndGg7IH0KICAgICBFRmlsbFNpemVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZpbGxTaXplVHlwZT4obV9zaXplVHlwZSk7IH0KICAgICBGaWxsU2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gRmlsbFNpemUoc3RhdGljX2Nhc3Q8RUZpbGxTaXplVHlwZT4o
bV9zaXplVHlwZSksIG1fc2l6ZUxlbmd0aCk7IH0KICAgICBFTWFza1NvdXJjZVR5cGUgbWFza1Nv
dXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWFza1NvdXJjZVR5cGU+KG1f
bWFza1NvdXJjZVR5cGUpOyB9CkBAIC0xMDAsOCArMTAwLDggQEAgcHVibGljOgogICAgIGJvb2wg
aXNNYXNrU291cmNlVHlwZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1NvdXJjZVR5cGVTZXQ7
IH0KIAogICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpKSB7IG1faW1h
Z2UgPSBpOyBtX2ltYWdlU2V0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0WFBvc2l0aW9uKExlbmd0
aCBsKSB7IG1feFBvc2l0aW9uID0gbDsgbV94UG9zU2V0ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0
WVBvc2l0aW9uKExlbmd0aCBsKSB7IG1feVBvc2l0aW9uID0gbDsgbV95UG9zU2V0ID0gdHJ1ZTsg
fQorICAgIHZvaWQgc2V0WFBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgbV94UG9zaXRpb24gPSBz
dGQ6Om1vdmUobGVuZ3RoKTsgbV94UG9zU2V0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0WVBvc2l0
aW9uKExlbmd0aCBsZW5ndGgpIHsgbV95UG9zaXRpb24gPSBzdGQ6Om1vdmUobGVuZ3RoKTsgbV95
UG9zU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZFhPcmlnaW4oQmFja2dyb3Vu
ZEVkZ2VPcmlnaW4gbykgeyBtX2JhY2tncm91bmRYT3JpZ2luID0gbzsgbV9iYWNrZ3JvdW5kT3Jp
Z2luU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZFlPcmlnaW4oQmFja2dyb3Vu
ZEVkZ2VPcmlnaW4gbykgeyBtX2JhY2tncm91bmRZT3JpZ2luID0gbzsgbV9iYWNrZ3JvdW5kT3Jp
Z2luU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QXR0YWNobWVudChFRmlsbEF0dGFjaG1lbnQg
YXR0YWNobWVudCkgeyBtX2F0dGFjaG1lbnQgPSBhdHRhY2htZW50OyBtX2F0dGFjaG1lbnRTZXQg
PSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmlu
ZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVj
ZUltYWdlLmNwcAppbmRleCBhNDYzZDgxNWI0YTNlM2RkNmMyN2U4MjU5ZjEwZmMyMjc3MjY2ZWMx
Li41YmI0OGMyNWJhNjdkMWRiZmUzMzc4YjExYTFhNmMzOGQ0NjhkZTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTQzLDkg
KzQzLDkgQEAgTmluZVBpZWNlSW1hZ2U6Ok5pbmVQaWVjZUltYWdlKFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4gaW1hZ2UsIExlbmd0aEJveCBpbWFnZVNsaWMKIHsKICAgICBtX2RhdGEuaW5pdCgpOwog
ICAgIG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2UgPSBpbWFnZTsKLSAgICBtX2RhdGEuYWNjZXNzKCkt
PmltYWdlU2xpY2VzID0gaW1hZ2VTbGljZXM7Ci0gICAgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJT
bGljZXMgPSBib3JkZXJTbGljZXM7Ci0gICAgbV9kYXRhLmFjY2VzcygpLT5vdXRzZXQgPSBvdXRz
ZXQ7CisgICAgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IHN0ZDo6bW92ZShpbWFnZVNs
aWNlcyk7CisgICAgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBzdGQ6Om1vdmUoYm9y
ZGVyU2xpY2VzKTsKKyAgICBtX2RhdGEuYWNjZXNzKCktPm91dHNldCA9IHN0ZDo6bW92ZShvdXRz
ZXQpOwogICAgIG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IGZpbGw7CiAgICAgbV9kYXRhLmFjY2Vz
cygpLT5ob3Jpem9udGFsUnVsZSA9IGhvcml6b250YWxSdWxlOwogICAgIG1fZGF0YS5hY2Nlc3Mo
KS0+dmVydGljYWxSdWxlID0gdmVydGljYWxSdWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCAwZjNiMzM5ZWFhMGZiZWQwODlhZGU1
N2E4M2ViMjllMWM1YWY5NTc1Li4zODYxMjA1MTJhZTkyZTIxZWMxNTg1Yjk3M2U2MmU3Y2QwYTU0
YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuaApAQCAtNjksMTYgKzY5LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlKFBhc3NS
ZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UpIHsgbV9kYXRhLmFjY2VzcygpLT5pbWFnZSA9IGltYWdl
OyB9CiAgICAgCiAgICAgY29uc3QgTGVuZ3RoQm94JiBpbWFnZVNsaWNlcygpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS0+aW1hZ2VTbGljZXM7IH0KLSAgICB2b2lkIHNldEltYWdlU2xpY2VzKGNvbnN0
IExlbmd0aEJveCYgc2xpY2VzKSB7IG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBzbGlj
ZXM7IH0KKyAgICB2b2lkIHNldEltYWdlU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRh
LmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IHN0ZDo6bW92ZShzbGljZXMpOyB9CiAKICAgICBib29s
IGZpbGwoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmZpbGw7IH0KICAgICB2b2lkIHNldEZpbGwo
Ym9vbCBmaWxsKSB7IG1fZGF0YS5hY2Nlc3MoKS0+ZmlsbCA9IGZpbGw7IH0KIAogICAgIGNvbnN0
IExlbmd0aEJveCYgYm9yZGVyU2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5ib3JkZXJT
bGljZXM7IH0KLSAgICB2b2lkIHNldEJvcmRlclNsaWNlcyhjb25zdCBMZW5ndGhCb3gmIHNsaWNl
cykgeyBtX2RhdGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IHNsaWNlczsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLT5ib3Jk
ZXJTbGljZXMgPSBzdGQ6Om1vdmUoc2xpY2VzKTsgfQogCiAgICAgY29uc3QgTGVuZ3RoQm94JiBv
dXRzZXQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPm91dHNldDsgfQotICAgIHZvaWQgc2V0T3V0
c2V0KGNvbnN0IExlbmd0aEJveCYgb3V0c2V0KSB7IG1fZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0g
b3V0c2V0OyB9CisgICAgdm9pZCBzZXRPdXRzZXQoTGVuZ3RoQm94IG91dHNldCkgeyBtX2RhdGEu
YWNjZXNzKCktPm91dHNldCA9IHN0ZDo6bW92ZShvdXRzZXQpOyB9CiAKICAgICBFTmluZVBpZWNl
SW1hZ2VSdWxlIGhvcml6b250YWxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU5p
bmVQaWVjZUltYWdlUnVsZT4obV9kYXRhLT5ob3Jpem9udGFsUnVsZSk7IH0KICAgICB2b2lkIHNl
dEhvcml6b250YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNjZXNz
KCktPmhvcml6b250YWxSdWxlID0gcnVsZTsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBMZW5ndGhCb3goKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlT3V0c2V0KExlbmd0aCBvdXRzZXRT
aWRlLCBMYXlvdXRVbml0IGJvcmRlclNpZGUpCisgICAgc3RhdGljIExheW91dFVuaXQgY29tcHV0
ZU91dHNldChjb25zdCBMZW5ndGgmIG91dHNldFNpZGUsIExheW91dFVuaXQgYm9yZGVyU2lkZSkK
ICAgICB7CiAgICAgICAgIGlmIChvdXRzZXRTaWRlLmlzUmVsYXRpdmUoKSkKICAgICAgICAgICAg
IHJldHVybiBvdXRzZXRTaWRlLnZhbHVlKCkgKiBib3JkZXJTaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNjYwNmE0YmM3ZTViYmJj
Y2U4OTg1MDkxMDkyOTMzMTFhZjg1OTE0Zi4uYzYyYzRiMDYzYjBmMmRmMmMwYjgxMmFlZDI4ZGMw
MGZkMDI0ZDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0xNDIzLDEwICsxNDIzLDEwIEBAIGJvb2wgUmVuZGVyU3R5bGU6OnNldEZv
bnREZXNjcmlwdGlvbihjb25zdCBGb250RGVzY3JpcHRpb24mIHYpCiB9CiAKICNpZiBFTkFCTEUo
SU9TX1RFWFRfQVVUT1NJWklORykKLUxlbmd0aCBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodDsgfQor
Y29uc3QgTGVuZ3RoJiBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodDsgfQogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKGluaGVyaXRlZCwg
c3BlY2lmaWVkTGluZUhlaWdodCwgdik7IH0KICNlbHNlCi1MZW5ndGggUmVuZGVyU3R5bGU6OnNw
ZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0
OyB9Citjb25zdCBMZW5ndGgmIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT5saW5lX2hlaWdodDsgfQogI2VuZGlmCiAKIExlbmd0aCBS
ZW5kZXJTdHlsZTo6bGluZUhlaWdodCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDA0YWRjODVkMWMxNGZjODIxNTlkMWY2ODc2YzZl
NjE1NjUxMzg3OTIuLjMwYWZkZGM0MzI5ZjgyZWNmYzczOTBhOWMxYmQzYTQ4YjhhYjZkMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC00NDYs
MTYgKzQ0NiwxNiBAQCBwdWJsaWM6CiAgICAgRURpc3BsYXkgZGlzcGxheSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVEaXNwbGF5Pihub25pbmhlcml0ZWRfZmxhZ3MuX2VmZmVjdGl2ZURp
c3BsYXkpOyB9CiAgICAgRURpc3BsYXkgb3JpZ2luYWxEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RURpc3BsYXk+KG5vbmluaGVyaXRlZF9mbGFncy5fb3JpZ2luYWxEaXNwbGF5
KTsgfQogCi0gICAgTGVuZ3RoIGxlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0
LmxlZnQoKTsgfQotICAgIExlbmd0aCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQucmlnaHQoKTsgfQotICAgIExlbmd0aCB0b3AoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0LnRvcCgpOyB9Ci0gICAgTGVuZ3RoIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5vZmZzZXQuYm90dG9tKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxlZnQoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
cmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+b2Zmc2V0LnJpZ2h0KCk7IH0KKyAgICBj
b25zdCBMZW5ndGgmIHRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQudG9wKCk7
IH0KKyAgICBjb25zdCBMZW5ndGgmIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRpb25lZCBvYmpl
Y3QgZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1vZGUuCi0gICAgTGVuZ3Ro
IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsTGVm
dCh3cml0aW5nTW9kZSgpKTsgfQotICAgIExlbmd0aCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+b2Zmc2V0LmxvZ2ljYWxSaWdodCh3cml0aW5nTW9kZSgpKTsgfQotICAg
IExlbmd0aCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZv
cmUod3JpdGluZ01vZGUoKSk7IH0KLSAgICBMZW5ndGggbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25z
dCBMZW5ndGgmIGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5s
b2dpY2FsTGVmdCh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFJp
Z2h0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsUmlnaHQod3JpdGlu
Z01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExl
bmd0aCYgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0
ZXIod3JpdGluZ01vZGUoKSk7IH0KIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgcG9zaXRpb25l
ZCBlbGVtZW50IHJlcXVpcmVzIG5vcm1hbCBmbG93IHgveSB0byBiZSBjb21wdXRlZAogICAgIC8v
IHRvIGRldGVybWluZSBpdHMgcG9zaXRpb24uCkBAIC00NzAsMTkgKzQ3MCwxOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBwb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gfHwgcG9zaXRpb24oKSA9PSBTdGlja3lQb3Np
dGlvbjsgfQogICAgIEVGbG9hdCBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVGbG9hdD4obm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZyk7IH0KIAotICAgIExlbmd0aCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT53aWR0aCgpOyB9Ci0gICAgTGVuZ3RoIGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5oZWlnaHQoKTsgfQotICAgIExlbmd0aCBtaW5XaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5taW5XaWR0aCgpOyB9Ci0gICAgTGVuZ3RoIG1heFdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1heFdpZHRoKCk7IH0KLSAgICBMZW5ndGggbWlu
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPm1pbkhlaWdodCgpOyB9Ci0gICAgTGVuZ3Ro
IG1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5tYXhIZWlnaHQoKTsgfQorICAgIGNv
bnN0IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+d2lkdGgoKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPmhlaWdodCgpOyB9
CisgICAgY29uc3QgTGVuZ3RoJiBtaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5taW5X
aWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym94LT5tYXhXaWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtaW5IZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2JveC0+bWluSGVpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1heEhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT5tYXhIZWlnaHQoKTsgfQogICAgIAotICAgIExlbmd0
aCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ID8gd2lkdGgoKSA6IGhlaWdodCgpOyB9Ci0gICAgTGVuZ3RoIGxvZ2ljYWxIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaGVpZ2h0KCkgOiB3aWR0aCgp
OyB9Ci0gICAgTGVuZ3RoIGxvZ2ljYWxNaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5XaWR0aCgpIDogbWluSGVpZ2h0KCk7IH0KLSAgICBMZW5n
dGggbG9naWNhbE1heFdpZHRoKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IG1heFdpZHRoKCkgOiBtYXhIZWlnaHQoKTsgfQotICAgIExlbmd0aCBsb2dpY2FsTWlu
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1pbkhl
aWdodCgpIDogbWluV2lkdGgoKTsgfQotICAgIExlbmd0aCBsb2dpY2FsTWF4SGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heEhlaWdodCgpIDogbWF4
V2lkdGgoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1
cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHdpZHRoKCkgOiBoZWlnaHQoKTsgfQorICAg
IGNvbnN0IExlbmd0aCYgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBoZWlnaHQoKSA6IHdpZHRoKCk7IH0KKyAgICBjb25zdCBMZW5ndGgm
IGxvZ2ljYWxNaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBtaW5XaWR0aCgpIDogbWluSGVpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2lj
YWxNYXhXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBt
YXhXaWR0aCgpIDogbWF4SGVpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIGxvZ2ljYWxNaW5I
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWluSGVp
Z2h0KCkgOiBtaW5XaWR0aCgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBsb2dpY2FsTWF4SGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heEhlaWdodCgp
IDogbWF4V2lkdGgoKTsgfQogCiAgICAgY29uc3QgQm9yZGVyRGF0YSYgYm9yZGVyKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPmJvcmRlcjsgfQogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3Jk
ZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5sZWZ0KCk7IH0KQEAgLTQ5
NywxNCArNDk3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3Jk
ZXJJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIuaW1hZ2UoKTsgfQogICAg
IFN0eWxlSW1hZ2UqIGJvcmRlckltYWdlU291cmNlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5pbWFnZSgpLmltYWdlKCk7IH0KLSAgICBMZW5ndGhCb3ggYm9yZGVySW1hZ2VTbGlj
ZXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuaW1hZ2VTbGljZXMo
KTsgfQotICAgIExlbmd0aEJveCBib3JkZXJJbWFnZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPmJvcmRlci5pbWFnZSgpLmJvcmRlclNsaWNlcygpOyB9Ci0gICAgTGVuZ3RoQm94IGJv
cmRlckltYWdlT3V0c2V0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgp
Lm91dHNldCgpOyB9Ci0KLSAgICBMZW5ndGhTaXplIGJvcmRlclRvcExlZnRSYWRpdXMoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRvcExlZnQoKTsgfQotICAgIExlbmd0aFNpemUg
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRv
cFJpZ2h0KCk7IH0KLSAgICBMZW5ndGhTaXplIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQotICAgIExlbmd0aFNp
emUgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9y
ZGVyLmJvdHRvbVJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlU2xp
Y2VzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5pbWFnZSgpLmltYWdlU2xpY2Vz
KCk7IH0KKyAgICBjb25zdCBMZW5ndGhCb3gmIGJvcmRlckltYWdlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+Ym9yZGVyLmltYWdlKCkuYm9yZGVyU2xpY2VzKCk7IH0KKyAgICBjb25z
dCBMZW5ndGhCb3gmIGJvcmRlckltYWdlT3V0c2V0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PmJvcmRlci5pbWFnZSgpLm91dHNldCgpOyB9CisKKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3Jk
ZXJUb3BMZWZ0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3BMZWZ0
KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBib3JkZXJUb3BSaWdodFJhZGl1cygpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wUmlnaHQoKTsgfQorICAgIGNvbnN0IExlbmd0
aFNpemUmIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
Ym9yZGVyLmJvdHRvbUxlZnQoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIGJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b21SaWdo
dCgpOyB9CiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLmhhc0JvcmRlclJhZGl1cygpOyB9CiAKICAgICB1bnNpZ25lZCBib3JkZXJMZWZ0
V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckxlZnRXaWR0aCgp
OyB9CkBAIC01NDEsMTMgKzU0MSwxMyBAQCBwdWJsaWM6CiAKICAgICBFVmlzaWJpbGl0eSB2aXNp
YmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZpc2liaWxpdHk+KGluaGVyaXRl
ZF9mbGFncy5fdmlzaWJpbGl0eSk7IH0KICAgICBFVmVydGljYWxBbGlnbiB2ZXJ0aWNhbEFsaWdu
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVZlcnRpY2FsQWxpZ24+KG5vbmluaGVyaXRl
ZF9mbGFncy5fdmVydGljYWxfYWxpZ24pOyB9Ci0gICAgTGVuZ3RoIHZlcnRpY2FsQWxpZ25MZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+dmVydGljYWxBbGlnbigpOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiB2ZXJ0aWNhbEFsaWduTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ib3gtPnZlcnRp
Y2FsQWxpZ24oKTsgfQogCi0gICAgTGVuZ3RoIGNsaXBMZWZ0KCkgY29uc3QgeyByZXR1cm4gdmlz
dWFsLT5jbGlwLmxlZnQoKTsgfQotICAgIExlbmd0aCBjbGlwUmlnaHQoKSBjb25zdCB7IHJldHVy
biB2aXN1YWwtPmNsaXAucmlnaHQoKTsgfQotICAgIExlbmd0aCBjbGlwVG9wKCkgY29uc3QgeyBy
ZXR1cm4gdmlzdWFsLT5jbGlwLnRvcCgpOyB9Ci0gICAgTGVuZ3RoIGNsaXBCb3R0b20oKSBjb25z
dCB7IHJldHVybiB2aXN1YWwtPmNsaXAuYm90dG9tKCk7IH0KLSAgICBMZW5ndGhCb3ggY2xpcCgp
IGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcDsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcExl
ZnQoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAubGVmdCgpOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBjbGlwUmlnaHQoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPmNsaXAucmlnaHQoKTsgfQor
ICAgIGNvbnN0IExlbmd0aCYgY2xpcFRvcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC50
b3AoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgY2xpcEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHZp
c3VhbC0+Y2xpcC5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aEJveCYgY2xpcCgpIGNvbnN0
IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcDsgfQogICAgIGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0
dXJuIHZpc3VhbC0+aGFzQ2xpcDsgfQogCiAgICAgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVuaWNvZGVCaWRpPihub25pbmhlcml0ZWRfZmxh
Z3MuX3VuaWNvZGVCaWRpKTsgfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHB1YmxpYzoKICAgICBmbG9h
dCB0ZXh0QXV0b3NpemluZ011bHRpcGxpZXIoKSBjb25zdCB7IHJldHVybiB2aXN1YWwtPm1fdGV4
dEF1dG9zaXppbmdNdWx0aXBsaWVyOyB9CiAjZW5kaWYKIAotICAgIExlbmd0aCB0ZXh0SW5kZW50
KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPmluZGVudDsgfQorICAgIGNvbnN0
IExlbmd0aCYgdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5p
bmRlbnQ7IH0KICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIFRleHRJbmRlbnRMaW5lIHRleHRJ
bmRlbnRMaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudExpbmU+KHJh
cmVJbmhlcml0ZWREYXRhLT5tX3RleHRJbmRlbnRMaW5lKTsgfQogICAgIFRleHRJbmRlbnRUeXBl
IHRleHRJbmRlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudFR5
cGU+KHJhcmVJbmhlcml0ZWREYXRhLT5tX3RleHRJbmRlbnRUeXBlKTsgfQpAQCAtNTkzLDcgKzU5
Myw3IEBAIHB1YmxpYzoKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9u
KTsgfQogICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRp
cmVjdGlvbigpID09IExUUjsgfQogCi0gICAgTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQoKSBj
b25zdDsKKyAgICBjb25zdCBMZW5ndGgmIHNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdDsKICAg
ICBMZW5ndGggbGluZUhlaWdodCgpIGNvbnN0OwogICAgIGludCBjb21wdXRlZExpbmVIZWlnaHQo
UmVuZGVyVmlldyogPSAwKSBjb25zdDsKIApAQCAtNjU5LDEwICs2NTksMTAgQEAgcHVibGljOgog
ICAgIEVGaWxsQXR0YWNobWVudCBiYWNrZ3JvdW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVGaWxsQXR0YWNobWVudD4obV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCku
YXR0YWNobWVudCgpKTsgfQogICAgIEVGaWxsQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLmNs
aXAoKSk7IH0KICAgICBFRmlsbEJveCBiYWNrZ3JvdW5kT3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RUZpbGxCb3g+KG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLm9yaWdpbigp
KTsgfQotICAgIExlbmd0aCBiYWNrZ3JvdW5kWFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueFBvc2l0aW9uKCk7IH0KLSAgICBMZW5ndGggYmFja2dy
b3VuZFlQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgp
LnlQb3NpdGlvbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBiYWNrZ3JvdW5kWFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNrZ3JvdW5kKCkueFBvc2l0aW9uKCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIGJhY2tncm91bmRZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2JhY2tncm91bmQtPmJhY2tncm91bmQoKS55UG9zaXRpb24oKTsgfQogICAgIEVGaWxsU2l6ZVR5
cGUgYmFja2dyb3VuZFNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5iYWNr
Z3JvdW5kKCkuc2l6ZVR5cGUoKTsgfQotICAgIExlbmd0aFNpemUgYmFja2dyb3VuZFNpemVMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQtPmJhY2tncm91bmQoKS5zaXplTGVuZ3Ro
KCk7IH0KKyAgICBjb25zdCBMZW5ndGhTaXplJiBiYWNrZ3JvdW5kU2l6ZUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+YmFja2dyb3VuZCgpLnNpemVMZW5ndGgoKTsgfQogICAg
IEZpbGxMYXllciogYWNjZXNzQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuICYobV9iYWNrZ3Jv
dW5kLmFjY2VzcygpLT5tX2JhY2tncm91bmQpOyB9CiAgICAgY29uc3QgRmlsbExheWVyKiBiYWNr
Z3JvdW5kTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gJihtX2JhY2tncm91bmQtPmJhY2tncm91bmQo
KSk7IH0KIApAQCAtNjcyLDEwICs2NzIsMTAgQEAgcHVibGljOgogICAgIENvbXBvc2l0ZU9wZXJh
dG9yIG1hc2tDb21wb3NpdGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb21wb3NpdGVP
cGVyYXRvcj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5jb21wb3NpdGUoKSk7IH0KICAg
ICBFRmlsbEJveCBtYXNrQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGaWxsQm94
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLmNsaXAoKSk7IH0KICAgICBFRmlsbEJveCBt
YXNrT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxCb3g+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX21hc2sub3JpZ2luKCkpOyB9Ci0gICAgTGVuZ3RoIG1hc2tYUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnhQb3NpdGlv
bigpOyB9Ci0gICAgTGVuZ3RoIG1hc2tZUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9tYXNrLnlQb3NpdGlvbigpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
YXNrWFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFz
ay54UG9zaXRpb24oKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFza1lQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2sueVBvc2l0aW9uKCk7IH0KICAg
ICBFRmlsbFNpemVUeXBlIG1hc2tTaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX21hc2suc2l6ZVR5cGUoKTsgfQotICAgIExlbmd0aFNpemUgbWFza1NpemVM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrLnNpemVM
ZW5ndGgoKTsgfQorICAgIGNvbnN0IExlbmd0aFNpemUmIG1hc2tTaXplTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5zaXplTGVuZ3RoKCk7IH0KICAg
ICBGaWxsTGF5ZXIqIGFjY2Vzc01hc2tMYXllcnMoKSB7IHJldHVybiAmKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX21hc2spOyB9CiAgICAgY29uc3QgRmlsbExheWVyKiBtYXNrTGF5
ZXJzKCkgY29uc3QgeyByZXR1cm4gJihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrKTsgfQog
ICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBtYXNrQm94SW1hZ2UoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tYXNrQm94SW1hZ2U7IH0KQEAgLTY5MSwyOCArNjkxLDI4
IEBAIHB1YmxpYzoKICAgICBTdHlsZUltYWdlKiBsaXN0U3R5bGVJbWFnZSgpIGNvbnN0OwogICAg
IEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVMaXN0U3R5bGVQb3NpdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxl
X3Bvc2l0aW9uKTsgfQogCi0gICAgTGVuZ3RoIG1hcmdpblRvcCgpIGNvbnN0IHsgcmV0dXJuIHN1
cnJvdW5kLT5tYXJnaW4udG9wKCk7IH0KLSAgICBMZW5ndGggbWFyZ2luQm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5ib3R0b20oKTsgfQotICAgIExlbmd0aCBtYXJnaW5M
ZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5sZWZ0KCk7IH0KLSAgICBMZW5n
dGggbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnJpZ2h0KCk7
IH0KLSAgICBMZW5ndGggbWFyZ2luQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KLSAgICBMZW5ndGggbWFyZ2luQWZ0ZXIoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9Ci0g
ICAgTGVuZ3RoIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5z
dGFydCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KLSAgICBMZW5ndGggbWFyZ2luRW5k
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5lbmQod3JpdGluZ01vZGUoKSwgZGly
ZWN0aW9uKCkpOyB9Ci0gICAgTGVuZ3RoIG1hcmdpblN0YXJ0VXNpbmcoY29uc3QgUmVuZGVyU3R5
bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uc3RhcnQob3Ro
ZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9Ci0gICAg
TGVuZ3RoIG1hcmdpbkVuZFVzaW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgp
LCBvdGhlclN0eWxlLT5kaXJlY3Rpb24oKSk7IH0KLSAgICBMZW5ndGggbWFyZ2luQmVmb3JlVXNp
bmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5tYXJnaW4uYmVmb3JlKG90aGVyU3R5bGUtPndyaXRpbmdNb2RlKCkpOyB9Ci0gICAgTGVuZ3Ro
IG1hcmdpbkFmdGVyVXNpbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsg
cmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7
IH0KLQotICAgIExlbmd0aEJveCBwYWRkaW5nQm94KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PnBhZGRpbmc7IH0KLSAgICBMZW5ndGggcGFkZGluZ1RvcCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJv
dW5kLT5wYWRkaW5nLnRvcCgpOyB9Ci0gICAgTGVuZ3RoIHBhZGRpbmdCb3R0b20oKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5ib3R0b20oKTsgfQotICAgIExlbmd0aCBwYWRkaW5n
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmxlZnQoKTsgfQotICAgIExl
bmd0aCBwYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5yaWdo
dCgpOyB9Ci0gICAgTGVuZ3RoIHBhZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+cGFkZGluZy5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0KLSAgICBMZW5ndGggcGFkZGluZ0Fm
dGVyKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUo
KSk7IH0KLSAgICBMZW5ndGggcGFkZGluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQt
PnBhZGRpbmcuc3RhcnQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9Ci0gICAgTGVuZ3Ro
IHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5lbmQod3JpdGlu
Z01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5Ub3AoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLnRvcCgpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBtYXJnaW5Cb3R0b20oKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJvdHRvbSgp
OyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91
bmQtPm1hcmdpbi5sZWZ0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5yaWdodCgpOyB9CisgICAgY29uc3QgTGVuZ3Ro
JiBtYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJlZm9yZSh3
cml0aW5nTW9kZSgpKTsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFyZ2luQWZ0ZXIoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29u
c3QgTGVuZ3RoJiBtYXJnaW5TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4u
c3RhcnQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBt
YXJnaW5FbmQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmVuZCh3cml0aW5nTW9k
ZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpblN0YXJ0VXNpbmco
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5t
YXJnaW4uc3RhcnQob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0
aW9uKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBtYXJnaW5FbmRVc2luZyhjb25zdCBSZW5kZXJT
dHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5lbmQob3Ro
ZXJTdHlsZS0+d3JpdGluZ01vZGUoKSwgb3RoZXJTdHlsZS0+ZGlyZWN0aW9uKCkpOyB9CisgICAg
Y29uc3QgTGVuZ3RoJiBtYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJT
dHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUob3RoZXJTdHlsZS0+
d3JpdGluZ01vZGUoKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIG1hcmdpbkFmdGVyVXNpbmcoY29u
c3QgUmVuZGVyU3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJn
aW4uYWZ0ZXIob3RoZXJTdHlsZS0+d3JpdGluZ01vZGUoKSk7IH0KKworICAgIGNvbnN0IExlbmd0
aEJveCYgcGFkZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nOyB9Cisg
ICAgY29uc3QgTGVuZ3RoJiBwYWRkaW5nVG9wKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBh
ZGRpbmcudG9wKCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCb3R0b20oKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5ib3R0b20oKTsgfQorICAgIGNvbnN0IExlbmd0aCYg
cGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5sZWZ0KCk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5wYWRkaW5nLnJpZ2h0KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdCZWZvcmUoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5iZWZvcmUod3JpdGluZ01vZGUoKSk7IH0K
KyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdBZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5wYWRkaW5nLmFmdGVyKHdyaXRpbmdNb2RlKCkpOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwYWRk
aW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5zdGFydCh3cml0aW5n
TW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBhZGRpbmdFbmQoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0
aW9uKCkpOyB9CiAKICAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVDdXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogI2lmIEVOQUJM
RShDVVJTT1JfVklTSUJJTElUWSkKQEAgLTc2OSw3ICs3NjksNyBAQCBwdWJsaWM6CiAgICAgaW50
IG9yZGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXI7IH0K
ICAgICBmbG9hdCBmbGV4R3JvdygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhHcm93OyB9CiAgICAgZmxvYXQgZmxleFNocmluaygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhT
aHJpbms7IH0KLSAgICBMZW5ndGggZmxleEJhc2lzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleEJhc2lzOyB9CisgICAgY29uc3QgTGVu
Z3RoJiBmbGV4QmFzaXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9m
bGV4aWJsZUJveC0+bV9mbGV4QmFzaXM7IH0KICAgICBFQWxpZ25Db250ZW50IGFsaWduQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVBbGlnbkNvbnRlbnQ+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2FsaWduQ29udGVudCk7IH0KICAgICBFQWxpZ25JdGVtcyBhbGlnbkl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFsaWduSXRlbXM+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2FsaWduSXRlbXMpOyB9CiAgICAgRUFsaWduSXRlbXMgYWxpZ25TZWxmKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUFsaWduSXRlbXM+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduU2VsZik7IH0KQEAgLTgwNSw3ICs4MDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICBTdHlsZVJlZmxlY3Rpb24qIGJveFJlZmxlY3QoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9ib3hSZWZsZWN0LmdldCgpOyB9CiAgICAgRUJveFNpemluZyBib3hTaXpp
bmcoKSBjb25zdCB7IHJldHVybiBtX2JveC0+Ym94U2l6aW5nKCk7IH0KLSAgICBMZW5ndGggbWFy
cXVlZUluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21h
cnF1ZWUtPmluY3JlbWVudDsgfQorICAgIGNvbnN0IExlbmd0aCYgbWFycXVlZUluY3JlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1ZWUtPmluY3JlbWVu
dDsgfQogICAgIGludCBtYXJxdWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXJxdWVlLT5zcGVlZDsgfQogICAgIGludCBtYXJxdWVlTG9vcENvdW50KCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFycXVlZS0+bG9vcHM7IH0K
ICAgICBFTWFycXVlZUJlaGF2aW9yIG1hcnF1ZWVCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVNYXJxdWVlQmVoYXZpb3I+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hcnF1
ZWUtPmJlaGF2aW9yKTsgfQpAQCAtODUzLDggKzg1Myw4IEBAIHB1YmxpYzoKICAgICBFUGFnZUJy
ZWFrIHJlZ2lvbkJyZWFrSW5zaWRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VC
cmVhaz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uQnJlYWtJbnNpZGUpOyB9CiAgICAg
RVBhZ2VCcmVhayByZWdpb25CcmVha0FmdGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RVBhZ2VCcmVhaz4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uQnJlYWtBZnRlcik7IH0K
ICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9uczsgfQotICAg
IExlbmd0aCB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fdHJhbnNmb3JtLT5tX3g7IH0KLSAgICBMZW5ndGggdHJhbnNmb3JtT3JpZ2luWSgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV95OyB9
CisgICAgY29uc3QgTGVuZ3RoJiB0cmFuc2Zvcm1PcmlnaW5YKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3g7IH0KKyAgICBjb25zdCBMZW5ndGgm
IHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90cmFuc2Zvcm0tPm1feTsgfQogICAgIGZsb2F0IHRyYW5zZm9ybU9yaWdpblooKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fejsgfQogICAgIGJv
b2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5pc0VtcHR5KCk7IH0KIApAQCAt
OTE5LDkgKzkxOSw5IEBAIHB1YmxpYzoKICAgICBFQmFja2ZhY2VWaXNpYmlsaXR5IGJhY2tmYWNl
VmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCYWNrZmFjZVZpc2liaWxp
dHk+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JhY2tmYWNlVmlzaWJpbGl0eSk7IH0KICAgICBm
bG9hdCBwZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X3BlcnNwZWN0aXZlOyB9CiAgICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlID4gMDsgfQotICAgIExlbmd0aCBw
ZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9wZXJzcGVjdGl2ZU9yaWdpblg7IH0KLSAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5ZKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5Z
OyB9Ci0gICAgTGVuZ3RoU2l6ZSBwYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3BhZ2VTaXplOyB9CisgICAgY29uc3QgTGVuZ3RoJiBwZXJzcGVjdGl2ZU9y
aWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVjdGl2
ZU9yaWdpblg7IH0KKyAgICBjb25zdCBMZW5ndGgmIHBlcnNwZWN0aXZlT3JpZ2luWSgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWTsgfQor
ICAgIGNvbnN0IExlbmd0aFNpemUmIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fcGFnZVNpemU7IH0KICAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGFnZVNpemVUeXBlPihyYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9wYWdlU2l6ZVR5cGUpOyB9CiAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpAQCAtOTkwLDM2ICs5OTAsMzYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9z
aXRpb24oRVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9wb3NpdGlvbiA9IHY7IH0K
ICAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5fZmxv
YXRpbmcgPSB2OyB9CiAKLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgb2Zmc2V0Lm1fbGVmdCwgdik7IH0KLSAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCB2KTsgfQotICAgIHZvaWQgc2V0VG9w
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3RvcCwgdik7IH0KLSAgICB2
b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQubV9ib3R0
b20sIHYpOyB9CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IG9mZnNldC5tX2xlZnQsIHN0ZDo6bW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0
aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCBzdGQ6Om1vdmUodikpOyB9
CisgICAgdm9pZCBzZXRUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1f
dG9wLCBzdGQ6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRCb3R0b20oTGVuZ3RoIHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fYm90dG9tLCBzdGQ6Om1vdmUodikpOyB9CiAKLSAgICB2
b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIHYpOyB9Ci0g
ICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIHYp
OyB9CisgICAgdm9pZCBzZXRXaWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX3dpZHRo
LCBzdGQ6Om1vdmUodikpOyB9CisgICAgdm9pZCBzZXRIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZB
UihtX2JveCwgbV9oZWlnaHQsIHN0ZDo6bW92ZSh2KSk7IH0KIAogICAgIHZvaWQgc2V0TG9naWNh
bFdpZHRoKExlbmd0aCB2KQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIHYpOworICAgICAg
ICAgICAgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgc3RkOjptb3ZlKHYpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCB2KTsKKyAgICAgICAg
ICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBzdGQ6Om1vdmUodikpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KExlbmd0aCB2KQogICAgIHsKICAgICAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIo
bV9ib3gsIG1faGVpZ2h0LCB2KTsKKyAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0
LCBzdGQ6Om1vdmUodikpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU0VUX1ZBUiht
X2JveCwgbV93aWR0aCwgdik7CisgICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBz
dGQ6Om1vdmUodikpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzZXRNaW5XaWR0aChM
ZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21pbldpZHRoLCB2KTsgfQotICAgIHZvaWQgc2V0
TWF4V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhXaWR0aCwgdik7IH0KLSAg
ICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21pbkhlaWdo
dCwgdik7IH0KLSAgICB2b2lkIHNldE1heEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94
LCBtX21heEhlaWdodCwgdik7IH0KKyAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCB2KSB7IFNF
VF9WQVIobV9ib3gsIG1fbWluV2lkdGgsIHN0ZDo6bW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1h
eFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWF4V2lkdGgsIHN0ZDo6bW92ZSh2
KSk7IH0KKyAgICB2b2lkIHNldE1pbkhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBt
X21pbkhlaWdodCwgc3RkOjptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0
aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWF4SGVpZ2h0LCBzdGQ6Om1vdmUodikpOyB9CiAKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVn
aW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQpAQCAtMTAyOSwxMCArMTAyOSwxMCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiByZWdpb247CiAgICAgICAgIHJl
Z2lvbi5sYWJlbCA9IGxhYmVsOwotICAgICAgICByZWdpb24ub2Zmc2V0Lm1fdG9wID0gdDsKLSAg
ICAgICAgcmVnaW9uLm9mZnNldC5tX3JpZ2h0ID0gcjsKLSAgICAgICAgcmVnaW9uLm9mZnNldC5t
X2JvdHRvbSA9IGI7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubV9sZWZ0ID0gbDsKKyAgICAgICAg
cmVnaW9uLm9mZnNldC5tX3RvcCA9IHN0ZDo6bW92ZSh0KTsKKyAgICAgICAgcmVnaW9uLm9mZnNl
dC5tX3JpZ2h0ID0gc3RkOjptb3ZlKHIpOworICAgICAgICByZWdpb24ub2Zmc2V0Lm1fYm90dG9t
ID0gc3RkOjptb3ZlKGIpOworICAgICAgICByZWdpb24ub2Zmc2V0Lm1fbGVmdCA9IHN0ZDo6bW92
ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwogICAgICAgICBpZiAoIWFwcGVuZCkK
ICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2FyZFJl
Z2lvbnMuY2xlYXIoKTsKQEAgLTEwNTksMTAgKzEwNTksMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91
bmQsIG1fY29sb3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0
aW9uLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3lQb3NpdGlvbiwg
bGVuZ3RoKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV94UG9zaXRpb24sIHN0ZDo6
bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlvbihMZW5ndGgg
bGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV95UG9zaXRpb24s
IHN0ZDo6bW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemUoRUZpbGxT
aXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV9zaXplVHlw
ZSwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExlbmd0aFNpemUgcykg
eyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgcyk7IH0K
KyAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRf
VkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgc3RkOjptb3ZlKHNp
emUpKTsgfQogICAgIAogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1h
Z2UmIGIpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1faW1hZ2UsIGIpOyB9CiAgICAgdm9p
ZCBzZXRCb3JkZXJJbWFnZVNvdXJjZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KTsKQEAgLTEwNzAs
MTAgKzEwNzAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5n
dGhCb3gpOwogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94KTsKIAotICAg
IHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhMZW5ndGhTaXplIHMpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgcyk7IH0KLSAgICB2b2lkIHNldEJvcmRlclRvcFJpZ2h0
UmFkaXVzKExlbmd0aFNpemUgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BSaWdo
dCwgcyk7IH0KLSAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBz
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIHMpOyB9Ci0gICAgdm9p
ZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXplIHMpIHsgU0VUX1ZBUihzdXJy
b3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIHMpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BM
ZWZ0UmFkaXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90
b3BMZWZ0LCBzdGQ6Om1vdmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJh
ZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmln
aHQsIHN0ZDo6bW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxl
ZnQsIHN0ZDo6bW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21S
aWdodCwgc3RkOjptb3ZlKHNpemUpKTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVu
Z3RoU2l6ZSBzKQogICAgIHsKQEAgLTExMTUsMTUgKzExMTUsMTUgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0T3ZlcmZsb3dZKEVPdmVyZmxvdyB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5fb3ZlcmZs
b3dZID0gdjsgfQogICAgIHZvaWQgc2V0VmlzaWJpbGl0eShFVmlzaWJpbGl0eSB2KSB7IGluaGVy
aXRlZF9mbGFncy5fdmlzaWJpbGl0eSA9IHY7IH0KICAgICB2b2lkIHNldFZlcnRpY2FsQWxpZ24o
RVZlcnRpY2FsQWxpZ24gdikgeyBub25pbmhlcml0ZWRfZmxhZ3MuX3ZlcnRpY2FsX2FsaWduID0g
djsgfQotICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNl
dFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZBUihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBs
ZW5ndGgpOyB9CisgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgp
IHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxp
Z24sIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNDbGlwKGJvb2wgYiA9
IHRydWUpIHsgU0VUX1ZBUih2aXN1YWwsIGhhc0NsaXAsIGIpOyB9Ci0gICAgdm9pZCBzZXRDbGlw
TGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQsIHYpOyB9Ci0gICAg
dm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9yaWdo
dCwgdik7IH0KLSAgICB2b2lkIHNldENsaXBUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAubV90b3AsIHYpOyB9Ci0gICAgdm9pZCBzZXRDbGlwQm90dG9tKExlbmd0aCB2KSB7IFNF
VF9WQVIodmlzdWFsLCBjbGlwLm1fYm90dG9tLCB2KTsgfQorICAgIHZvaWQgc2V0Q2xpcExlZnQo
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2xlZnQsIHN0ZDo6bW92ZShs
ZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
Uih2aXN1YWwsIGNsaXAubV9yaWdodCwgc3RkOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBz
ZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV90b3AsIHN0
ZDo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIodmlzdWFsLCBjbGlwLm1fYm90dG9tLCBzdGQ6Om1vdmUobGVuZ3RoKSk7IH0K
ICAgICB2b2lkIHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9t
LCBMZW5ndGggbGVmdCk7Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBib3gpIHsgU0VUX1ZB
Uih2aXN1YWwsIGNsaXAsIGJveCk7IH0KKyAgICB2b2lkIHNldENsaXAoTGVuZ3RoQm94IGJveCkg
eyBTRVRfVkFSKHZpc3VhbCwgY2xpcCwgc3RkOjptb3ZlKGJveCkpOyB9CiAKICAgICB2b2lkIHNl
dFVuaWNvZGVCaWRpKEVVbmljb2RlQmlkaSBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29k
ZUJpZGkgPSBiOyB9CiAKQEAgLTExNDMsNyArMTE0Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZvaWQgc2V0VGV4dEluZGVudChM
ZW5ndGggdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBpbmRlbnQsIHYpOyB9CisgICAg
dm9pZCBzZXRUZXh0SW5kZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgaW5kZW50LCBzdGQ6Om1vdmUobGVuZ3RoKSk7IH0KICNpZiBFTkFCTEUoQ1NTM19URVhU
KQogICAgIHZvaWQgc2V0VGV4dEluZGVudExpbmUoVGV4dEluZGVudExpbmUgdikgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRJbmRlbnRMaW5lLCB2KTsgfQogICAgIHZvaWQgc2V0
VGV4dEluZGVudFR5cGUoVGV4dEluZGVudFR5cGUgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCBtX3RleHRJbmRlbnRUeXBlLCB2KTsgfQpAQCAtMTIxMSw5ICsxMjExLDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRNYXNrQm94SW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrQm94SW1hZ2UsIGIpOyB9CiAgICAg
dm9pZCBzZXRNYXNrQm94SW1hZ2VTb3VyY2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiB2KSB7IHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hc2tCb3hJbWFnZS5zZXRJbWFnZSh2KTsg
fQotICAgIHZvaWQgc2V0TWFza1hQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3hQb3NpdGlvbiwgbGVuZ3RoKTsgfQotICAgIHZv
aWQgc2V0TWFza1lQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbWFzay5tX3lQb3NpdGlvbiwgbGVuZ3RoKTsgfQotICAgIHZvaWQgc2V0TWFz
a1NpemUoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFz
ay5tX3NpemVMZW5ndGgsIHMpOyB9CisgICAgdm9pZCBzZXRNYXNrWFBvc2l0aW9uKExlbmd0aCBs
ZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1feFBvc2l0aW9u
LCBzdGQ6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hc2tZUG9zaXRpb24oTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV95UG9zaXRp
b24sIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFza1NpemUoTGVuZ3RoU2l6
ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3NpemVMZW5n
dGgsIHN0ZDo6bW92ZShzaXplKSk7IH0KIAogICAgIHZvaWQgc2V0Qm9yZGVyQ29sbGFwc2UoRUJv
cmRlckNvbGxhcHNlIGNvbGxhcHNlKSB7IGluaGVyaXRlZF9mbGFncy5fYm9yZGVyX2NvbGxhcHNl
ID0gY29sbGFwc2U7IH0KICAgICB2b2lkIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNob3J0
KTsKQEAgLTEyMzAsMTkgKzEyMzAsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGlzdFN0eWxl
UG9zaXRpb24oRUxpc3RTdHlsZVBvc2l0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0
eWxlX3Bvc2l0aW9uID0gdjsgfQogCiAgICAgdm9pZCByZXNldE1hcmdpbigpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgbWFyZ2luLCBMZW5ndGhCb3goRml4ZWQpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2lu
VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3RvcCwgdik7IH0KLSAg
ICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJn
aW4ubV9ib3R0b20sIHYpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX2xlZnQsIHYpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5S
aWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9yaWdodCwgdik7IH0K
KyAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQs
IG1hcmdpbi5tX3RvcCwgc3RkOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5C
b3R0b20oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9ib3R0b20s
IHN0ZDo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVu
Z3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX2xlZnQsIHN0ZDo6bW92ZShsZW5ndGgp
KTsgfQorICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBtYXJnaW4ubV9yaWdodCwgc3RkOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBz
ZXRNYXJnaW5TdGFydChMZW5ndGgpOwogICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCk7CiAK
ICAgICB2b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgTGVu
Z3RoQm94KEF1dG8pKTsgfQotICAgIHZvaWQgc2V0UGFkZGluZ0JveChjb25zdCBMZW5ndGhCb3gm
IGIpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgYik7IH0KLSAgICB2b2lkIHNldFBhZGRp
bmdUb3AoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3RvcCwgdik7IH0K
LSAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwg
cGFkZGluZy5tX2JvdHRvbSwgdik7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCB2
KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9sZWZ0LCB2KTsgfQotICAgIHZvaWQgc2V0
UGFkZGluZ1JpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdo
dCwgdik7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3goTGVuZ3RoQm94IGJveCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBwYWRkaW5nLCBzdGQ6Om1vdmUoYm94KSk7IH0KKyAgICB2b2lkIHNldFBhZGRp
bmdUb3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fdG9wLCBz
dGQ6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fYm90dG9tLCBzdGQ6Om1vdmUobGVu
Z3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgcGFkZGluZy5tX2xlZnQsIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQorICAgIHZv
aWQgc2V0UGFkZGluZ1JpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFk
ZGluZy5tX3JpZ2h0LCBzdGQ6Om1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29y
KEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2
b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBjb25zdCBJbnRQb2ludCYgaG90
U3BvdCA9IEludFBvaW50KCkpOwpAQCAtMTMwMSw3ICsxMzAxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Qm94U2l6aW5nKEVCb3hTaXppbmcgcykgeyBTRVRfVkFSKG1fYm94LCBtX2JveFNpemlu
Zywgcyk7IH0KICAgICB2b2lkIHNldEZsZXhHcm93KGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4R3JvdywgZik7IH0K
ICAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9Ci0gICAg
dm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgbGVuZ3RoKTsgfQor
ICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4QmFzaXMsIHN0ZDo6bW92
ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0T3JkZXIoaW50IG8pIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7IH0KICAgICB2b2lkIHNldEFsaWduQ29udGVudChF
QWxpZ25Db250ZW50IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkNv
bnRlbnQsIHApOyB9CiAgICAgdm9pZCBzZXRBbGlnbkl0ZW1zKEVBbGlnbkl0ZW1zIGEpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkl0ZW1zLCBhKTsgfQpAQCAtMTMyMSw3
ICsxMzIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3dTdGFydChjb25zdCBH
cmlkUG9zaXRpb24mIHJvd1N0YXJ0UG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9ncmlkSXRlbSwgbV9ncmlkUm93U3RhcnQsIHJvd1N0YXJ0UG9zaXRp
b24pOyB9CiAgICAgdm9pZCBzZXRHcmlkSXRlbVJvd0VuZChjb25zdCBHcmlkUG9zaXRpb24mIHJv
d0VuZFBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
Z3JpZEl0ZW0sIG1fZ3JpZFJvd0VuZCwgcm93RW5kUG9zaXRpb24pOyB9CiAKLSAgICB2b2lkIHNl
dE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoIGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9tYXJxdWVlLCBpbmNyZW1lbnQsIGYpOyB9CisgICAgdm9pZCBzZXRNYXJx
dWVlSW5jcmVtZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9tYXJxdWVlLCBpbmNyZW1lbnQsIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQog
ICAgIHZvaWQgc2V0TWFycXVlZVNwZWVkKGludCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fbWFycXVlZSwgc3BlZWQsIGYpOyB9CiAgICAgdm9pZCBzZXRNYXJx
dWVlRGlyZWN0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXJxdWVlLCBkaXJlY3Rpb24sIGQpOyB9CiAgICAgdm9pZCBz
ZXRNYXJxdWVlQmVoYXZpb3IoRU1hcnF1ZWVCZWhhdmlvciBiKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFycXVlZSwgYmVoYXZpb3IsIGIpOyB9CkBAIC0xMzY3
LDggKzEzNjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWdpb25CcmVha0FmdGVyKEVQYWdl
QnJlYWsgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvbkJyZWFrQWZ0
ZXIsIHApOyB9CiAgICAgdm9pZCBpbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oUmVuZGVyU3R5
bGUqIHBhcmVudCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCA9
IHBhcmVudC0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2w7IH0KICAgICB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2Zvcm0sIG1fb3BlcmF0aW9ucywgb3Bz
KTsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWChMZW5ndGggbCkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV94LCBsKTsgfQotICAg
IHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWShMZW5ndGggbCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV95LCBsKTsgfQorICAgIHZvaWQgc2V0
VHJhbnNmb3JtT3JpZ2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3gsIHN0ZDo6bW92ZShsZW5ndGgpKTsgfQor
ICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWShMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3ksIHN0ZDo6bW92ZShs
ZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9
CiAgICAgdm9pZCBzZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBzcGVhaywgcyk7IH0KICAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KQEAgLTE0
MjYsOSArMTQyNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRyYW5zZm9ybVN0eWxlM0QoRVRy
YW5zZm9ybVN0eWxlM0QgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5z
Zm9ybVN0eWxlM0QsIGIpOyB9CiAgICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoRUJhY2tm
YWNlVmlzaWJpbGl0eSBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYmFja2Zh
Y2VWaXNpYmlsaXR5LCBiKTsgfQogICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlLCBwKTsgfQotICAgIHZv
aWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5YKExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fcGVyc3BlY3RpdmVPcmlnaW5YLCBsKTsgfQotICAgIHZvaWQgc2V0UGVyc3Bl
Y3RpdmVPcmlnaW5ZKExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGVyc3BlY3RpdmVPcmlnaW5ZLCBsKTsgfQotICAgIHZvaWQgc2V0UGFnZVNpemUoTGVuZ3RoU2l6
ZSBzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemUsIHMpOyB9Cisg
ICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWCwgc3RkOjptb3ZlKGxlbmd0
aCkpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWSwgc3RkOjpt
b3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5ndGhTaXplIHNpemUpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZSwgc3RkOjptb3ZlKHNpemUp
KTsgfQogICAgIHZvaWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBlLCB0KTsgfQogICAgIHZvaWQgcmVz
ZXRQYWdlU2l6ZVR5cGUoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNp
emVUeXBlLCBQQUdFX1NJWkVfQVVUTyk7IH0KIApAQCAtMTUxNiwxMiArMTUxNiwxMiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFNoYXBlVmFsdWUqIGluaXRpYWxTaGFwZUluc2lkZSgpOwogICAgIHN0
YXRpYyBTaGFwZVZhbHVlKiBpbml0aWFsU2hhcGVPdXRzaWRlKCkgeyByZXR1cm4gMDsgfQogCi0g
ICAgTGVuZ3RoIHNoYXBlUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3NoYXBlUGFkZGluZzsgfQotICAgIHZvaWQgc2V0U2hhcGVQYWRkaW5nKExlbmd0aCBz
aGFwZVBhZGRpbmcpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZVBhZGRp
bmcsIHNoYXBlUGFkZGluZyk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHNoYXBlUGFkZGluZygpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlUGFkZGluZzsgfQorICAg
IHZvaWQgc2V0U2hhcGVQYWRkaW5nKExlbmd0aCBzaGFwZVBhZGRpbmcpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZVBhZGRpbmcsIHN0ZDo6bW92ZShzaGFwZVBhZGRpbmcp
KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNoYXBlUGFkZGluZygpIHsgcmV0dXJuIExl
bmd0aCgwLCBGaXhlZCk7IH0KIAotICAgIExlbmd0aCBzaGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luOyB9Ci0gICAgdm9pZCBzZXRT
aGFwZU1hcmdpbihMZW5ndGggc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9zaGFwZU1hcmdpbiwgc2hhcGVNYXJnaW4pOyB9CisgICAgY29uc3QgTGVuZ3RoJiBz
aGFwZU1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBl
TWFyZ2luOyB9CisgICAgdm9pZCBzZXRTaGFwZU1hcmdpbihMZW5ndGggc2hhcGVNYXJnaW4pIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZU1hcmdpbiwgc3RkOjptb3ZlKHNo
YXBlTWFyZ2luKSk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsg
cmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgKaW5kZXggODZmZDZlOTIyMjQ2N2ZkOWE2NDk0
ZWQ4NDU2MzFiNjgwMDcyMTQ1ZS4uZWJkOTQ5NWUxNGE3OGRmZTUxZTU1ODg1NWFjNzY3YmMzMjc2
YmVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEu
aApAQCAtNDMsMTYgKzQzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
byk7CiAgICAgfQogCi0gICAgTGVuZ3RoIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsg
fQotICAgIExlbmd0aCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQorICAgIGNv
bnN0IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIAotICAgIExl
bmd0aCBtaW5XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluV2lkdGg7IH0KLSAgICBMZW5ndGgg
bWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9taW5IZWlnaHQ7IH0KKyAgICBjb25zdCBMZW5n
dGgmIG1pbldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9taW5XaWR0aDsgfQorICAgIGNvbnN0IExl
bmd0aCYgbWluSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9taW5IZWlnaHQ7IH0KICAgICAKLSAg
ICBMZW5ndGggbWF4V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21heFdpZHRoOyB9Ci0gICAgTGVu
Z3RoIG1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4SGVpZ2h0OyB9CisgICAgY29uc3Qg
TGVuZ3RoJiBtYXhXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4V2lkdGg7IH0KKyAgICBjb25z
dCBMZW5ndGgmIG1heEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4SGVpZ2h0OyB9CiAgICAg
Ci0gICAgTGVuZ3RoIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsQWxp
Z247IH0KKyAgICBjb25zdCBMZW5ndGgmIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVybiBt
X3ZlcnRpY2FsQWxpZ247IH0KICAgICAKICAgICBpbnQgekluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV96SW5kZXg7IH0KICAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2hh
c0F1dG9aSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJlZmxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJlZmxlY3Rpb24uaAppbmRleCA5MzI2Y2U0Njc0NDVkYjdkY2I4YzQ4MjI1YjZmODBmMzQzMzIx
YTNlLi40NWI5M2UyMDRjYjMzOWI0YzAyMDgyZDQ0ODAyODk3YjZhZmU4MWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oCkBAIC00Niwx
MSArNDYsMTEgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJlZmxl
Y3Rpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAogICAgIENTU1JlZmxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb247IH0K
LSAgICBMZW5ndGggb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBjb25z
dCBMZW5ndGgmIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgY29uc3Qg
TmluZVBpZWNlSW1hZ2UmIG1hc2soKSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KIAogICAgIHZv
aWQgc2V0RGlyZWN0aW9uKENTU1JlZmxlY3Rpb25EaXJlY3Rpb24gZGlyKSB7IG1fZGlyZWN0aW9u
ID0gZGlyOyB9Ci0gICAgdm9pZCBzZXRPZmZzZXQoY29uc3QgTGVuZ3RoJiBsKSB7IG1fb2Zmc2V0
ID0gbDsgfQorICAgIHZvaWQgc2V0T2Zmc2V0KExlbmd0aCBvZmZzZXQpIHsgbV9vZmZzZXQgPSBz
dGQ6Om1vdmUob2Zmc2V0KTsgfQogICAgIHZvaWQgc2V0TWFzayhjb25zdCBOaW5lUGllY2VJbWFn
ZSYgaW1hZ2UpIHsgbV9tYXNrID0gaW1hZ2U7IH0KIAogcHJpdmF0ZToK
</data>
<flag name="review"
          id="234269"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>