<?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>95781</bug_id>
          
          <creation_ts>2012-09-04 14:13:36 -0700</creation_ts>
          <short_desc>[BlackBerry] Rename BlackBerry specific Texture class</short_desc>
          <delta_ts>2013-04-10 12:55:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</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>
          
          <blocked>114276</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>achicu</cc>
    
    <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>mvujovic</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711441</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-09-04 14:13:36 -0700</bug_when>
    <thetext>BlackBerry port has disabled the Texture related code in FECustomFilter which I think will prevent us from using custom filter in SVG.

We should rename the WebCore/platform/graphics/blackberry/Texture.h Texture class to LayerTexture so we can use gpu/Texture.h with FECustomFilter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872644</commentid>
    <comment_count>1</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 01:12:44 -0700</bug_when>
    <thetext>FECustomFilter no longer uses gpu/Texture but instead has a Platform3DObject. However, I still think the rename makes sense to avoid file and class name conflicts in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872652</commentid>
    <comment_count>2</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 01:33:27 -0700</bug_when>
    <thetext>No longer related to CSS Shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872668</commentid>
    <comment_count>3</comment_count>
      <attachid>197228</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 02:26:35 -0700</bug_when>
    <thetext>Created attachment 197228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872669</commentid>
    <comment_count>4</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 02:27:10 -0700</bug_when>
    <thetext>This is a straight up rename, no functional changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872704</commentid>
    <comment_count>5</comment_count>
      <attachid>197241</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-04-10 04:01:45 -0700</bug_when>
    <thetext>Created attachment 197241
Patch

This patch does not actually need to modify FECustomFilter.cpp after all (see comment above), so remove that bit from the Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872785</commentid>
    <comment_count>6</comment_count>
      <attachid>197241</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-04-10 07:37:31 -0700</bug_when>
    <thetext>Comment on attachment 197241
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873165</commentid>
    <comment_count>7</comment_count>
      <attachid>197241</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-10 12:54:58 -0700</bug_when>
    <thetext>Comment on attachment 197241
Patch

Clearing flags on attachment: 197241

Committed r148129: &lt;http://trac.webkit.org/changeset/148129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873167</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-10 12:55:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197228</attachid>
            <date>2013-04-10 02:26:35 -0700</date>
            <delta_ts>2013-04-10 04:01:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95781-20130410112614.patch</filename>
            <type>text/plain</type>
            <size>52161</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJhMmU0NjI3OTAwZDEz
NTQyNGE0NzJlZTA4MWJmY2JkZjM4ZDIyOS4uOGI5YTRjOGYzMzQ4MDVkZTNlYjFiNmE3NTdjYWFh
NjNiYmUwMWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wNC0xMCAgQXJ2
aWQgTmlsc3NvbiAgPGFuaWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFJl
bmFtZSBCbGFja0JlcnJ5IHNwZWNpZmljIFRleHR1cmUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzgxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGV4dHVyZSB3YXMgYSBiaXQgdG9vIGdlbmVy
aWMgYW5kIHByb25lIHRvIG5hbWUgY29uZmxpY3RzLiBSZW5hbWVkIGl0CisgICAgICAgIHRvIExh
eWVyVGV4dHVyZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IsIG5vIG5ldyB0ZXN0
cy4KKworICAgICAgICBQUiAzMjI4ODIKKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5j
bWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9z
aXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6ZHJhd1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6Y29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaDoKKyAgICAgICAgKExheWVyQ29tcG9zaXRpbmdU
aHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21w
b3NpdGluZ1RocmVhZENsaWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojpjb250ZW50c1RleHR1cmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5k
ZXJlci5oOgorICAgICAgICAoTGF5ZXJGaWx0ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6OnRleHR1cmUpOgorICAgICAgICAoTGF5ZXJS
ZW5kZXJlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUZXh0dXJlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZS5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6TGF5ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGV4dHVyZTo6fkxheWVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVy
ZTo6c2V0Q29udGVudHNUb0NvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6
cHJvdGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRl
eHR1cmUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvVGV4dHVyZS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjp0ZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUZXh0dXJlOjppc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6
aGFzVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmlzQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjppc09wYXF1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRleHR1cmU6OmlzUHJvdGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZTo6cHJvdGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnVucHJv
dGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRl
eHR1cmU6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmJ5dGVzUGVy
UGl4ZWwpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpzaXplSW5CeXRlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnNldFRleHR1cmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmU6OnNldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGls
ZTo6c2V0Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxlOjp1cGRhdGVDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGU6OnNldFRleHR1cmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGU6OnRleHR1cmUpOgorICAgICAgICAoTGF5ZXJUaWxlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUaWxlcjo6ZHJhd1RpbGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUaWxlcjo6Y29udGVudHNUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyVGlsZXIuaDoKKyAgICAgICAgKExheWVyVGlsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUaWxlcjo6VGV4dHVyZUpvYjo6VGV4dHVyZUpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjpzZXRDb250ZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAg
IChUZXh0dXJlSm9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1Rl
eHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVQcm90ZWN0b3I6OlRleHR1cmVQcm90ZWN0b3IpOgorICAgICAgICAoVGV4dHVyZVByb3RlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6YWxs
b2NhdGVUZXh0dXJlSWQpOgorICAgICAgICAoV2ViQ29yZTo6ZnJlZVRleHR1cmVJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZVJlc2l6
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRl
eHR1cmVTaXplSW5CeXRlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnJlc2l6ZVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmV2aWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlQWNjZXNz
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnBy
dW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0
ZXh0dXJlRm9yVGlsZWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVD
b21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZUZvckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmNy
ZWF0ZVRleHR1cmUpOgorICAgICAgICAoVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OlpvbWJpZVRl
eHR1cmU6OlpvbWJpZVRleHR1cmUpOgorICAgICAgICAoWm9tYmllVGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUN1c3RvbUZpbHRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUN1c3RvbUZpbHRlcjo6YXBwbHlTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RkVDdXN0b21GaWx0ZXI6OnJlc2l6ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RkVD
dXN0b21GaWx0ZXI6OmJpbmRQcm9ncmFtQW5kQnVmZmVycyk6CisKIDIwMTMtMDQtMDkgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJd
IHBsYXliaW4gdXJpIGdldHRlciBpcyBpbnZhbGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwppbmRleCBjZDljOTNiY2NiY2ZiZDIxZjE4ZmVkZTVmYmMzMTAxZmZjOTgxNmY1Li44ZjYzMzQz
ZGI3M2EyMjgxMzlhMGU3ZTcxOTQ4MDUwYTA0NTZkZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0wNC0xMCAgQXJ2aWQgTmlsc3NvbiAgPGFu
aWxzc29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIFJlbmFtZSBCbGFja0JlcnJ5
IHNwZWNpZmljIFRleHR1cmUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NzgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGV4dHVyZSB3YXMgYSBiaXQgdG9vIGdlbmVyaWMgYW5kIHByb25lIHRv
IG5hbWUgY29uZmxpY3RzLiBSZW5hbWVkIGl0CisgICAgICAgIHRvIExheWVyVGV4dHVyZS4KKwor
ICAgICAgICBQUiAzMjI4ODIKKworICAgICAgICAqIEFwaS9XZWJPdmVybGF5LmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJlYWRD
bGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQpOgorICAgICAgICAqIEFwaS9XZWJPdmVybGF5
X3AuaDoKKyAgICAgICAgKFdlYk92ZXJsYXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50KToK
KwogMjAxMy0wNC0wOSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgogCiAgICAgICAg
IFtCbGFja0JlcnJ5XSBNYWluIHBhZ2UgaXMgcmVuZGVyZWQgYXQgd3JvbmcgbGFyZ2Ugc2NhbGUg
YWZ0ZXIgYmFjayBmcm9tIGFueSB6b29taW5nIGFydGljbGUgYXQgcmVhZC50aGVzdGFyLmNvbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGU3OTMxMjIzMjRmMjIw
ZjUzZWZiMmQzN2RiNzEyYmVhZTI0MmEzYjYuLmY3NjY3ZWU1Y2UxYWQzOTEwNzc1MGU3ZWRjYmU1
NWU1OTNkZGI5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAg
LTI0MiwxMSArMjQyLDExIEBAIGlmIChXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RmlsdGVyUmVuZGVyZXIuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0v
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAKKyAg
ICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRl
eHR1cmUuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlLmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCiAgICAgICAg
ICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvUGx1Z2luTGF5ZXJX
ZWJLaXRUaHJlYWQuY3BwCi0gICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvVGV4dHVyZS5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAKICAg
ICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9XZWJHTExh
eWVyV2ViS2l0VGhyZWFkLmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZC5jcHAKaW5kZXggZDMzOWRkMGQxZWI0N2VhMjIxYjE1NzBmZTVhOTBjM2I1M2MyZDk4NC4uMGE0
MDBmOTcxN2U4NTA0ZjIwMjMyMDhiMzkyNTMzMWYzMzdmM2NkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBMYXll
ckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFjZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd1RyYW5zZm8KICAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOwogCiAgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+bGF5ZXJBbHJlYWR5T25TdXJm
YWNlKHRoaXMpKSB7Ci0gICAgICAgIFRleHR1cmUqIHN1cmZhY2VUZXh0dXJlID0gbGF5ZXJSZW5k
ZXJlclN1cmZhY2UoKS0+dGV4dHVyZSgpOworICAgICAgICBMYXllclRleHR1cmUqIHN1cmZhY2VU
ZXh0dXJlID0gbGF5ZXJSZW5kZXJlclN1cmZhY2UoKS0+dGV4dHVyZSgpOwogICAgICAgICBpZiAo
IXN1cmZhY2VUZXh0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIExheWVyQ29tcG9zaXRp
bmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1hc2spIHsKLSAgICAgICAgICAgIFRleHR1
cmUqIG1hc2tUZXh0dXJlID0gbWFzay0+Y29udGVudHNUZXh0dXJlKCk7CisgICAgICAgICAgICBM
YXllclRleHR1cmUqIG1hc2tUZXh0dXJlID0gbWFzay0+Y29udGVudHNUZXh0dXJlKCk7CiAgICAg
ICAgICAgICBpZiAobWFza1RleHR1cmUpIHsKICAgICAgICAgICAgICAgICBHTHVpbnQgbWFza1Rl
eElEID0gcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQ+KHBsYXRmb3JtQnVmZmVySGFuZGxlKG1hc2tU
ZXh0dXJlLT50ZXh0dXJlSWQoKSkpOwogCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpCiAgICAgICAg
IG1fY2xpZW50LT51cGxvYWRUZXh0dXJlc0lmTmVlZGVkKHRoaXMpOwogfQogCi1UZXh0dXJlKiBM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjpjb250ZW50c1RleHR1cmUoKQorTGF5ZXJUZXh0dXJlKiBM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjpjb250ZW50c1RleHR1cmUoKQogewogICAgIGlmIChtX2Ns
aWVudCkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZW50c1RleHR1cmUodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyQ29tcG9zaXRpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCmluZGV4IGNjMDE0YTcwY2Y0MzU5
ZDkxMjU3MmJhNTIyNDU1OTk1NGMxOGY5ZDAuLjhkNWM4ODgxNTM2ZmM2ODQ5MmM3MjVmYTEwMDZh
MTE5ZDM0MDY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBoYXZl
IGFuIGFuaW1hdGlvbgogICAgIGJvb2wgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgY3VycmVudFRp
bWUpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKTsKLSAgICBUZXh0
dXJlKiBjb250ZW50c1RleHR1cmUoKTsKKyAgICBMYXllclRleHR1cmUqIGNvbnRlbnRzVGV4dHVy
ZSgpOwogCiAgICAgY29uc3QgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcm9vdExheWVyKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTdWJsYXllcnMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBv
c2l0aW5nVGhyZWFkPiA+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZENsaWVudC5oCmluZGV4IGNjN2JmM2JiZWI4ZjM5MWU3ZDNlM2E0ODA5MDk3YWQ2MjNkODQx
MTMuLjMxODc4ZjRhY2E0NjRiZGM1NDAwNzZhODkzOWI0NmFiOGQyZmY4NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5oCkBAIC0zMSw3ICszMSw3
IEBAIGNsYXNzIEdMRVMyUHJvZ3JhbTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGF5
ZXJDb21wb3NpdGluZ1RocmVhZDsKLWNsYXNzIFRleHR1cmU7CitjbGFzcyBMYXllclRleHR1cmU7
CiAKIGNsYXNzIExheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQgewogcHVibGljOgpAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmVzKExheWVy
Q29tcG9zaXRpbmdUaHJlYWQqKSA9IDA7CiAKICAgICAvLyBPcHRpb25hbC4gQWxsb3dzIGxheWVy
cyB0byBzZXJ2ZSBhcyBhIG1hc2sgZm9yIG90aGVyIGxheWVycwotICAgIHZpcnR1YWwgVGV4dHVy
ZSogY29udGVudHNUZXh0dXJlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKSB7IHJldHVybiAwOyB9
CisgICAgdmlydHVhbCBMYXllclRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0
aW5nVGhyZWFkKikgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gT3B0aW9uYWwuIEFsbG93IHRoZSBs
YXllciB0byBjb21taXQgdGhyZWFkIHNlbnNpdGl2ZSBjb250ZW50IGR1cmluZyBhIHN5bmMgcG9p
bnQKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0UGVuZGluZ1RleHR1cmVVcGxvYWRzKExheWVyQ29t
cG9zaXRpbmdUaHJlYWQqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3Bw
CmluZGV4IGIyYzI5MTg5YjU2ODc2ZDRiNTllMzE1NTU5MzA3NjIwMmNhZDA1NjMuLmYxZmRmMDg3
MDg3OTNiZWFmNTk1NWNjNmFhZDRlOWZmMWVlNjZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZp
bHRlclJlbmRlcmVyLmNwcApAQCAtNzE5LDcgKzcxOSw3IEBAIHZvaWQgTGF5ZXJGaWx0ZXJSZW5k
ZXJlcjo6YXBwbHlBY3Rpb25zKHVuc2lnbmVkJiBmYm8sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
IGxhCiAgICAgICAgIC8vIGFjdGlvbnNGb3JPcGVyYXRpb25zIHRha2VzIGNhcmUgb2YgdGhhdC4K
IAogICAgICAgICBpZiAoYWN0aW9uc1tpXS0+c2hvdWxkUHVzaFNuYXBzaG90KCkpIHsKLSAgICAg
ICAgICAgIFJlZlB0cjxUZXh0dXJlPiBjdXJyZW50VGV4dHVyZSA9ICghKGkgJSAyKSA/IHN1cmZh
Y2UtPnRleHR1cmUoKSA6IG1fdGV4dHVyZSk7CisgICAgICAgICAgICBSZWZQdHI8TGF5ZXJUZXh0
dXJlPiBjdXJyZW50VGV4dHVyZSA9ICghKGkgJSAyKSA/IHN1cmZhY2UtPnRleHR1cmUoKSA6IG1f
dGV4dHVyZSk7CiAgICAgICAgICAgICBHTHVpbnQgdGV4aWQgPSByZWludGVycHJldF9jYXN0PEdM
dWludD4ocGxhdGZvcm1CdWZmZXJIYW5kbGUoY3VycmVudFRleHR1cmUtPnRleHR1cmVJZCgpKSk7
CiAgICAgICAgICAgICBpZiAoIXRleGlkKSB7CiAgICAgICAgICAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpsb2NrQW5kQmluZEJ1ZmZlckdMVGV4dHVyZShjdXJyZW50VGV4
dHVyZS0+dGV4dHVyZUlkKCksIEdMX1RFWFRVUkVfMkQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVy
UmVuZGVyZXIuaAppbmRleCAzYjI4ZDA4YWI0N2Y5N2Y0MTcxM2FjYzU2ZDhiZjllZWE2ZmQzYTE0
Li5mMTFlYjcyZDI1OTQwYmU3YmQ3MGE4Y2M4NDRmMDQ5OWViYmQ5ODIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyRmlsdGVyUmVuZGVyZXIuaApAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyRGF0YS5oIgotI2luY2x1ZGUgIlRleHR1cmUuaCIKKyNp
bmNsdWRlICJMYXllclRleHR1cmUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR0xFUzJDb250ZXh0Lmg+CkBAIC0yNTYs
OCArMjU2LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9vZmZzZXRMb2NhdGlvbjsKIAogICAgIC8v
IFRleHR1cmVzIGZvciBwbGF5aW5nIHBpbmctcG9uZyAtIHNlZSBub3RlIGluIGFwcGx5QWN0aW9u
cygpCi0gICAgUmVmUHRyPFRleHR1cmU+IG1fdGV4dHVyZTsKLSAgICBSZWZQdHI8VGV4dHVyZT4g
bV9zbmFwc2hvdFRleHR1cmU7CisgICAgUmVmUHRyPExheWVyVGV4dHVyZT4gbV90ZXh0dXJlOwor
ICAgIFJlZlB0cjxMYXllclRleHR1cmU+IG1fc25hcHNob3RUZXh0dXJlOwogCiAgICAgZnJpZW5k
IGNsYXNzIExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJl
bmRlcmVyU3VyZmFjZS5oCmluZGV4IDIwYmNmYWQ2Yzk2YjUwY2QyOGU1NThiZDAxMmQ1Y2ZiMTU1
ZTkxMTQuLmVmOWQ2OTE1OTdlMzRjZmQzYzllZDE1MTRmYjRjYTVlNzgwMGVhYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5k
ZXJlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgotI2luY2x1ZGUgIlRleHR1cmUuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
NCwxMyArNTQsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBlbnN1cmVUZXh0dXJlKCk7CiAgICAg
dm9pZCByZWxlYXNlVGV4dHVyZSgpOwotICAgIFRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKyAgICBMYXllclRleHR1cmUqIHRleHR1cmUoKSBjb25z
dCB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KIAogICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkg
eyByZXR1cm4gbV9vcGFjaXR5OyB9CiAgICAgdm9pZCBzZXREcmF3T3BhY2l0eShmbG9hdCBvcGFj
aXR5KSB7IG1fb3BhY2l0eSA9IG9wYWNpdHk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8VGV4
dHVyZT4gbV90ZXh0dXJlOworICAgIFJlZlB0cjxMYXllclRleHR1cmU+IG1fdGV4dHVyZTsKIAog
ICAgIEZsb2F0UmVjdCBtX2NvbnRlbnRSZWN0OwogICAgIEZsb2F0UmVjdCBtX2NsaXBSZWN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRleHR1cmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkYmM1MzAxNDRkZmU1Y2VhNWFmMTM2
MzVjMTcwMjBmNmQxODMwYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAKQEAgLTAsMCArMSwxMDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5oIgorCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJJbnRS
ZWN0LmgiCisjaW5jbHVkZSAiVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaCIKKworI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPEdM
RVMyL2dsMi5oPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0xheWVyVGV4dHVyZTo6TGF5
ZXJUZXh0dXJlKGJvb2wgaXNDb2xvcikKKyAgICA6IG1fcHJvdGVjdGlvbkNvdW50KDApCisgICAg
LCBtX2hhbmRsZSgwKQorICAgICwgbV9pc0NvbG9yKGlzQ29sb3IpCisgICAgLCBtX2lzT3BhcXVl
KGZhbHNlKQorICAgICwgbV9idWZmZXJTaXplSW5CeXRlcygwKQoreworICAgIHRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkKCktPmluc3RhbGwodGhpcywgSW50U2l6ZSgpLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOworfQorCitMYXllclRl
eHR1cmU6On5MYXllclRleHR1cmUoKQoreworICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkKCktPnRleHR1cmVEZXN0cm95ZWQodGhpcyk7Cit9CisKK3ZvaWQgTGF5ZXJUZXh0dXJlOjp1
cGRhdGVDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlLCBib29sIGlzT3BhcXVl
KQoreworICAgIGlmIChtX2hhbmRsZSkKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpkZXN0cm95QnVmZmVyKG1faGFuZGxlKTsKKyAgICBtX2hhbmRsZSA9IGNvbnRlbnRz
OworICAgIHNpemVfdCBuZXdCdWZmZXJTaXplSW5CeXRlcyA9IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6YnVmZmVyU2l6ZUluQnl0ZXMobV9oYW5kbGUpOworICAgIHRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVTaXplSW5CeXRlc0NoYW5nZWQodGhpcywgbmV3
QnVmZmVyU2l6ZUluQnl0ZXMgLSBtX2J1ZmZlclNpemVJbkJ5dGVzKTsKKyAgICBtX2J1ZmZlclNp
emVJbkJ5dGVzID0gbmV3QnVmZmVyU2l6ZUluQnl0ZXM7Cit9CisKK3ZvaWQgTGF5ZXJUZXh0dXJl
OjpzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faXNPcGFx
dWUgPSAhY29sb3IuaGFzQWxwaGEoKTsKKyAgICBSR0JBMzIgcmdiYSA9IGNvbG9yLnJnYigpOwor
CisgICAgaWYgKG1faGFuZGxlKQorICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OmRlc3Ryb3lCdWZmZXIobV9oYW5kbGUpOworCisgICAgbV9oYW5kbGUgPSBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZUJ1ZmZlcihJbnRTaXplKDEsIDEpLCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOworICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGdjID0g
bG9ja0J1ZmZlckRyYXdhYmxlKG1faGFuZGxlKTsKKyAgICBnYy0+c2V0RmlsbENvbG9yKHJnYmEp
OworICAgIGdjLT5hZGRGaWxsUmVjdChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmxvYXRSZWN0KDAs
IDAsIDEsIDEpKTsKKyAgICByZWxlYXNlQnVmZmVyRHJhd2FibGUobV9oYW5kbGUpOworCisgICAg
SW50U2l6ZSBvbGRTaXplID0gbV9zaXplOworICAgIG1fc2l6ZSA9IEludFNpemUoMSwgMSk7Cisg
ICAgaWYgKG1fc2l6ZSAhPSBvbGRTaXplKQorICAgICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZCgpLT50ZXh0dXJlUmVzaXplZCh0aGlzLCBvbGRTaXplKTsKK30KKworYm9vbCBMYXll
clRleHR1cmU6OnByb3RlY3QoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCit7CisgICAgaWYgKCFoYXNUZXh0dXJlKCkp
IHsKKyAgICAgICAgLy8gV2UgbWF5IGhhdmUgYmVlbiBldmljdGVkIGJ5IHRoZSBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZCwKKyAgICAgICAgLy8gYXR0ZW1wdCB0byBpbnN0YWxsIHVzIGFn
YWluLgorICAgICAgICBpZiAoIXRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPmluc3Rh
bGwodGhpcywgc2l6ZSwgdHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgKyttX3Byb3RlY3Rpb25Db3VudDsKKworICAgIGlmIChtX3NpemUgPT0gc2l6ZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgp
LT5yZXNpemVUZXh0dXJlKHRoaXMsIHNpemUsIHR5cGUpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4NmE1M2QyZTE1NzRk
NDYxMDViNjVlMzE0NThkYWIxMDMyYWFjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5oCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpZm5kZWYgTGF5ZXJUZXh0dXJlX2gKKyNkZWZpbmUgTGF5ZXJUZXh0dXJlX2gKKworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvbG9yOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIFRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOworCisvLyBMYXllclRleHR1cmUgZW5jYXBzdWxhdGVzIGEgdm9sYXRp
bGUgdGV4dHVyZSAtIGF0IGFueSB0aW1lLCB0aGUgdW5kZXJseWluZyBPcGVuR0wKKy8vIHRleHR1
cmUgbWF5IGJlIGRlbGV0ZWQgYnkgdGhlIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLiBU
aGUgdXNlciBtdXN0CisvLyBjaGVjayB1c2luZyBMYXllclRleHR1cmU6OmlzRGlydHkoKSBpbW1l
ZGlhdGVseSBiZWZvcmUgdXNpbmcgaXQsIGV2ZXJ5IHRpbWUuCisvLyBUaGUgb25seSB3YXkgdG8g
cHJldmVudCBldmljdGlvbiB0aGlzIGlzIHRvIGNhbGwgTGF5ZXJUZXh0dXJlOjpwcm90ZWN0KCku
CisvLyBJZiB0aGUgdGV4dHVyZSBpc0RpcnR5KCksIHlvdSBtdXN0IHVwZGF0ZUNvbnRlbnRzKCkg
YmVmb3JlIHlvdSBjYW4gdXNlIGl0LgorY2xhc3MgTGF5ZXJUZXh0dXJlIDogcHVibGljIFJlZkNv
dW50ZWQ8TGF5ZXJUZXh0dXJlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGF5
ZXJUZXh0dXJlPiBjcmVhdGUoYm9vbCBpc0NvbG9yID0gZmFsc2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExheWVyVGV4dHVyZShpc0NvbG9yKSk7CisgICAgfQorCisgICAg
fkxheWVyVGV4dHVyZSgpOworCisgICAgdHlwZWRlZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJ1ZmZlciogR3B1SGFuZGxlOworICAgIHR5cGVkZWYgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpCdWZmZXIqIEhvc3RUeXBlOworCisgICAgR3B1SGFuZGxlIHRleHR1cmVJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFuZGxlOyB9CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3Qg
eyByZXR1cm4gIW1faGFuZGxlOyB9CisgICAgYm9vbCBoYXNUZXh0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGU7IH0KKworICAgIGJvb2wgaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faXND
b2xvcjsgfQorICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX2lzT3BhcXVlOyB9
CisKKyAgICBib29sIGlzUHJvdGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0aW9uQ291
bnQgPiAwOyB9CisgICAgdm9pZCBwcm90ZWN0KCkgeyArK21fcHJvdGVjdGlvbkNvdW50OyB9Cisg
ICAgdm9pZCB1bnByb3RlY3QoKSB7IC0tbV9wcm90ZWN0aW9uQ291bnQ7IH0KKworICAgIC8vIFRo
aXMgd2lsbCBlbnN1cmUgdGhlIHRleHR1cmUgaGFzIGJhY2tpbmcgd2l0aCB0aGUgc3BlY2lmaWVk
IHNpemUKKyAgICBib29sIHByb3RlY3QoY29uc3QgSW50U2l6ZSYsIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0
IEhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRS
ZWN0JiB0aWxlLCBib29sIGlzT3BhcXVlKTsKKyAgICB2b2lkIHNldENvbnRlbnRzVG9Db2xvcihj
b25zdCBDb2xvciYpOworCisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KKyAg
ICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9CisgICAgc3Rh
dGljIGludCBieXRlc1BlclBpeGVsKCkgeyByZXR1cm4gNDsgfQorCisgICAgc2l6ZV90IHNpemVJ
bkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplSW5CeXRlczsgfQorCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDsKKworICAg
IExheWVyVGV4dHVyZShib29sIGlzQ29sb3IgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRUZXh0dXJl
SWQoR3B1SGFuZGxlIGlkKQorICAgIHsKKyAgICAgICAgbV9oYW5kbGUgPSBpZDsKKworICAgICAg
ICAvLyBXZSBhc3N1bWUgaXQgaXMgYSBuZXdseSBhbGxvY2F0ZWQgdGV4dHVyZSwKKyAgICAgICAg
Ly8gYW5kIHRodXMgZW1wdHksIG9yIDAsIHdoaWNoIHdvdWxkIG9mIGNvdXJzZQorICAgICAgICAv
LyBiZSBlbXB0eS4KKyAgICAgICAgbV9zaXplID0gSW50U2l6ZSgpOworICAgICAgICBtX2J1ZmZl
clNpemVJbkJ5dGVzID0gMDsKKyAgICB9CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CisKKyAgICBpbnQgbV9wcm90ZWN0aW9uQ291bnQ7
CisgICAgR3B1SGFuZGxlIG1faGFuZGxlOworICAgIEludFNpemUgbV9zaXplOworICAgIGJvb2wg
bV9pc0NvbG9yOworICAgIGJvb2wgbV9pc09wYXF1ZTsKKyAgICBzaXplX3QgbV9idWZmZXJTaXpl
SW5CeXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIExheWVyVGV4dHVyZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
VGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZS5jcHAKaW5kZXggOTJiNDRmZDUxMWU0ZjA1NDk5MzYyMzc5NWE2ZWJhYTJiMDU5MmVm
NS4uMGQ5NzNhZjE0NjM3ZTlhNTlmNTA3MWRkOTZlNzRmOTJmZjk2ZWVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJU
aWxlLmNwcApAQCAtMzksNyArMzksNyBAQCBMYXllclRpbGU6On5MYXllclRpbGUoKQogICAgIHNl
dFZpc2libGUoZmFsc2UpOwogfQogCi12b2lkIExheWVyVGlsZTo6c2V0Q29udGVudHMoY29uc3Qg
VGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBpc09wYXF1ZSkKK3ZvaWQgTGF5ZXJUaWxlOjpzZXRD
b250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgsIGJvb2wgaXNPcGFxdWUpCiB7
CiAgICAgc2V0VGV4dHVyZSh0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJl
Rm9yVGlsZWRDb250ZW50cyhjb250ZW50cywgdGlsZVJlY3QsIGluZGV4LCBpc09wYXF1ZSkpOwog
fQpAQCAtNDksNyArNDksNyBAQCB2b2lkIExheWVyVGlsZTo6c2V0Q29udGVudHNUb0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKICAgICBzZXRUZXh0dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkKCktPnRleHR1cmVGb3JDb2xvcihjb2xvcikpOwogfQogCi12b2lkIExheWVyVGlsZTo6
dXBkYXRlQ29udGVudHMoY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBib29sIGlzT3BhcXVl
KQordm9pZCBMYXllclRpbGU6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9z
dFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3Qm
IHRpbGVSZWN0LCBib29sIGlzT3BhcXVlKQogewogICAgIHNldFRleHR1cmUodGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQoKS0+dXBkYXRlQ29udGVudHMobV90ZXh0dXJlLCBjb250ZW50cywg
ZGlydHlSZWN0LCB0aWxlUmVjdCwgaXNPcGFxdWUpKTsKIH0KQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBMYXllclRpbGU6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgICAgICBtX3RleHR1cmUt
PnVucHJvdGVjdCgpOwogfQogCi12b2lkIExheWVyVGlsZTo6c2V0VGV4dHVyZShQYXNzUmVmUHRy
PFRleHR1cmU+IHRleHR1cmUpCit2b2lkIExheWVyVGlsZTo6c2V0VGV4dHVyZShQYXNzUmVmUHRy
PExheWVyVGV4dHVyZT4gdGV4dHVyZSkKIHsKICAgICAvLyBDbGVhciB0aGlzIGZsYWcgcmVnYXJk
bGVzcyBvZiB0aGUgdmFsdWUgb2YgdGhlIHRleHR1cmUgcGFyYW1ldGVyLgogICAgIC8vIElmIGl0
J3MgMCwgaXNEaXJ0eSgpIHdpbGwgcmV0dXJuIHRydWUgYW55d2F5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmgKaW5k
ZXggYzhiNzhmODFhNGY0Y2E3YTM3MTRlMjkyOTdlMGQ1MWU2MjgyZTg5OC4uMjg2MDgxN2FhNjU0
N2U0YjY1MDNiMTFhMTQzOTRkZTE2OGZkMjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oCkBAIC0yMSw3ICsy
MSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJU
ZXh0dXJlLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIExheWVyVGlsZSgpOwogICAg
IH5MYXllclRpbGUoKTsKIAotICAgIFRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KKyAgICBMYXllclRleHR1cmUqIHRleHR1cmUoKSBjb25zdCB7IHJl
dHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV92aXNpYmxlOyB9CiAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwpAQCAtNDYsOSAr
NDYsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmUgJiYgbV90ZXh0dXJlLT5oYXNUZXh0dXJlKCk7IH0KIAotICAgIHZvaWQgc2V0Q29u
dGVudHMoY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiwgYm9vbCBpc09wYXF1ZSk7CisgICAgdm9pZCBzZXRD
b250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYsIGJvb2wgaXNPcGFxdWUpOwogICAgIHZv
aWQgc2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCB1cGRhdGVDb250
ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUpOworICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wg
aXNPcGFxdWUpOwogICAgIHZvaWQgZGlzY2FyZENvbnRlbnRzKCk7CiAKICAgICAvLyBUaGUgY3Vy
cmVudCB0ZXh0dXJlIGlzIGFuIGFjY3VyYXRlIHByZXZpZXcgb2YgdGhpcyBsYXllciwgYnV0IGEg
bW9yZQpAQCAtNjQsMTAgKzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbmRlckRvbmUo
KSB7IG1fbmVlZHNSZW5kZXIgPSBEb2VzTm90TmVlZFJlbmRlcjsgfQogCiBwcml2YXRlOgotICAg
IHZvaWQgc2V0VGV4dHVyZShQYXNzUmVmUHRyPFRleHR1cmU+KTsKKyAgICB2b2lkIHNldFRleHR1
cmUoUGFzc1JlZlB0cjxMYXllclRleHR1cmU+KTsKIAogICAgIC8vIE5ldmVyIGFzc2lnbiB0byBt
X3RleHR1cmUgZGlyZWN0bHksIHVzZSBzZXRUZXh0dXJlKCkgYWJvdmUuCi0gICAgUmVmUHRyPFRl
eHR1cmU+IG1fdGV4dHVyZTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiBtX3RleHR1cmU7CiAg
ICAgYm9vbCBtX2NvbnRlbnRzRGlydHkgOiAxOwogICAgIGJvb2wgbV92aXNpYmxlIDogMTsKICAg
ICB1bnNpZ25lZCBtX25lZWRzUmVuZGVyIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCmluZGV4IDVk
MDgwZDBkYjhlODFlZmQ2ODdmNTcyODgwYzZjN2U0OTE4MjEyNWEuLmNhMTQ1ZmUyZmVmZGEzZTc0
NzNlNmJkZjNmZDc2MDUxZDU3NmQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcApAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQo
ZG91YmxlIHNjYWxlKQogICAgICAgICAgICAgICAgIC8vIHByZXZpZXcuCiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IHRoZSB6b29tIHByZXZpZXcgb25seSB3b3JrcyBpZiB3ZSBkb24ndCByZS10
aWxlIHRoZQogICAgICAgICAgICAgICAgIC8vIGxheWVyLiBXZSBuZWVkIHRvIHN0b3JlIHRleHR1
cmUgY29vcmRpbmF0ZXMgaW4KLSAgICAgICAgICAgICAgICAvLyBXZWJDb3JlOjpUZXh0dXJlIHRv
IGJlIGFibGUgdG8gZml4IHRoYXQuCisgICAgICAgICAgICAgICAgLy8gV2ViQ29yZTo6TGF5ZXJU
ZXh0dXJlIHRvIGJlIGFibGUgdG8gZml4IHRoYXQuCiAgICAgICAgICAgICAgICAgaWYgKGRpZFJl
c2l6ZSAmJiAhKGlzWm9vbUpvYiAmJiB3YXNPbmVUaWxlICYmIGlzT25lVGlsZSkpCiAgICAgICAg
ICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6ZGlzY2FyZENvbnRlbnRzKHRp
bGVSZWN0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtNDkyLDcgKzQ5Miw3IEBAIGJvb2wg
TGF5ZXJUaWxlcjo6ZHJhd1RpbGUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIGRvdWJs
ZSBzY2FsZSwgY29uc3QgVGlsCiAKICAgICBpZiAodmlzaWJsZSkgewogICAgICAgICBpZiAodGls
ZS0+aGFzVGV4dHVyZSgpKSB7Ci0gICAgICAgICAgICBUZXh0dXJlKiB0ZXh0dXJlID0gdGlsZS0+
dGV4dHVyZSgpOworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlID0gdGlsZS0+dGV4
dHVyZSgpOwogICAgICAgICAgICAgdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4
dHVyZUFjY2Vzc2VkKHRleHR1cmUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRHJhd1RpbGUp
IHsKQEAgLTY3MSw3ICs2NzEsNyBAQCBJbnRSZWN0IExheWVyVGlsZXI6OnJlY3RGb3JUaWxlKGNv
bnN0IFRpbGVJbmRleCYgaW5kZXgsIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICByZXR1cm4g
SW50UmVjdChvcmlnaW4sIHNpemUpOwogfQogCi1UZXh0dXJlKiBMYXllclRpbGVyOjpjb250ZW50
c1RleHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopCitMYXllclRleHR1cmUqIExheWVyVGls
ZXI6OmNvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKIHsKICAgICBBU1NF
UlQobV90aWxlcy5zaXplKCkgPT0gMSk7CiAgICAgaWYgKG1fdGlsZXMuc2l6ZSgpICE9IDEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5oCmluZGV4IGRlMjRmMmQ4NDQwM2Q0ODlhMmZkN2RiNTRiMzU2NzZmZjVjOTFj
Y2UuLjUyYWQ1YjM3YjBjMmU2OTg3ZjNjYTBlMjYxOWE1NTcyOTI3ZDI5OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJU
aWxlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJD
b21wb3NpdGluZ1RocmVhZERlc3Ryb3llZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CiAgICAg
dmlydHVhbCB2b2lkIGxheWVyVmlzaWJpbGl0eUNoYW5nZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZCosIGJvb2wgdmlzaWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmVzSWZOZWVk
ZWQoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOwotICAgIHZpcnR1YWwgVGV4dHVyZSogY29udGVu
dHNUZXh0dXJlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKKyAgICB2aXJ0dWFsIExheWVyVGV4
dHVyZSogY29udGVudHNUZXh0dXJlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1RleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqLCBkb3VibGUgc2Nh
bGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJQcm9ncmFtJik7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmVzKExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
KTsKICAgICBzdGF0aWMgdm9pZCB3aWxsQ29tbWl0KCk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IERpc2NhcmRDb250ZW50cyB8fCB0eXBl
ID09IERpcnR5Q29udGVudHMpOwogICAgICAgICB9CiAKLSAgICAgICAgVGV4dHVyZUpvYihUeXBl
IHR5cGUsIGNvbnN0IFRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0LCBib29sIGlzT3BhcXVlKQorICAgICAgICBUZXh0dXJlSm9iKFR5cGUgdHlwZSwg
Y29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgYm9vbCBpc09wYXF1ZSkKICAgICAgICAgICAgIDogbV90eXBlKHR5cGUpCiAgICAg
ICAgICAgICAsIG1fY29udGVudHMoY29udGVudHMpCiAgICAgICAgICAgICAsIG1faXNPcGFxdWUo
aXNPcGFxdWUpCkBAIC0xMjEsMTIgKzEyMSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gU2V0Q29udGVudHNUb0NvbG9yKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzKGNvbnN0IFRleHR1cmU6Okhvc3RUeXBlJiBjb250
ZW50cywgY29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0LCBib29sIGlzT3BhcXVlKQorICAgICAg
ICBzdGF0aWMgVGV4dHVyZUpvYiBzZXRDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RU
eXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0LCBib29sIGlzT3BhcXVl
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gVGV4dHVyZUpvYihTZXRDb250ZW50cywg
Y29udGVudHMsIGNvbnRlbnRzUmVjdCwgaXNPcGFxdWUpOwogICAgICAgICB9CiAgICAgICAgIHN0
YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IFRpbGVJbmRleCYgaW5kZXgpIHsgcmV0dXJuIFRleHR1cmVKb2IoU2V0Q29udGVudHNUb0Nv
bG9yLCBjb2xvciwgaW5kZXgpOyB9Ci0gICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHVwZGF0ZUNv
bnRlbnRzKGNvbnN0IFRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0LCBib29sIGlzT3BhcXVlKSB7IHJldHVybiBUZXh0dXJlSm9iKFVwZGF0ZUNvbnRl
bnRzLCBjb250ZW50cywgZGlydHlSZWN0LCBpc09wYXF1ZSk7IH0KKyAgICAgICAgc3RhdGljIFRl
eHR1cmVKb2IgdXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29u
dGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc09wYXF1ZSkgeyByZXR1cm4g
VGV4dHVyZUpvYihVcGRhdGVDb250ZW50cywgY29udGVudHMsIGRpcnR5UmVjdCwgaXNPcGFxdWUp
OyB9CiAgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIGRpc2NhcmRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIHsgcmV0dXJuIFRleHR1cmVKb2IoRGlzY2FyZENvbnRlbnRzLCBkaXJ0
eVJlY3QpOyB9CiAgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHJlc2l6ZUNvbnRlbnRzKGNvbnN0
IEludFNpemUmIG5ld1NpemUpIHsgcmV0dXJuIFRleHR1cmVKb2IoUmVzaXplQ29udGVudHMsIG5l
d1NpemUpOyB9CiAgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIGRpcnR5Q29udGVudHMoY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KSB7IHJldHVybiBUZXh0dXJlSm9iKERpcnR5Q29udGVudHMsIGRp
cnR5UmVjdCk7IH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGlz
TnVsbCgpIHsgcmV0dXJuIG1fdHlwZSA9PSBVbmtub3duOyB9CiAKICAgICAgICAgVHlwZSBtX3R5
cGU7Ci0gICAgICAgIFRleHR1cmU6Okhvc3RUeXBlIG1fY29udGVudHM7CisgICAgICAgIExheWVy
VGV4dHVyZTo6SG9zdFR5cGUgbV9jb250ZW50czsKICAgICAgICAgYm9vbCBtX2lzT3BhcXVlOwog
ICAgICAgICBJbnRSZWN0IG1fZGlydHlSZWN0OwogICAgICAgICBDb2xvciBtX2NvbG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4
dHVyZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlZjQ1NjM3NzM2MjlhZWU5
MTZjMTJjOTExOGNlYzQwMWM2ZTg3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9UZXh0dXJlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJUZXh0dXJlLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0KLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJU
ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5oIgotCi0jaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotVGV4dHVyZTo6VGV4dHVyZShib29sIGlzQ29sb3IpCi0gICAg
OiBtX3Byb3RlY3Rpb25Db3VudCgwKQotICAgICwgbV9oYW5kbGUoMCkKLSAgICAsIG1faXNDb2xv
cihpc0NvbG9yKQotICAgICwgbV9pc09wYXF1ZShmYWxzZSkKLSAgICAsIG1fYnVmZmVyU2l6ZUlu
Qnl0ZXMoMCkKLXsKLSAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT5pbnN0YWxs
KHRoaXMsIEludFNpemUoKSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNrZWRX
aGVuTmVjZXNzYXJ5KTsKLX0KLQotVGV4dHVyZTo6flRleHR1cmUoKQotewotICAgIHRleHR1cmVD
YWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVEZXN0cm95ZWQodGhpcyk7Ci19Ci0KLXZv
aWQgVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRl
bnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGUsIGJvb2wg
aXNPcGFxdWUpCi17Ci0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIobV9oYW5kbGUpOwotICAgIG1faGFuZGxlID0g
Y29udGVudHM7Ci0gICAgc2l6ZV90IG5ld0J1ZmZlclNpemVJbkJ5dGVzID0gQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpidWZmZXJTaXplSW5CeXRlcyhtX2hhbmRsZSk7Ci0gICAgdGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZVNpemVJbkJ5dGVzQ2hhbmdlZCh0
aGlzLCBuZXdCdWZmZXJTaXplSW5CeXRlcyAtIG1fYnVmZmVyU2l6ZUluQnl0ZXMpOwotICAgIG1f
YnVmZmVyU2l6ZUluQnl0ZXMgPSBuZXdCdWZmZXJTaXplSW5CeXRlczsKLX0KLQotdm9pZCBUZXh0
dXJlOjpzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQotewotICAgIG1faXNP
cGFxdWUgPSAhY29sb3IuaGFzQWxwaGEoKTsKLSAgICBSR0JBMzIgcmdiYSA9IGNvbG9yLnJnYigp
OwotCi0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OmRlc3Ryb3lCdWZmZXIobV9oYW5kbGUpOwotCi0gICAgbV9oYW5kbGUgPSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmNyZWF0ZUJ1ZmZlcihJbnRTaXplKDEsIDEpLCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOwotICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGdj
ID0gbG9ja0J1ZmZlckRyYXdhYmxlKG1faGFuZGxlKTsKLSAgICBnYy0+c2V0RmlsbENvbG9yKHJn
YmEpOwotICAgIGdjLT5hZGRGaWxsUmVjdChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmxvYXRSZWN0
KDAsIDAsIDEsIDEpKTsKLSAgICByZWxlYXNlQnVmZmVyRHJhd2FibGUobV9oYW5kbGUpOwotCi0g
ICAgSW50U2l6ZSBvbGRTaXplID0gbV9zaXplOwotICAgIG1fc2l6ZSA9IEludFNpemUoMSwgMSk7
Ci0gICAgaWYgKG1fc2l6ZSAhPSBvbGRTaXplKQotICAgICAgICB0ZXh0dXJlQ2FjaGVDb21wb3Np
dGluZ1RocmVhZCgpLT50ZXh0dXJlUmVzaXplZCh0aGlzLCBvbGRTaXplKTsKLX0KLQotYm9vbCBU
ZXh0dXJlOjpwcm90ZWN0KGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQotewotICAgIGlmICghaGFzVGV4dHVyZSgpKSB7
Ci0gICAgICAgIC8vIFdlIG1heSBoYXZlIGJlZW4gZXZpY3RlZCBieSB0aGUgVGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQsCi0gICAgICAgIC8vIGF0dGVtcHQgdG8gaW5zdGFsbCB1cyBhZ2Fp
bi4KLSAgICAgICAgaWYgKCF0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT5pbnN0YWxs
KHRoaXMsIHNpemUsIHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgICsrbV9wcm90ZWN0aW9uQ291bnQ7Ci0KLSAgICBpZiAobV9zaXplID09IHNpemUpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+
cmVzaXplVGV4dHVyZSh0aGlzLCBzaXplLCB0eXBlKTsKLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvVGV4dHVyZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTI5NDA4
NjRhMDgxNWMxODYwYTI5MTFjOTZjZThlYTNlZjJhM2NhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvVGV4dHVyZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiBUZXh0
dXJlX2gKLSNkZWZpbmUgVGV4dHVyZV9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0KLSNpbmNsdWRlICJJbnRTaXplLmgiCi0KLSNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZv
cm1HcmFwaGljcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBDb2xvcjsKLWNs
YXNzIEludFJlY3Q7Ci1jbGFzcyBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDsKLQotLy8g
VGV4dHVyZSBlbmNhcHN1bGF0ZXMgYSB2b2xhdGlsZSB0ZXh0dXJlIC0gYXQgYW55IHRpbWUsIHRo
ZSB1bmRlcmx5aW5nIE9wZW5HTAotLy8gdGV4dHVyZSBtYXkgYmUgZGVsZXRlZCBieSB0aGUgVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuIFRoZSB1c2VyIG11c3QKLS8vIGNoZWNrIHVzaW5n
IFRleHR1cmU6OmlzRGlydHkoKSBpbW1lZGlhdGVseSBiZWZvcmUgdXNpbmcgaXQsIGV2ZXJ5IHRp
bWUuCi0vLyBUaGUgb25seSB3YXkgdG8gcHJldmVudCBldmljdGlvbiB0aGlzIGlzIHRvIGNhbGwg
VGV4dHVyZTo6cHJvdGVjdCgpLgotLy8gSWYgdGhlIHRleHR1cmUgaXNEaXJ0eSgpLCB5b3UgbXVz
dCB1cGRhdGVDb250ZW50cygpIGJlZm9yZSB5b3UgY2FuIHVzZSBpdC4KLWNsYXNzIFRleHR1cmUg
OiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dHVyZT4gY3JlYXRlKGJvb2wgaXNDb2xvciA9IGZhbHNlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlKGlzQ29sb3IpKTsKLSAgICB9Ci0KLSAgICB+
VGV4dHVyZSgpOwotCi0gICAgdHlwZWRlZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJ1ZmZlciogR3B1SGFuZGxlOwotICAgIHR5cGVkZWYgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIqIEhvc3RUeXBlOwotCi0gICAgR3B1SGFuZGxlIHRleHR1cmVJZCgpIGNv
bnN0IHsgcmV0dXJuIG1faGFuZGxlOyB9Ci0gICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1
cm4gIW1faGFuZGxlOyB9Ci0gICAgYm9vbCBoYXNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9o
YW5kbGU7IH0KLQotICAgIGJvb2wgaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb2xvcjsg
fQotICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX2lzT3BhcXVlOyB9Ci0KLSAg
ICBib29sIGlzUHJvdGVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wcm90ZWN0aW9uQ291bnQgPiAw
OyB9Ci0gICAgdm9pZCBwcm90ZWN0KCkgeyArK21fcHJvdGVjdGlvbkNvdW50OyB9Ci0gICAgdm9p
ZCB1bnByb3RlY3QoKSB7IC0tbV9wcm90ZWN0aW9uQ291bnQ7IH0KLQotICAgIC8vIFRoaXMgd2ls
bCBlbnN1cmUgdGhlIHRleHR1cmUgaGFzIGJhY2tpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHNpemUK
LSAgICBib29sIHByb3RlY3QoY29uc3QgSW50U2l6ZSYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFj
a2VkV2hlbk5lY2Vzc2FyeSk7Ci0KLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IEhvc3RU
eXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0
aWxlLCBib29sIGlzT3BhcXVlKTsKLSAgICB2b2lkIHNldENvbnRlbnRzVG9Db2xvcihjb25zdCBD
b2xvciYpOwotCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0g
ICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplLndpZHRoKCk7IH0KLSAgICBpbnQg
aGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zaXplLmhlaWdodCgpOyB9Ci0gICAgc3RhdGljIGlu
dCBieXRlc1BlclBpeGVsKCkgeyByZXR1cm4gNDsgfQotCi0gICAgc2l6ZV90IHNpemVJbkJ5dGVz
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJTaXplSW5CeXRlczsgfQotCi1wcml2YXRlOgotICAg
IGZyaWVuZCBjbGFzcyBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDsKLQotICAgIFRleHR1
cmUoYm9vbCBpc0NvbG9yID0gZmFsc2UpOwotICAgIHZvaWQgc2V0VGV4dHVyZUlkKEdwdUhhbmRs
ZSBpZCkKLSAgICB7Ci0gICAgICAgIG1faGFuZGxlID0gaWQ7Ci0KLSAgICAgICAgLy8gV2UgYXNz
dW1lIGl0IGlzIGEgbmV3bHkgYWxsb2NhdGVkIHRleHR1cmUsCi0gICAgICAgIC8vIGFuZCB0aHVz
IGVtcHR5LCBvciAwLCB3aGljaCB3b3VsZCBvZiBjb3Vyc2UKLSAgICAgICAgLy8gYmUgZW1wdHku
Ci0gICAgICAgIG1fc2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgbV9idWZmZXJTaXplSW5CeXRl
cyA9IDA7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpIHsg
bV9zaXplID0gc2l6ZTsgfQotCi0gICAgaW50IG1fcHJvdGVjdGlvbkNvdW50OwotICAgIEdwdUhh
bmRsZSBtX2hhbmRsZTsKLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBib29sIG1faXNDb2xvcjsK
LSAgICBib29sIG1faXNPcGFxdWU7Ci0gICAgc2l6ZV90IG1fYnVmZmVyU2l6ZUluQnl0ZXM7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0KLSNlbmRpZiAvLyBUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggODY2NzlmMzNjNWI5NWE2
Y2RjYTQxZDQ1M2ZmYTcwZGI1MzNhYzk3ZS4uYjY1MDA1YjAxYmQ3MGMzZjVhZTFlNTc1MmQxMDg5
NzY4YzQ0MzFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3Np
dGluZ1RocmVhZC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IGludCBkZWZhdWx0
TWVtb3J5TGltaXQgPSA2NCAqIDEwMjQgKiAxMDI0OyAvLyBNZWFzdXJlZCBpbiBieXRlcy4KIC8v
IGJlZm9yZSBzb21lb25lIGhhcyBhIGNoYW5jZSB0byBwcm90ZWN0IGl0IGZvciBsZWdpdGltYXRl
IHJlYXNvbnMuCiBjbGFzcyBUZXh0dXJlUHJvdGVjdG9yIHsKIHB1YmxpYzoKLSAgICBUZXh0dXJl
UHJvdGVjdG9yKFRleHR1cmUqIHRleHR1cmUpCisgICAgVGV4dHVyZVByb3RlY3RvcihMYXllclRl
eHR1cmUqIHRleHR1cmUpCiAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCiAgICAgewogICAg
ICAgICBtX3RleHR1cmUtPnByb3RlY3QoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgTGF5ZXJUZXh0dXJl
KiBtX3RleHR1cmU7CiB9OwogCiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6VGV4dHVy
ZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKQpAQCAtNTgsMTIgKzU4LDEyIEBAIFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpCiB7CiB9
CiAKLVRleHR1cmU6OkdwdUhhbmRsZSBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6YWxs
b2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCitMYXllclRleHR1cmU6OkdwdUhhbmRsZSBUZXh0
dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6YWxsb2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6
ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUp
CiB7CiAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y3JlYXRlQnVm
ZmVyKHNpemUsIHR5cGUpOwogfQogCi1zdGF0aWMgdm9pZCBmcmVlVGV4dHVyZUlkKFRleHR1cmU6
OkdwdUhhbmRsZSBpZCkKK3N0YXRpYyB2b2lkIGZyZWVUZXh0dXJlSWQoTGF5ZXJUZXh0dXJlOjpH
cHVIYW5kbGUgaWQpCiB7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpkZXN0
cm95QnVmZmVyKGlkKTsKIH0KQEAgLTc3LDIyICs3NywyMiBAQCB2b2lkIFRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjpjb2xsZWN0R2FyYmFnZSgpCiAgICAgbV9nYXJiYWdlLmNsZWFyKCk7
CiB9CiAKLXZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVSZXNpemVk
KFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIG9sZFNpemUpCit2b2lkIFRleHR1cmVD
YWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlUmVzaXplZChMYXllclRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFNpemUmIG9sZFNpemUpCiB7Ci0gICAgaW50IGRlbHRhID0gKHRleHR1cmUt
PndpZHRoKCkgKiB0ZXh0dXJlLT5oZWlnaHQoKSAtIG9sZFNpemUud2lkdGgoKSAqIG9sZFNpemUu
aGVpZ2h0KCkpICogVGV4dHVyZTo6Ynl0ZXNQZXJQaXhlbCgpOworICAgIGludCBkZWx0YSA9ICh0
ZXh0dXJlLT53aWR0aCgpICogdGV4dHVyZS0+aGVpZ2h0KCkgLSBvbGRTaXplLndpZHRoKCkgKiBv
bGRTaXplLmhlaWdodCgpKSAqIExheWVyVGV4dHVyZTo6Ynl0ZXNQZXJQaXhlbCgpOwogICAgIGlu
Y01lbW9yeVVzYWdlKGRlbHRhKTsKICAgICBpZiAoZGVsdGEgPiAwKQogICAgICAgICBwcnVuZSgp
OwogfQogCi12b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlU2l6ZUlu
Qnl0ZXNDaGFuZ2VkKFRleHR1cmUqLCBpbnQgZGVsdGEpCit2b2lkIFRleHR1cmVDYWNoZUNvbXBv
c2l0aW5nVGhyZWFkOjp0ZXh0dXJlU2l6ZUluQnl0ZXNDaGFuZ2VkKExheWVyVGV4dHVyZSosIGlu
dCBkZWx0YSkKIHsKICAgICBpbmNNZW1vcnlVc2FnZShkZWx0YSk7CiAgICAgaWYgKGRlbHRhID4g
MCkKICAgICAgICAgcHJ1bmUoKTsKIH0KIAotdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6dGV4dHVyZURlc3Ryb3llZChUZXh0dXJlKiB0ZXh0dXJlKQordm9pZCBUZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZURlc3Ryb3llZChMYXllclRleHR1cmUqIHRleHR1
cmUpCiB7CiAgICAgaWYgKHRleHR1cmUtPmlzQ29sb3IoKSkgewogICAgICAgICBtX2dhcmJhZ2Uu
YXBwZW5kKFpvbWJpZVRleHR1cmUodGV4dHVyZSkpOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9p
ZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZURlc3Ryb3llZChUZXh0dXJl
KiB0ZXh0dXJlKQogICAgIG1fdGV4dHVyZXMucmVtb3ZlKGl0KTsKIH0KIAotYm9vbCBUZXh0dXJl
Q2FjaGVDb21wb3NpdGluZ1RocmVhZDo6aW5zdGFsbChUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUg
dHlwZSkKK2Jvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6Omluc3RhbGwoTGF5ZXJU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKIHsKICAgICBpZiAoIXRleHR1cmUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKCF0ZXh0dXJlLT5oYXNUZXh0dXJlKCkgJiYgIXNp
emUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFRleHR1cmU6OkdwdUhhbmRsZSB0ZXh0dXJlSWQgPSBh
bGxvY2F0ZVRleHR1cmVJZChzaXplLCB0eXBlKTsKKyAgICAgICAgTGF5ZXJUZXh0dXJlOjpHcHVI
YW5kbGUgdGV4dHVyZUlkID0gYWxsb2NhdGVUZXh0dXJlSWQoc2l6ZSwgdHlwZSk7CiAgICAgICAg
IGlmICghdGV4dHVyZUlkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjUsMTIg
KzEyNSwxMiBAQCBib29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjppbnN0YWxsKFRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpegogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpyZXNpemVUZXh0dXJlKFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQorYm9vbCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6cmVzaXplVGV4dHVyZShMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUm
IHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQog
ewogICAgIEludFNpemUgb2xkU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsKIAogICAgIC8vIFJlYWxs
b2NhdGUgdGhlIGJ1ZmZlcgotICAgIFRleHR1cmU6OkdwdUhhbmRsZSB0ZXh0dXJlSWQgPSBhbGxv
Y2F0ZVRleHR1cmVJZChzaXplLCB0eXBlKTsKKyAgICBMYXllclRleHR1cmU6OkdwdUhhbmRsZSB0
ZXh0dXJlSWQgPSBhbGxvY2F0ZVRleHR1cmVJZChzaXplLCB0eXBlKTsKICAgICBpZiAoIXRleHR1
cmVJZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lk
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpldmljdChjb25zdCBUZXh0dXJlU2V0Ojpp
dGVyYXRvciYgaXQpCiAgICAgaWYgKGl0ID09IG1fdGV4dHVyZXMuZW5kKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFRleHR1cmUqIHRleHR1cmUgPSAqaXQ7CisgICAgTGF5ZXJUZXh0dXJlKiB0
ZXh0dXJlID0gKml0OwogICAgIGlmICh0ZXh0dXJlLT5oYXNUZXh0dXJlKCkpIHsKICAgICAgICAg
aW50IGRlbHRhID0gMDsKLSAgICAgICAgZGVsdGEgKz0gdGV4dHVyZS0+d2lkdGgoKSAqIHRleHR1
cmUtPmhlaWdodCgpICogVGV4dHVyZTo6Ynl0ZXNQZXJQaXhlbCgpOworICAgICAgICBkZWx0YSAr
PSB0ZXh0dXJlLT53aWR0aCgpICogdGV4dHVyZS0+aGVpZ2h0KCkgKiBMYXllclRleHR1cmU6OmJ5
dGVzUGVyUGl4ZWwoKTsKICAgICAgICAgZGVsdGEgKz0gdGV4dHVyZS0+c2l6ZUluQnl0ZXMoKTsK
ICAgICAgICAgaWYgKGRlbHRhKQogICAgICAgICAgICAgZGVjTWVtb3J5VXNhZ2UoZGVsdGEpOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmV2
aWN0KGNvbnN0IFRleHR1cmVTZXQ6Oml0ZXJhdG9yJiBpdCkKICAgICB0ZXh0dXJlLT5zZXRUZXh0
dXJlSWQoMCk7CiB9CiAKLXZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1
cmVBY2Nlc3NlZChUZXh0dXJlKiB0ZXh0dXJlKQordm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZDo6dGV4dHVyZUFjY2Vzc2VkKExheWVyVGV4dHVyZSogdGV4dHVyZSkKIHsKICAgICBp
ZiAodGV4dHVyZS0+aXNDb2xvcigpKQogICAgICAgICByZXR1cm47CkBAIC0xODMsNyArMTgzLDcg
QEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6cHJ1bmUoc2l6ZV90IGxpbWl0
KQogICAgIHdoaWxlIChtX21lbW9yeVVzYWdlID4gbGltaXQpIHsKICAgICAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwogICAgICAgICBmb3IgKFRleHR1cmVTZXQ6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0
dXJlcy5iZWdpbigpOyBpdCAhPSBtX3RleHR1cmVzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAg
ICBUZXh0dXJlKiB0ZXh0dXJlID0gKml0OworICAgICAgICAgICAgTGF5ZXJUZXh0dXJlKiB0ZXh0
dXJlID0gKml0OwogICAgICAgICAgICAgaWYgKHRleHR1cmUtPmlzUHJvdGVjdGVkKCkgfHwgKHRl
eHR1cmUtPnNpemUoKS5pc0VtcHR5KCkgJiYgIXRleHR1cmUtPnNpemVJbkJ5dGVzKCkpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZXZpY3QoaXQpOwpAQCAtMjA5LDkg
KzIwOSw5IEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnNldE1lbW9yeVVz
YWdlKHNpemVfdCBtZW1vcnlVc2FnZSkKICNlbmRpZgogfQogCi1QYXNzUmVmUHRyPFRleHR1cmU+
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yVGlsZWRDb250ZW50cyhj
b25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBib29sIGlzT3BhcXVlKQorUGFzc1JlZlB0cjxMYXll
clRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yVGlsZWRD
b250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgsIGJvb2wgaXNPcGFxdWUpCiB7
Ci0gICAgUmVmUHRyPFRleHR1cmU+IHRleHR1cmUgPSBjcmVhdGVUZXh0dXJlKCk7CisgICAgUmVm
UHRyPExheWVyVGV4dHVyZT4gdGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKIAogICAgIC8vIFBy
b3RlY3QgbmV3bHkgY3JlYXRlZCB0ZXh0dXJlIGZyb20gYmVpbmcgZXZpY3RlZC4KICAgICBUZXh0
dXJlUHJvdGVjdG9yIHByb3RlY3Rvcih0ZXh0dXJlLmdldCgpKTsKQEAgLTIyMSw3ICsyMjEsNyBA
QCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0
dXJlRm9yVGlsZWRDb250ZW50cyhjb25zdAogICAgIHJldHVybiB0ZXh0dXJlLnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6
dGV4dHVyZUZvckNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK1Bhc3NSZWZQdHI8TGF5ZXJUZXh0
dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZUZvckNvbG9yKGNvbnN0
IENvbG9yJiBjb2xvcikKIHsKICAgICAvLyBKdXN0IHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBnZXQg
Zm9vbGVkIGJ5IHNvbWUgbWFsaWNpb3VzIHdlYiBwYWdlCiAgICAgLy8gaW50byBjYWNoaW5nIG1p
bGxpb25zIG9mIGNvbG9yIHRleHR1cmVzLgpAQCAtMjI5LDkgKzIyOSw5IEBAIFBhc3NSZWZQdHI8
VGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JDb2xvcihj
b25zdCBDb2xvciYKICAgICAgICAgbV9jb2xvcnMuY2xlYXIoKTsKIAogICAgIENvbG9yVGV4dHVy
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2NvbG9ycy5maW5kKGNvbG9yKTsKLSAgICBSZWZQdHI8VGV4
dHVyZT4gdGV4dHVyZTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlOwogICAgIGlm
IChpdCA9PSBtX2NvbG9ycy5lbmQoKSkgewotICAgICAgICB0ZXh0dXJlID0gVGV4dHVyZTo6Y3Jl
YXRlKHRydWUgLyogaXNDb2xvciAqLyk7CisgICAgICAgIHRleHR1cmUgPSBMYXllclRleHR1cmU6
OmNyZWF0ZSh0cnVlIC8qIGlzQ29sb3IgKi8pOwogI2lmIERFQlVHX1RFWFRVUkVfTUVNT1JZX1VT
QUdFCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ3JlYXRpbmcgdGV4dHVyZSAweCV4IGZvciBj
b2xvciAweCV4XG4iLCB0ZXh0dXJlLmdldCgpLCBjb2xvci5yZ2IoKSk7CiAjZW5kaWYKQEAgLTI0
Nyw5ICsyNDcsOSBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkOjp0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ29sb3ImCiAgICAgcmV0dXJuIHRleHR1cmUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkOjp1cGRhdGVDb250ZW50cyhjb25zdCBSZWZQdHI8VGV4dHVyZT4mIHRleHR1cmVJ
biwgY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBib29sIGlzT3BhcXVlKQorUGFzc1JlZlB0
cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp1cGRhdGVDb250
ZW50cyhjb25zdCBSZWZQdHI8TGF5ZXJUZXh0dXJlPiYgdGV4dHVyZUluLCBjb25zdCBMYXllclRl
eHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25z
dCBJbnRSZWN0JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSkKIHsKLSAgICBSZWZQdHI8VGV4dHVy
ZT4gdGV4dHVyZSh0ZXh0dXJlSW4pOworICAgIFJlZlB0cjxMYXllclRleHR1cmU+IHRleHR1cmUo
dGV4dHVyZUluKTsKIAogICAgIC8vIElmIHRoZSB0ZXh0dXJlIHdhcyAwLCBvciBuZWVkcyB0byB0
cmFuc2l0aW9uIGZyb20gYSBzb2xpZCBjb2xvciB0ZXh0dXJlIHRvIGEgY29udGVudHMgdGV4dHVy
ZSwKICAgICAvLyBjcmVhdGUgYSBuZXcgdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCBkOTYxZjUxMTY0YWMxYzlkOTczMGM4
NmYzOWE4MzM0NTVjNjgwNDYzLi4zN2NiM2IwMzg0MDRmYmU4NDE0M2I0ZDA5N2Y5YmFjNDliNTMx
NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZC5oCkBAIC0yMiw4ICsyMiw4IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
CiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKICNpbmNsdWRl
ICJMYXllclRpbGVJbmRleC5oIgotI2luY2x1ZGUgIlRleHR1cmUuaCIKIAogI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTQ1LDE3ICs0NSwxNyBAQCBwdWJsaWM6CiAgICAgZnJpZW5kIFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkKiB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpOwogCiAgICAgLy8gQ3Jl
YXRlcyBhIG5ldyB0ZXh0dXJlIG1hbmFnZWQgYnkgdGhpcyBjYWNoZS4KLSAgICBQYXNzUmVmUHRy
PFRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKQorICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiBj
cmVhdGVUZXh0dXJlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUoKTsK
KyAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZTo6Y3JlYXRlKCk7CiAgICAgfQogCiAgICAgLy8g
UmV0cmlldmUgYSB0ZXh0dXJlIGZyb20gdGhlIGNhY2hlLgotICAgIFBhc3NSZWZQdHI8VGV4dHVy
ZT4gdGV4dHVyZUZvclRpbGVkQ29udGVudHMoY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRl
bnRzLCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiwgYm9vbCBpc09w
YXF1ZSk7Ci0gICAgUGFzc1JlZlB0cjxUZXh0dXJlPiB0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ29s
b3ImKTsKKyAgICBQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gdGV4dHVyZUZvclRpbGVkQ29udGVu
dHMoY29uc3QgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBUaWxlSW5kZXgmLCBib29sIGlzT3BhcXVlKTsKKyAgICBQYXNzUmVm
UHRyPExheWVyVGV4dHVyZT4gdGV4dHVyZUZvckNvbG9yKGNvbnN0IENvbG9yJik7CiAKICAgICAv
LyBVcGRhdGUgY29udGVudHMgb2YgYW4gZXhpc3RpbmcgdGV4dHVyZSwgb3IgY3JlYXRlIGEgbmV3
IG9uZSBpZiB0ZXh0dXJlIGlzIDAuCi0gICAgUGFzc1JlZlB0cjxUZXh0dXJlPiB1cGRhdGVDb250
ZW50cyhjb25zdCBSZWZQdHI8VGV4dHVyZT4mLCBjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29u
dGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3Qs
IGJvb2wgaXNPcGFxdWUpOworICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB1cGRhdGVDb250
ZW50cyhjb25zdCBSZWZQdHI8TGF5ZXJUZXh0dXJlPiYsIGNvbnN0IExheWVyVGV4dHVyZTo6SG9z
dFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3Qm
IHRpbGVSZWN0LCBib29sIGlzT3BhcXVlKTsKIAogICAgIHNpemVfdCBtZW1vcnlVc2FnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVtb3J5VXNhZ2U7IH0KICAgICBzaXplX3QgbWVtb3J5TGltaXQoKSBj
b25zdCB7IHJldHVybiBtX21lbW9yeUxpbWl0OyB9CkBAIC02OSw0MiArNjksNDIgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgTFJVIGxpc3QuCi0gICAg
dm9pZCB0ZXh0dXJlQWNjZXNzZWQoVGV4dHVyZSopOworICAgIHZvaWQgdGV4dHVyZUFjY2Vzc2Vk
KExheWVyVGV4dHVyZSopOwogCiAgICAgLy8gRGVsZXRpbmcgZGVzdHJveWVkIHRleHR1cmVzIGlz
IHByb3ZpZGVkIGFzIGEgc2VwYXJhdGUgbWV0aG9kLCBiZWNhdXNlCiAgICAgLy8gdGhlcmUgbWln
aHQgbm90IGJlIGFuIE9wZW5HTCBjb250ZXh0IGN1cnJlbnQgd2hlbiB0aGUgdGV4dHVyZSBkZXN0
cnVjdG9yCiAgICAgLy8gd2FzIGNhbGxlZC4gQ2FsbGluZyB0aGlzIG1ha2VzIHN1cmUgdG8gZnJl
ZSBhbnkgc3VjaCB0ZXh0dXJlcy4KICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CiAKLSAgICB2
b2lkIHRleHR1cmVEZXN0cm95ZWQoVGV4dHVyZSopOwotICAgIHZvaWQgdGV4dHVyZVJlc2l6ZWQo
VGV4dHVyZSosIGNvbnN0IEludFNpemUmIG9sZFNpemUpOwotICAgIHZvaWQgdGV4dHVyZVNpemVJ
bkJ5dGVzQ2hhbmdlZChUZXh0dXJlKiwgaW50IGRlbHRhKTsKKyAgICB2b2lkIHRleHR1cmVEZXN0
cm95ZWQoTGF5ZXJUZXh0dXJlKik7CisgICAgdm9pZCB0ZXh0dXJlUmVzaXplZChMYXllclRleHR1
cmUqLCBjb25zdCBJbnRTaXplJiBvbGRTaXplKTsKKyAgICB2b2lkIHRleHR1cmVTaXplSW5CeXRl
c0NoYW5nZWQoTGF5ZXJUZXh0dXJlKiwgaW50IGRlbHRhKTsKIAogICAgIC8vIFVuZG8gdGhlIGVm
ZmVjdHMgb2YgZXZpY3Rpb24sIGlmIHBvc3NpYmxlLgotICAgIGJvb2wgaW5zdGFsbChUZXh0dXJl
KiwgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUgPSBJbnRTaXplKDAsIDApLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
R3JhcGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOwotICAgIGJvb2wgcmVzaXplVGV4dHVyZShU
ZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXJUeXBlID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCYWNr
ZWRXaGVuTmVjZXNzYXJ5KTsKKyAgICBib29sIGluc3RhbGwoTGF5ZXJUZXh0dXJlKiwgY29uc3Qg
SW50U2l6ZSYgdGV4dHVyZVNpemUgPSBJbnRTaXplKDAsIDApLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJhY2tlZFdoZW5OZWNlc3NhcnkpOworICAgIGJvb2wgcmVzaXplVGV4dHVyZShMYXllclRleHR1
cmUqLCBjb25zdCBJbnRTaXplJiBuZXdTaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkJ1ZmZlclR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJhY2tlZFdo
ZW5OZWNlc3NhcnkpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBab21iaWVUZXh0dXJlIHsKLSAg
ICAgICAgZXhwbGljaXQgWm9tYmllVGV4dHVyZShUZXh0dXJlKiB0ZXh0dXJlKQorICAgICAgICBl
eHBsaWNpdCBab21iaWVUZXh0dXJlKExheWVyVGV4dHVyZSogdGV4dHVyZSkKICAgICAgICAgICAg
IDogaWQodGV4dHVyZS0+dGV4dHVyZUlkKCkpCiAgICAgICAgICAgICAsIHNpemUodGV4dHVyZS0+
c2l6ZSgpKQogICAgICAgICAgICAgLCBzaXplSW5CeXRlcyh0ZXh0dXJlLT5zaXplSW5CeXRlcygp
KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBUZXh0dXJlOjpHcHVIYW5kbGUgaWQ7
CisgICAgICAgIExheWVyVGV4dHVyZTo6R3B1SGFuZGxlIGlkOwogICAgICAgICBJbnRTaXplIHNp
emU7CiAgICAgICAgIHNpemVfdCBzaXplSW5CeXRlczsKICAgICB9OwotICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8VGV4dHVyZSogPiBUZXh0dXJlU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxUaWxl
SW5kZXgsIFJlZlB0cjxUZXh0dXJlPiA+IFRleHR1cmVNYXA7CisgICAgdHlwZWRlZiBMaXN0SGFz
aFNldDxMYXllclRleHR1cmUqID4gVGV4dHVyZVNldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VGls
ZUluZGV4LCBSZWZQdHI8TGF5ZXJUZXh0dXJlPiA+IFRleHR1cmVNYXA7CiAgICAgdHlwZWRlZiBW
ZWN0b3I8Wm9tYmllVGV4dHVyZT4gR2FyYmFnZTsKIAogICAgIFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkKCk7CiAgICAgflRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCk7CiAKLSAg
ICBUZXh0dXJlOjpHcHVIYW5kbGUgYWxsb2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSk7Cisg
ICAgTGF5ZXJUZXh0dXJlOjpHcHVIYW5kbGUgYWxsb2NhdGVUZXh0dXJlSWQoY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlw
ZSk7CiAKICAgICB2b2lkIGluY01lbW9yeVVzYWdlKGludCBkZWx0YSkgeyBzZXRNZW1vcnlVc2Fn
ZShtZW1vcnlVc2FnZSgpICsgZGVsdGEpOyB9CiAgICAgdm9pZCBkZWNNZW1vcnlVc2FnZShpbnQg
ZGVsdGEpIHsgc2V0TWVtb3J5VXNhZ2UobWVtb3J5VXNhZ2UoKSAtIGRlbHRhKTsgfQpAQCAtMTMw
LDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShDb2xvciYgc2xvdCkgeyBuZXcgKCZzbG90KSBDb2xvcigpOyAqcmVpbnRlcnByZXRf
Y2FzdDxSR0JBMzIqPigmc2xvdCkgPSBDb2xvcjo6d2hpdGU7IH0KICAgICAgICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgQ29sb3ImIHZhbHVlKSB7IHJldHVybiAhdmFsdWUuaXNW
YWxpZCgpICYmIHZhbHVlLnJnYigpID09IENvbG9yOjp3aGl0ZTsgfQogICAgIH07Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPENvbG9yLCBSZWZQdHI8VGV4dHVyZT4sIENvbG9ySGFzaCwgQ29sb3JIYXNo
VHJhaXRzPiBDb2xvclRleHR1cmVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPENvbG9yLCBSZWZQ
dHI8TGF5ZXJUZXh0dXJlPiwgQ29sb3JIYXNoLCBDb2xvckhhc2hUcmFpdHM+IENvbG9yVGV4dHVy
ZU1hcDsKICAgICBDb2xvclRleHR1cmVNYXAgbV9jb2xvcnM7CiAgICAgR2FyYmFnZSBtX2dhcmJh
Z2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVy
bGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAKaW5k
ZXggZTBlNWUyM2MyZjBiODU0NGVmMjUxNzA5ZjUyNjdhOTI5YWU0MjBhZS4uODdiNmU3ZGM5YTE5
NTI2ZTJmYjJmZTc4NWM2NTU2N2YyZjVmM2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYk92ZXJsYXkuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBXZWJPdmVybGF5
TGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXll
ckNvbXBvc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFRleHR1cmU6Okhvc3RUeXBl
IHRleHR1cmVDb250ZW50cyA9IFRleHR1cmU6Okhvc3RUeXBlKCk7CisgICAgTGF5ZXJUZXh0dXJl
OjpIb3N0VHlwZSB0ZXh0dXJlQ29udGVudHMgPSBMYXllclRleHR1cmU6Okhvc3RUeXBlKCk7CiAg
ICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZTsKIAogICAgIGlmIChtX2RyYXdzQ29udGVudCkgewpAQCAt
NDk2LDcgKzQ5Niw3IEBAIHZvaWQgV2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGll
bnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3NpCiAgICAgICAgIG1fdXBsb2Fk
ZWRJbWFnZSA9IG1faW1hZ2U7CiAgICAgfQogCi0gICAgbV90ZXh0dXJlID0gVGV4dHVyZTo6Y3Jl
YXRlKCk7CisgICAgbV90ZXh0dXJlID0gTGF5ZXJUZXh0dXJlOjpjcmVhdGUoKTsKICAgICBtX3Rl
eHR1cmUtPnByb3RlY3QoSW50U2l6ZSgpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6
OkJhY2tlZFdoZW5OZWNlc3NhcnkpOwogICAgIEludFJlY3QgYml0bWFwUmVjdCgwLCAwLCB0ZXh0
dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV90ZXh0dXJlLT51
cGRhdGVDb250ZW50cyh0ZXh0dXJlQ29udGVudHMsIGJpdG1hcFJlY3QsIGJpdG1hcFJlY3QsIGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3Zlcmxh
eV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXlfcC5oCmluZGV4
IDQ2Y2Y5NDkyYWYwNGRiZTU1M2M4NjRiYWNkODA1NmM2Yjg2OTdmZGMuLjZmNTY4MDkyYTU2N2Vm
YjgzZTJhODIzZmI3YjNmOTEwNjk3OTkzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViT3ZlcmxheV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJPdmVybGF5X3AuaApAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllci5oIgogI2luY2x1ZGUgIkxheWVyQ29tcG9zaXRpbmdUaHJlYWQuaCIKLSNpbmNsdWRl
ICJUZXh0dXJlLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViT3Zl
cmxheS5oIgogI2luY2x1ZGUgIldlYk92ZXJsYXlPdmVycmlkZS5oIgogCkBAIC0yMDUsNyArMjA1
LDcgQEAgcHJpdmF0ZToKIAogcHJpdmF0ZToKICAgICBib29sIG1fZHJhd3NDb250ZW50OwotICAg
IFJlZlB0cjxXZWJDb3JlOjpUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkxheWVyVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6VGlsZWRJbWFnZSBtX2ltYWdlOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFw
aGljczo6VGlsZWRJbWFnZSBtX3VwbG9hZGVkSW1hZ2U7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9j
b2xvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197241</attachid>
            <date>2013-04-10 04:01:45 -0700</date>
            <delta_ts>2013-04-10 12:54:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95781-20130410130124.patch</filename>
            <type>text/plain</type>
            <size>51944</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4MDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJhMmU0NjI3OTAwZDEz
NTQyNGE0NzJlZTA4MWJmY2JkZjM4ZDIyOS4uYWNhYThjNTMzMmUyOGVmNzcwMzk4NWVkMTYyZjUz
MWJhNDBhMGRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEzLTA0LTEwICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVu
YW1lIEJsYWNrQmVycnkgc3BlY2lmaWMgVGV4dHVyZSBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXh0dXJlIHdhcyBhIGJpdCB0b28gZ2VuZXJp
YyBhbmQgcHJvbmUgdG8gbmFtZSBjb25mbGljdHMuIFJlbmFtZWQgaXQKKyAgICAgICAgdG8gTGF5
ZXJUZXh0dXJlLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8gbmV3IHRlc3Rz
LgorCisgICAgICAgIFBSIDMyMjg4MgorCisgICAgICAgICogUGxhdGZvcm1CbGFja0JlcnJ5LmNt
YWtlOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3Np
dGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFk
OjpkcmF3U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFk
Ojpjb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmNvbnRlbnRzVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRl
cmVyLmg6CisgICAgICAgIChMYXllckZpbHRlclJlbmRlcmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6dGV4dHVyZSk6CisgICAgICAgIChMYXllclJl
bmRlcmVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRleHR1cmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpMYXllclRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUZXh0dXJlOjp+TGF5ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
OjpzZXRDb250ZW50c1RvQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpw
cm90ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGV4
dHVyZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9UZXh0dXJlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRleHR1cmU6OnRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRleHR1cmU6OmlzRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlOjpo
YXNUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6aXNDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OmlzT3BhcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyVGV4dHVyZTo6aXNQcm90ZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJU
ZXh0dXJlOjpwcm90ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6dW5wcm90
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRleHR1cmU6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4
dHVyZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6Ynl0ZXNQZXJQ
aXhlbCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmU6OnNpemVJbkJ5dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZTo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZTo6c2V0U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUaWxl
OjpzZXRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGU6OnVwZGF0ZUNvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGlsZTo6c2V0VGV4dHVyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZTo6dGV4dHVyZSk6CisgICAgICAgIChMYXllclRpbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRpbGVyOjpkcmF3VGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyOjpjb250ZW50c1RleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUaWxlci5oOgorICAgICAgICAoTGF5ZXJUaWxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclRpbGVyOjpUZXh0dXJlSm9iOjpUZXh0dXJlSm9iKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZXI6OlRleHR1cmVKb2I6OnNldENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGlsZXI6OlRleHR1cmVKb2I6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAg
KFRleHR1cmVKb2IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZVByb3RlY3Rvcjo6VGV4dHVyZVByb3RlY3Rvcik6CisgICAgICAgIChUZXh0dXJlUHJvdGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjphbGxv
Y2F0ZVRleHR1cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpmcmVlVGV4dHVyZUlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlUmVzaXpl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4
dHVyZVNpemVJbkJ5dGVzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVD
b21wb3NpdGluZ1RocmVhZDo6dGV4dHVyZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6aW5zdGFsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6cmVzaXplVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6ZXZpY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVBY2Nlc3Nl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6cHJ1
bmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRl
eHR1cmVGb3JUaWxlZENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6Wm9tYmllVGV4
dHVyZTo6Wm9tYmllVGV4dHVyZSk6CisgICAgICAgIChab21iaWVUZXh0dXJlKToKKwogMjAxMy0w
NC0wOSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dTdHJlYW1lcl0gcGxheWJpbiB1cmkgZ2V0dGVyIGlzIGludmFsaWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nCmluZGV4IGNkOWM5M2JjY2JjZmJkMjFmMThmZWRlNWZiYzMxMDFmZmM5ODE2
ZjUuLjhmNjMzNDNkYjczYTIyODEzOWEwZTdlNzE5NDgwNTBhMDQ1NmRkNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTEwICBBcnZpZCBO
aWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVuYW1l
IEJsYWNrQmVycnkgc3BlY2lmaWMgVGV4dHVyZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXh0dXJlIHdhcyBhIGJpdCB0b28gZ2VuZXJpYyBh
bmQgcHJvbmUgdG8gbmFtZSBjb25mbGljdHMuIFJlbmFtZWQgaXQKKyAgICAgICAgdG8gTGF5ZXJU
ZXh0dXJlLgorCisgICAgICAgIFBSIDMyMjg4MgorCisgICAgICAgICogQXBpL1dlYk92ZXJsYXku
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJPdmVybGF5TGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZCk6CisgICAgICAgICogQXBp
L1dlYk92ZXJsYXlfcC5oOgorICAgICAgICAoV2ViT3ZlcmxheUxheWVyQ29tcG9zaXRpbmdUaHJl
YWRDbGllbnQpOgorCiAyMDEzLTA0LTA5ICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+
CiAKICAgICAgICAgW0JsYWNrQmVycnldIE1haW4gcGFnZSBpcyByZW5kZXJlZCBhdCB3cm9uZyBs
YXJnZSBzY2FsZSBhZnRlciBiYWNrIGZyb20gYW55IHpvb21pbmcgYXJ0aWNsZSBhdCByZWFkLnRo
ZXN0YXIuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnku
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggZTc5
MzEyMjMyNGYyMjBmNTNlZmIyZDM3ZGI3MTJiZWFlMjQyYTNiNi4uZjc2NjdlZTVjZTFhZDM5MTA3
NzUwZTdlZGNiZTU1ZTU5M2RkYjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZQpAQCAtMjQyLDExICsyNDIsMTEgQEAgaWYgKFdURl9VU0VfQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAogICAgICAgICAke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJm
YWNlLmNwcAorICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyVGV4dHVyZS5jcHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGUuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKICAgICAgICAgJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHAKICAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Q
bHVnaW5MYXllcldlYktpdFRocmVhZC5jcHAKLSAgICAgICAgJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlLmNwcAogICAgICAgICAke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkLmNwcAogICAgICAgICAke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L1dlYkdMTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCiAgICAgICAgICR7V0VCQ09SRV9ESVJ9L3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBv
c2l0aW5nVGhyZWFkLmNwcAppbmRleCBkMzM5ZGQwZDFlYjQ3ZWEyMjFiMTU3MGZlNWE5MGMzYjUz
YzJkOTg0Li4wYTQwMGY5NzE3ZTg1MDRmMjAyMzIwOGIzOTI1MzMxZjMzN2YzY2Q5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29t
cG9zaXRpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBA
QCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmbwogICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M7CiAKICAgICBpZiAobV9sYXllclJlbmRlcmVyLT5sYXllckFs
cmVhZHlPblN1cmZhY2UodGhpcykpIHsKLSAgICAgICAgVGV4dHVyZSogc3VyZmFjZVRleHR1cmUg
PSBsYXllclJlbmRlcmVyU3VyZmFjZSgpLT50ZXh0dXJlKCk7CisgICAgICAgIExheWVyVGV4dHVy
ZSogc3VyZmFjZVRleHR1cmUgPSBsYXllclJlbmRlcmVyU3VyZmFjZSgpLT50ZXh0dXJlKCk7CiAg
ICAgICAgIGlmICghc3VyZmFjZVRleHR1cmUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgTGF5
ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGRyYXdUcmFuc2ZvCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobWFzaykgewotICAgICAg
ICAgICAgVGV4dHVyZSogbWFza1RleHR1cmUgPSBtYXNrLT5jb250ZW50c1RleHR1cmUoKTsKKyAg
ICAgICAgICAgIExheWVyVGV4dHVyZSogbWFza1RleHR1cmUgPSBtYXNrLT5jb250ZW50c1RleHR1
cmUoKTsKICAgICAgICAgICAgIGlmIChtYXNrVGV4dHVyZSkgewogICAgICAgICAgICAgICAgIEdM
dWludCBtYXNrVGV4SUQgPSByZWludGVycHJldF9jYXN0PEdMdWludD4ocGxhdGZvcm1CdWZmZXJI
YW5kbGUobWFza1RleHR1cmUtPnRleHR1cmVJZCgpKSk7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2
b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50c0lmTmVlZGVk
KCkKICAgICAgICAgbV9jbGllbnQtPnVwbG9hZFRleHR1cmVzSWZOZWVkZWQodGhpcyk7CiB9CiAK
LVRleHR1cmUqIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmNvbnRlbnRzVGV4dHVyZSgpCitMYXll
clRleHR1cmUqIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmNvbnRlbnRzVGV4dHVyZSgpCiB7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICByZXR1cm4gbV9jbGllbnQtPmNvbnRlbnRzVGV4dHVy
ZSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKaW5kZXggY2Mw
MTRhNzBjZjQzNTlkOTEyNTcyYmE1MjI0NTU5OTU0YzE4ZjlkMC4uOGQ1Yzg4ODE1MzZmYzY4NDky
YzcyNWZhMTAwNmExMTlkMzQwNjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmgKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHdlIGhhdmUgYW4gYW5pbWF0aW9uCiAgICAgYm9vbCB1cGRhdGVBbmltYXRpb25zKGRvdWJs
ZSBjdXJyZW50VGltZSk7CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgp
OwotICAgIFRleHR1cmUqIGNvbnRlbnRzVGV4dHVyZSgpOworICAgIExheWVyVGV4dHVyZSogY29u
dGVudHNUZXh0dXJlKCk7CiAKICAgICBjb25zdCBMYXllckNvbXBvc2l0aW5nVGhyZWFkKiByb290
TGF5ZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBWZWN0b3I8UmVmUHRy
PExheWVyQ29tcG9zaXRpbmdUaHJlYWQ+ID4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgKaW5kZXggY2M3YmYzYmJlYjhmMzkxZTdkM2UzYTQ4MDkw
OTdhZDYyM2Q4NDExMy4uMzE4NzhmNGFjYTQ2NGJkYzU0MDA3NmE4OTM5YjQ2YWI4ZDJmZjg1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgY2xhc3MgR0xFUzJQcm9ncmFtOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBMYXllckNvbXBvc2l0aW5nVGhyZWFkOwotY2xhc3MgVGV4dHVyZTsKK2NsYXNzIExh
eWVyVGV4dHVyZTsKIAogY2xhc3MgTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudCB7CiBwdWJs
aWM6CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4
dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopID0gMDsKIAogICAgIC8vIE9wdGlvbmFsLiBB
bGxvd3MgbGF5ZXJzIHRvIHNlcnZlIGFzIGEgbWFzayBmb3Igb3RoZXIgbGF5ZXJzCi0gICAgdmly
dHVhbCBUZXh0dXJlKiBjb250ZW50c1RleHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZSogY29udGVudHNUZXh0dXJlKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBPcHRpb25hbC4g
QWxsb3cgdGhlIGxheWVyIHRvIGNvbW1pdCB0aHJlYWQgc2Vuc2l0aXZlIGNvbnRlbnQgZHVyaW5n
IGEgc3luYyBwb2ludAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRQZW5kaW5nVGV4dHVyZVVwbG9h
ZHMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJS
ZW5kZXJlci5jcHAKaW5kZXggYjJjMjkxODliNTY4NzZkNGI1OWUzMTU1NTkzMDc2MjAyY2FkMDU2
My4uZjFmZGYwODcwODc5M2JlYWY1OTU1Y2M2YWFkNGU5ZmYxZWU2NmJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBMYXll
ckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnModW5zaWduZWQmIGZibywgTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCogbGEKICAgICAgICAgLy8gYWN0aW9uc0Zvck9wZXJhdGlvbnMgdGFrZXMgY2Fy
ZSBvZiB0aGF0LgogCiAgICAgICAgIGlmIChhY3Rpb25zW2ldLT5zaG91bGRQdXNoU25hcHNob3Qo
KSkgewotICAgICAgICAgICAgUmVmUHRyPFRleHR1cmU+IGN1cnJlbnRUZXh0dXJlID0gKCEoaSAl
IDIpID8gc3VyZmFjZS0+dGV4dHVyZSgpIDogbV90ZXh0dXJlKTsKKyAgICAgICAgICAgIFJlZlB0
cjxMYXllclRleHR1cmU+IGN1cnJlbnRUZXh0dXJlID0gKCEoaSAlIDIpID8gc3VyZmFjZS0+dGV4
dHVyZSgpIDogbV90ZXh0dXJlKTsKICAgICAgICAgICAgIEdMdWludCB0ZXhpZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R0x1aW50PihwbGF0Zm9ybUJ1ZmZlckhhbmRsZShjdXJyZW50VGV4dHVyZS0+dGV4
dHVyZUlkKCkpKTsKICAgICAgICAgICAgIGlmICghdGV4aWQpIHsKICAgICAgICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmxvY2tBbmRCaW5kQnVmZmVyR0xUZXh0dXJl
KGN1cnJlbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSwgR0xfVEVYVFVSRV8yRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVy
UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJGaWx0ZXJSZW5kZXJlci5oCmluZGV4IDNiMjhkMDhhYjQ3Zjk3ZjQxNzEzYWNjNTZkOGJm
OWVlYTZmZDNhMTQuLmYxMWViNzJkMjU5NDBiZTdiZDcwYThjYzg0NGYwNDk5ZWJiZDk4MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJGaWx0ZXJSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJEYXRhLmgiCi0jaW5jbHVkZSAiVGV4
dHVyZS5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HTEVTMkNvbnRleHQu
aD4KQEAgLTI1Niw4ICsyNTYsOCBAQCBwcml2YXRlOgogICAgIGludCBtX29mZnNldExvY2F0aW9u
OwogCiAgICAgLy8gVGV4dHVyZXMgZm9yIHBsYXlpbmcgcGluZy1wb25nIC0gc2VlIG5vdGUgaW4g
YXBwbHlBY3Rpb25zKCkKLSAgICBSZWZQdHI8VGV4dHVyZT4gbV90ZXh0dXJlOwotICAgIFJlZlB0
cjxUZXh0dXJlPiBtX3NuYXBzaG90VGV4dHVyZTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiBt
X3RleHR1cmU7CisgICAgUmVmUHRyPExheWVyVGV4dHVyZT4gbV9zbmFwc2hvdFRleHR1cmU7CiAK
ICAgICBmcmllbmQgY2xhc3MgTGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKaW5kZXggMjBiY2ZhZDZjOTZiNTBjZDI4ZTU1OGJk
MDEyZDVjZmIxNTVlOTExNC4uZWY5ZDY5MTU5N2UzNGNmZDNjOWVkMTUxNGZiNGNhNWU3ODAwZWFj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllclJlbmRlcmVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaApAQCAtMjQsNyArMjQsNyBA
QAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiVGV4dHVyZS5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU0LDEzICs1NCwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGVuc3VyZVRleHR1
cmUoKTsKICAgICB2b2lkIHJlbGVhc2VUZXh0dXJlKCk7Ci0gICAgVGV4dHVyZSogdGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgIExheWVyVGV4dHVyZSogdGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogCiAgICAgZmxvYXQgZHJh
d09wYWNpdHkoKSB7IHJldHVybiBtX29wYWNpdHk7IH0KICAgICB2b2lkIHNldERyYXdPcGFjaXR5
KGZsb2F0IG9wYWNpdHkpIHsgbV9vcGFjaXR5ID0gb3BhY2l0eTsgfQogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgUmVmUHRyPExheWVyVGV4dHVyZT4gbV90
ZXh0dXJlOwogCiAgICAgRmxvYXRSZWN0IG1fY29udGVudFJlY3Q7CiAgICAgRmxvYXRSZWN0IG1f
Y2xpcFJlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyVGV4dHVyZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRiYzUzMDE0NGRm
ZTVjZWE1YWYxMzYzNWMxNzAyMGY2ZDE4MzBhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlLmgiCisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2lu
Y2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZC5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Lmg+Cisj
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL093bkFycmF5UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTGF5ZXJU
ZXh0dXJlOjpMYXllclRleHR1cmUoYm9vbCBpc0NvbG9yKQorICAgIDogbV9wcm90ZWN0aW9uQ291
bnQoMCkKKyAgICAsIG1faGFuZGxlKDApCisgICAgLCBtX2lzQ29sb3IoaXNDb2xvcikKKyAgICAs
IG1faXNPcGFxdWUoZmFsc2UpCisgICAgLCBtX2J1ZmZlclNpemVJbkJ5dGVzKDApCit7CisgICAg
dGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+aW5zdGFsbCh0aGlzLCBJbnRTaXplKCks
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7Cit9
CisKK0xheWVyVGV4dHVyZTo6fkxheWVyVGV4dHVyZSgpCit7CisgICAgdGV4dHVyZUNhY2hlQ29t
cG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZURlc3Ryb3llZCh0aGlzKTsKK30KKwordm9pZCBMYXll
clRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNv
bnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGUsIGJv
b2wgaXNPcGFxdWUpCit7CisgICAgaWYgKG1faGFuZGxlKQorICAgICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OmRlc3Ryb3lCdWZmZXIobV9oYW5kbGUpOworICAgIG1faGFuZGxl
ID0gY29udGVudHM7CisgICAgc2l6ZV90IG5ld0J1ZmZlclNpemVJbkJ5dGVzID0gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpidWZmZXJTaXplSW5CeXRlcyhtX2hhbmRsZSk7CisgICAg
dGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZVNpemVJbkJ5dGVzQ2hhbmdl
ZCh0aGlzLCBuZXdCdWZmZXJTaXplSW5CeXRlcyAtIG1fYnVmZmVyU2l6ZUluQnl0ZXMpOworICAg
IG1fYnVmZmVyU2l6ZUluQnl0ZXMgPSBuZXdCdWZmZXJTaXplSW5CeXRlczsKK30KKwordm9pZCBM
YXllclRleHR1cmU6OnNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7Cisg
ICAgbV9pc09wYXF1ZSA9ICFjb2xvci5oYXNBbHBoYSgpOworICAgIFJHQkEzMiByZ2JhID0gY29s
b3IucmdiKCk7CisKKyAgICBpZiAobV9oYW5kbGUpCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcihtX2hhbmRsZSk7CisKKyAgICBtX2hhbmRsZSA9
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y3JlYXRlQnVmZmVyKEludFNpemUoMSwg
MSksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7
CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCogZ2MgPSBsb2NrQnVmZmVyRHJhd2FibGUobV9oYW5kbGUpOworICAgIGdjLT5zZXRGaWxs
Q29sb3IocmdiYSk7CisgICAgZ2MtPmFkZEZpbGxSZWN0KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpG
bG9hdFJlY3QoMCwgMCwgMSwgMSkpOworICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZShtX2hhbmRs
ZSk7CisKKyAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7CisgICAgbV9zaXplID0gSW50U2l6
ZSgxLCAxKTsKKyAgICBpZiAobV9zaXplICE9IG9sZFNpemUpCisgICAgICAgIHRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVSZXNpemVkKHRoaXMsIG9sZFNpemUpOworfQor
Citib29sIExheWVyVGV4dHVyZTo6cHJvdGVjdChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKK3sKKyAgICBpZiAoIWhh
c1RleHR1cmUoKSkgeworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBiZWVuIGV2aWN0ZWQgYnkgdGhl
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLAorICAgICAgICAvLyBhdHRlbXB0IHRvIGlu
c3RhbGwgdXMgYWdhaW4uCisgICAgICAgIGlmICghdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQoKS0+aW5zdGFsbCh0aGlzLCBzaXplLCB0eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICArK21fcHJvdGVjdGlvbkNvdW50OworCisgICAgaWYgKG1fc2l6ZSA9
PSBzaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkKCktPnJlc2l6ZVRleHR1cmUodGhpcywgc2l6ZSwgdHlwZSk7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg2
YTUzZDJlMTU3NGQ0NjEwNWI2NWUzMTQ1OGRhYjEwMzJhYWNmMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUZXh0dXJl
LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2lmbmRlZiBMYXllclRleHR1cmVfaAorI2RlZmluZSBMYXllclRleHR1cmVf
aAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiSW50U2l6
ZS5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ7CisKKy8vIExheWVyVGV4dHVyZSBlbmNhcHN1bGF0
ZXMgYSB2b2xhdGlsZSB0ZXh0dXJlIC0gYXQgYW55IHRpbWUsIHRoZSB1bmRlcmx5aW5nIE9wZW5H
TAorLy8gdGV4dHVyZSBtYXkgYmUgZGVsZXRlZCBieSB0aGUgVGV4dHVyZUNhY2hlQ29tcG9zaXRp
bmdUaHJlYWQuIFRoZSB1c2VyIG11c3QKKy8vIGNoZWNrIHVzaW5nIExheWVyVGV4dHVyZTo6aXNE
aXJ0eSgpIGltbWVkaWF0ZWx5IGJlZm9yZSB1c2luZyBpdCwgZXZlcnkgdGltZS4KKy8vIFRoZSBv
bmx5IHdheSB0byBwcmV2ZW50IGV2aWN0aW9uIHRoaXMgaXMgdG8gY2FsbCBMYXllclRleHR1cmU6
OnByb3RlY3QoKS4KKy8vIElmIHRoZSB0ZXh0dXJlIGlzRGlydHkoKSwgeW91IG11c3QgdXBkYXRl
Q29udGVudHMoKSBiZWZvcmUgeW91IGNhbiB1c2UgaXQuCitjbGFzcyBMYXllclRleHR1cmUgOiBw
dWJsaWMgUmVmQ291bnRlZDxMYXllclRleHR1cmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMYXllclRleHR1cmU+IGNyZWF0ZShib29sIGlzQ29sb3IgPSBmYWxzZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJUZXh0dXJlKGlzQ29sb3IpKTsKKyAg
ICB9CisKKyAgICB+TGF5ZXJUZXh0dXJlKCk7CisKKyAgICB0eXBlZGVmIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBHcHVIYW5kbGU7CisgICAgdHlwZWRlZiBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogSG9zdFR5cGU7CisKKyAgICBHcHVIYW5k
bGUgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGU7IH0KKyAgICBib29sIGlzRGly
dHkoKSBjb25zdCB7IHJldHVybiAhbV9oYW5kbGU7IH0KKyAgICBib29sIGhhc1RleHR1cmUoKSBj
b25zdCB7IHJldHVybiBtX2hhbmRsZTsgfQorCisgICAgYm9vbCBpc0NvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbG9yOyB9CisgICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNPcGFxdWU7IH0KKworICAgIGJvb2wgaXNQcm90ZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3By
b3RlY3Rpb25Db3VudCA+IDA7IH0KKyAgICB2b2lkIHByb3RlY3QoKSB7ICsrbV9wcm90ZWN0aW9u
Q291bnQ7IH0KKyAgICB2b2lkIHVucHJvdGVjdCgpIHsgLS1tX3Byb3RlY3Rpb25Db3VudDsgfQor
CisgICAgLy8gVGhpcyB3aWxsIGVuc3VyZSB0aGUgdGV4dHVyZSBoYXMgYmFja2luZyB3aXRoIHRo
ZSBzcGVjaWZpZWQgc2l6ZQorICAgIGJvb2wgcHJvdGVjdChjb25zdCBJbnRTaXplJiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlID0gQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNzYXJ5KTsKKworICAgIHZvaWQgdXBkYXRlQ29u
dGVudHMoY29uc3QgSG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qs
IGNvbnN0IEludFJlY3QmIHRpbGUsIGJvb2wgaXNPcGFxdWUpOworICAgIHZvaWQgc2V0Q29udGVu
dHNUb0NvbG9yKGNvbnN0IENvbG9yJik7CisKKyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KKyAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lk
dGgoKTsgfQorICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7
IH0KKyAgICBzdGF0aWMgaW50IGJ5dGVzUGVyUGl4ZWwoKSB7IHJldHVybiA0OyB9CisKKyAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclNpemVJbkJ5dGVzOyB9
CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkOworCisgICAgTGF5ZXJUZXh0dXJlKGJvb2wgaXNDb2xvciA9IGZhbHNlKTsKKyAgICB2b2lk
IHNldFRleHR1cmVJZChHcHVIYW5kbGUgaWQpCisgICAgeworICAgICAgICBtX2hhbmRsZSA9IGlk
OworCisgICAgICAgIC8vIFdlIGFzc3VtZSBpdCBpcyBhIG5ld2x5IGFsbG9jYXRlZCB0ZXh0dXJl
LAorICAgICAgICAvLyBhbmQgdGh1cyBlbXB0eSwgb3IgMCwgd2hpY2ggd291bGQgb2YgY291cnNl
CisgICAgICAgIC8vIGJlIGVtcHR5LgorICAgICAgICBtX3NpemUgPSBJbnRTaXplKCk7CisgICAg
ICAgIG1fYnVmZmVyU2l6ZUluQnl0ZXMgPSAwOworICAgIH0KKworICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KKworICAgIGludCBtX3Byb3Rl
Y3Rpb25Db3VudDsKKyAgICBHcHVIYW5kbGUgbV9oYW5kbGU7CisgICAgSW50U2l6ZSBtX3NpemU7
CisgICAgYm9vbCBtX2lzQ29sb3I7CisgICAgYm9vbCBtX2lzT3BhcXVlOworICAgIHNpemVfdCBt
X2J1ZmZlclNpemVJbkJ5dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gTGF5ZXJUZXh0
dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUaWxlLmNwcAppbmRleCA5MmI0NGZkNTExZTRmMDU0OTkzNjIzNzk1YTZl
YmFhMmIwNTkyZWY1Li4wZDk3M2FmMTQ2MzdlOWE1OWY1MDcxZGQ5NmU3NGY5MmZmOTZlZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRpbGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIExheWVyVGlsZTo6fkxheWVyVGls
ZSgpCiAgICAgc2V0VmlzaWJsZShmYWxzZSk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlOjpzZXRDb250
ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBUaWxlSW5kZXgmIGluZGV4LCBib29sIGlzT3BhcXVlKQordm9pZCBMYXll
clRpbGU6OnNldENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRz
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBp
c09wYXF1ZSkKIHsKICAgICBzZXRUZXh0dXJlKHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
KCktPnRleHR1cmVGb3JUaWxlZENvbnRlbnRzKGNvbnRlbnRzLCB0aWxlUmVjdCwgaW5kZXgsIGlz
T3BhcXVlKSk7CiB9CkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgTGF5ZXJUaWxlOjpzZXRDb250ZW50
c1RvQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHNldFRleHR1cmUodGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZUZvckNvbG9yKGNvbG9yKSk7CiB9CiAKLXZvaWQg
TGF5ZXJUaWxlOjp1cGRhdGVDb250ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVu
dHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJv
b2wgaXNPcGFxdWUpCit2b2lkIExheWVyVGlsZTo6dXBkYXRlQ29udGVudHMoY29uc3QgTGF5ZXJU
ZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29u
c3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUpCiB7CiAgICAgc2V0VGV4dHVyZSh0
ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT51cGRhdGVDb250ZW50cyhtX3RleHR1cmUs
IGNvbnRlbnRzLCBkaXJ0eVJlY3QsIHRpbGVSZWN0LCBpc09wYXF1ZSkpOwogfQpAQCAtNzcsNyAr
NzcsNyBAQCB2b2lkIExheWVyVGlsZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAg
IG1fdGV4dHVyZS0+dW5wcm90ZWN0KCk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlOjpzZXRUZXh0dXJl
KFBhc3NSZWZQdHI8VGV4dHVyZT4gdGV4dHVyZSkKK3ZvaWQgTGF5ZXJUaWxlOjpzZXRUZXh0dXJl
KFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlKQogewogICAgIC8vIENsZWFyIHRoaXMg
ZmxhZyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiB0aGUgdGV4dHVyZSBwYXJhbWV0ZXIuCiAg
ICAgLy8gSWYgaXQncyAwLCBpc0RpcnR5KCkgd2lsbCByZXR1cm4gdHJ1ZSBhbnl3YXkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
VGlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clRpbGUuaAppbmRleCBjOGI3OGY4MWE0ZjRjYTdhMzcxNGUyOTI5N2UwZDUxZTYyODJlODk4Li4y
ODYwODE3YWE2NTQ3ZTRiNjUwM2IxMWExNDM5NGRlMTY4ZmQyNDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlLmgK
QEAgLTIxLDcgKzIxLDcgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAot
I2luY2x1ZGUgIlRleHR1cmUuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKIAogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgTGF5ZXJU
aWxlKCk7CiAgICAgfkxheWVyVGlsZSgpOwogCi0gICAgVGV4dHVyZSogdGV4dHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorICAgIExheWVyVGV4dHVyZSogdGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1Zpc2libGUo
KSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7
CkBAIC00Niw5ICs0Niw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzVGV4dHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dHVyZSAmJiBtX3RleHR1cmUtPmhhc1RleHR1cmUoKTsgfQogCi0gICAg
dm9pZCBzZXRDb250ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0
IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUaWxlSW5kZXgmLCBib29sIGlzT3BhcXVlKTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRz
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiwgYm9vbCBpc09wYXF1
ZSk7CiAgICAgdm9pZCBzZXRDb250ZW50c1RvQ29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lk
IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IFRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1
ZSk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBl
JiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0JiB0aWxl
UmVjdCwgYm9vbCBpc09wYXF1ZSk7CiAgICAgdm9pZCBkaXNjYXJkQ29udGVudHMoKTsKIAogICAg
IC8vIFRoZSBjdXJyZW50IHRleHR1cmUgaXMgYW4gYWNjdXJhdGUgcHJldmlldyBvZiB0aGlzIGxh
eWVyLCBidXQgYSBtb3JlCkBAIC02NCwxMCArNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UmVuZGVyRG9uZSgpIHsgbV9uZWVkc1JlbmRlciA9IERvZXNOb3ROZWVkUmVuZGVyOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBzZXRUZXh0dXJlKFBhc3NSZWZQdHI8VGV4dHVyZT4pOworICAgIHZv
aWQgc2V0VGV4dHVyZShQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4pOwogCiAgICAgLy8gTmV2ZXIg
YXNzaWduIHRvIG1fdGV4dHVyZSBkaXJlY3RseSwgdXNlIHNldFRleHR1cmUoKSBhYm92ZS4KLSAg
ICBSZWZQdHI8VGV4dHVyZT4gbV90ZXh0dXJlOworICAgIFJlZlB0cjxMYXllclRleHR1cmU+IG1f
dGV4dHVyZTsKICAgICBib29sIG1fY29udGVudHNEaXJ0eSA6IDE7CiAgICAgYm9vbCBtX3Zpc2li
bGUgOiAxOwogICAgIHVuc2lnbmVkIG1fbmVlZHNSZW5kZXIgOiAyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5j
cHAKaW5kZXggNWQwODBkMGRiOGU4MWVmZDY4N2Y1NzI4ODBjNmM3ZTQ5MTgyMTI1YS4uY2ExNDVm
ZTJmZWZkYTNlNzQ3M2U2YmRmM2ZkNzYwNTFkNTc2ZDdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3Bw
CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHNJZk5lZWRlZChkb3VibGUgc2NhbGUpCiAgICAgICAgICAgICAgICAgLy8gcHJldmlldy4KICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIHpvb20gcHJldmlldyBvbmx5IHdvcmtzIGlmIHdl
IGRvbid0IHJlLXRpbGUgdGhlCiAgICAgICAgICAgICAgICAgLy8gbGF5ZXIuIFdlIG5lZWQgdG8g
c3RvcmUgdGV4dHVyZSBjb29yZGluYXRlcyBpbgotICAgICAgICAgICAgICAgIC8vIFdlYkNvcmU6
OlRleHR1cmUgdG8gYmUgYWJsZSB0byBmaXggdGhhdC4KKyAgICAgICAgICAgICAgICAvLyBXZWJD
b3JlOjpMYXllclRleHR1cmUgdG8gYmUgYWJsZSB0byBmaXggdGhhdC4KICAgICAgICAgICAgICAg
ICBpZiAoZGlkUmVzaXplICYmICEoaXNab29tSm9iICYmIHdhc09uZVRpbGUgJiYgaXNPbmVUaWxl
KSkKICAgICAgICAgICAgICAgICAgICAgYWRkVGV4dHVyZUpvYihUZXh0dXJlSm9iOjpkaXNjYXJk
Q29udGVudHModGlsZVJlY3QpKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC00OTIsNyArNDky
LDcgQEAgYm9vbCBMYXllclRpbGVyOjpkcmF3VGlsZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBs
YXllciwgZG91YmxlIHNjYWxlLCBjb25zdCBUaWwKIAogICAgIGlmICh2aXNpYmxlKSB7CiAgICAg
ICAgIGlmICh0aWxlLT5oYXNUZXh0dXJlKCkpIHsKLSAgICAgICAgICAgIFRleHR1cmUqIHRleHR1
cmUgPSB0aWxlLT50ZXh0dXJlKCk7CisgICAgICAgICAgICBMYXllclRleHR1cmUqIHRleHR1cmUg
PSB0aWxlLT50ZXh0dXJlKCk7CiAgICAgICAgICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZCgpLT50ZXh0dXJlQWNjZXNzZWQodGV4dHVyZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91
bGREcmF3VGlsZSkgewpAQCAtNjcxLDcgKzY3MSw3IEBAIEludFJlY3QgTGF5ZXJUaWxlcjo6cmVj
dEZvclRpbGUoY29uc3QgVGlsZUluZGV4JiBpbmRleCwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQog
ICAgIHJldHVybiBJbnRSZWN0KG9yaWdpbiwgc2l6ZSk7CiB9CiAKLVRleHR1cmUqIExheWVyVGls
ZXI6OmNvbnRlbnRzVGV4dHVyZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKikKK0xheWVyVGV4dHVy
ZSogTGF5ZXJUaWxlcjo6Y29udGVudHNUZXh0dXJlKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqKQog
ewogICAgIEFTU0VSVChtX3RpbGVzLnNpemUoKSA9PSAxKTsKICAgICBpZiAobV90aWxlcy5zaXpl
KCkgIT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJUaWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGVyLmgKaW5kZXggZGUyNGYyZDg0NDAzZDQ4OWEyZmQ3ZGI1NGIz
NTY3NmZmNWM5MWNjZS4uNTJhZDViMzdiMGMyZTY5ODdmM2NhMGUyNjE5YTU1NzI5MjdkMjk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclRpbGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBsYXllckNvbXBvc2l0aW5nVGhyZWFkRGVzdHJveWVkKExheWVyQ29tcG9zaXRpbmdUaHJl
YWQqKTsKICAgICB2aXJ0dWFsIHZvaWQgbGF5ZXJWaXNpYmlsaXR5Q2hhbmdlZChMYXllckNvbXBv
c2l0aW5nVGhyZWFkKiwgYm9vbCB2aXNpYmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4
dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7Ci0gICAgdmlydHVhbCBUZXh0
dXJlKiBjb250ZW50c1RleHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOworICAgIHZpcnR1
YWwgTGF5ZXJUZXh0dXJlKiBjb250ZW50c1RleHR1cmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCop
OwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCos
IGRvdWJsZSBzY2FsZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVT
MlByb2dyYW0mKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZXMoTGF5ZXJDb21wb3Np
dGluZ1RocmVhZCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxDb21taXQoKTsKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gRGlzY2FyZENvbnRl
bnRzIHx8IHR5cGUgPT0gRGlydHlDb250ZW50cyk7CiAgICAgICAgIH0KIAotICAgICAgICBUZXh0
dXJlSm9iKFR5cGUgdHlwZSwgY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNPcGFxdWUpCisgICAgICAgIFRleHR1cmVKb2Io
VHlwZSB0eXBlLCBjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzT3BhcXVlKQogICAgICAgICAgICAgOiBtX3R5cGUo
dHlwZSkKICAgICAgICAgICAgICwgbV9jb250ZW50cyhjb250ZW50cykKICAgICAgICAgICAgICwg
bV9pc09wYXF1ZShpc09wYXF1ZSkKQEAgLTEyMSwxMiArMTIxLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBBU1NFUlQodHlwZSA9PSBTZXRDb250ZW50c1RvQ29sb3IpOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIFRleHR1cmVKb2Igc2V0Q29udGVudHMoY29uc3QgVGV4dHVyZTo6SG9z
dFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QsIGJvb2wgaXNPcGFx
dWUpCisgICAgICAgIHN0YXRpYyBUZXh0dXJlSm9iIHNldENvbnRlbnRzKGNvbnN0IExheWVyVGV4
dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QsIGJv
b2wgaXNPcGFxdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBUZXh0dXJlSm9iKFNl
dENvbnRlbnRzLCBjb250ZW50cywgY29udGVudHNSZWN0LCBpc09wYXF1ZSk7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIFRleHR1cmVKb2Igc2V0Q29udGVudHNUb0NvbG9yKGNvbnN0IENvbG9y
JiBjb2xvciwgY29uc3QgVGlsZUluZGV4JiBpbmRleCkgeyByZXR1cm4gVGV4dHVyZUpvYihTZXRD
b250ZW50c1RvQ29sb3IsIGNvbG9yLCBpbmRleCk7IH0KLSAgICAgICAgc3RhdGljIFRleHR1cmVK
b2IgdXBkYXRlQ29udGVudHMoY29uc3QgVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNPcGFxdWUpIHsgcmV0dXJuIFRleHR1cmVKb2Io
VXBkYXRlQ29udGVudHMsIGNvbnRlbnRzLCBkaXJ0eVJlY3QsIGlzT3BhcXVlKTsgfQorICAgICAg
ICBzdGF0aWMgVGV4dHVyZUpvYiB1cGRhdGVDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhv
c3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzT3BhcXVl
KSB7IHJldHVybiBUZXh0dXJlSm9iKFVwZGF0ZUNvbnRlbnRzLCBjb250ZW50cywgZGlydHlSZWN0
LCBpc09wYXF1ZSk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgZGlzY2FyZENvbnRlbnRz
KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgeyByZXR1cm4gVGV4dHVyZUpvYihEaXNjYXJkQ29u
dGVudHMsIGRpcnR5UmVjdCk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgcmVzaXplQ29u
dGVudHMoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkgeyByZXR1cm4gVGV4dHVyZUpvYihSZXNpemVD
b250ZW50cywgbmV3U2l6ZSk7IH0KICAgICAgICAgc3RhdGljIFRleHR1cmVKb2IgZGlydHlDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIHsgcmV0dXJuIFRleHR1cmVKb2IoRGlydHlD
b250ZW50cywgZGlydHlSZWN0KTsgfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gbV90eXBlID09IFVua25vd247IH0KIAogICAgICAg
ICBUeXBlIG1fdHlwZTsKLSAgICAgICAgVGV4dHVyZTo6SG9zdFR5cGUgbV9jb250ZW50czsKKyAg
ICAgICAgTGF5ZXJUZXh0dXJlOjpIb3N0VHlwZSBtX2NvbnRlbnRzOwogICAgICAgICBib29sIG1f
aXNPcGFxdWU7CiAgICAgICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgICAgIENvbG9yIG1f
Y29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9UZXh0dXJlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2VmNDU2
Mzc3MzYyOWFlZTkxNmMxMmM5MTE4Y2VjNDAxYzZlODdhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L1RleHR1cmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHR1cmUuaCIKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKLQotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgot
I2luY2x1ZGUgIlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxHTEVTMi9nbDIu
aD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1UZXh0dXJlOjpUZXh0dXJlKGJvb2wgaXND
b2xvcikKLSAgICA6IG1fcHJvdGVjdGlvbkNvdW50KDApCi0gICAgLCBtX2hhbmRsZSgwKQotICAg
ICwgbV9pc0NvbG9yKGlzQ29sb3IpCi0gICAgLCBtX2lzT3BhcXVlKGZhbHNlKQotICAgICwgbV9i
dWZmZXJTaXplSW5CeXRlcygwKQotewotICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
KCktPmluc3RhbGwodGhpcywgSW50U2l6ZSgpLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOwotfQotCi1UZXh0dXJlOjp+VGV4dHVyZSgpCi17Ci0g
ICAgdGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQoKS0+dGV4dHVyZURlc3Ryb3llZCh0aGlz
KTsKLX0KLQotdm9pZCBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0
VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYg
dGlsZSwgYm9vbCBpc09wYXF1ZSkKLXsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcihtX2hhbmRsZSk7Ci0gICAg
bV9oYW5kbGUgPSBjb250ZW50czsKLSAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZUluQnl0ZXMgPSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OmJ1ZmZlclNpemVJbkJ5dGVzKG1faGFuZGxl
KTsKLSAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpLT50ZXh0dXJlU2l6ZUluQnl0
ZXNDaGFuZ2VkKHRoaXMsIG5ld0J1ZmZlclNpemVJbkJ5dGVzIC0gbV9idWZmZXJTaXplSW5CeXRl
cyk7Ci0gICAgbV9idWZmZXJTaXplSW5CeXRlcyA9IG5ld0J1ZmZlclNpemVJbkJ5dGVzOwotfQot
Ci12b2lkIFRleHR1cmU6OnNldENvbnRlbnRzVG9Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCi17
Ci0gICAgbV9pc09wYXF1ZSA9ICFjb2xvci5oYXNBbHBoYSgpOwotICAgIFJHQkEzMiByZ2JhID0g
Y29sb3IucmdiKCk7Ci0KLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6ZGVzdHJveUJ1ZmZlcihtX2hhbmRsZSk7Ci0KLSAgICBtX2hhbmRs
ZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Y3JlYXRlQnVmZmVyKEludFNpemUo
MSwgMSksIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2Fy
eSk7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dCogZ2MgPSBsb2NrQnVmZmVyRHJhd2FibGUobV9oYW5kbGUpOwotICAgIGdjLT5zZXRG
aWxsQ29sb3IocmdiYSk7Ci0gICAgZ2MtPmFkZEZpbGxSZWN0KEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpGbG9hdFJlY3QoMCwgMCwgMSwgMSkpOwotICAgIHJlbGVhc2VCdWZmZXJEcmF3YWJsZShtX2hh
bmRsZSk7Ci0KLSAgICBJbnRTaXplIG9sZFNpemUgPSBtX3NpemU7Ci0gICAgbV9zaXplID0gSW50
U2l6ZSgxLCAxKTsKLSAgICBpZiAobV9zaXplICE9IG9sZFNpemUpCi0gICAgICAgIHRleHR1cmVD
YWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPnRleHR1cmVSZXNpemVkKHRoaXMsIG9sZFNpemUpOwot
fQotCi1ib29sIFRleHR1cmU6OnByb3RlY3QoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCi17Ci0gICAgaWYgKCFoYXNU
ZXh0dXJlKCkpIHsKLSAgICAgICAgLy8gV2UgbWF5IGhhdmUgYmVlbiBldmljdGVkIGJ5IHRoZSBU
ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCwKLSAgICAgICAgLy8gYXR0ZW1wdCB0byBpbnN0
YWxsIHVzIGFnYWluLgotICAgICAgICBpZiAoIXRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFk
KCktPmluc3RhbGwodGhpcywgc2l6ZSwgdHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgKyttX3Byb3RlY3Rpb25Db3VudDsKLQotICAgIGlmIChtX3NpemUgPT0g
c2l6ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZCgpLT5yZXNpemVUZXh0dXJlKHRoaXMsIHNpemUsIHR5cGUpOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU1Mjk0MDg2NGEwODE1YzE4NjBhMjkxMWM5NmNlOGVhM2VmMmEzY2EuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0j
aWZuZGVmIFRleHR1cmVfaAotI2RlZmluZSBUZXh0dXJlX2gKLQotI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIkludFNpemUuaCIKLQotI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IENvbG9yOwotY2xhc3MgSW50UmVjdDsKLWNsYXNzIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkOwotCi0vLyBUZXh0dXJlIGVuY2Fwc3VsYXRlcyBhIHZvbGF0aWxlIHRleHR1cmUgLSBhdCBh
bnkgdGltZSwgdGhlIHVuZGVybHlpbmcgT3BlbkdMCi0vLyB0ZXh0dXJlIG1heSBiZSBkZWxldGVk
IGJ5IHRoZSBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC4gVGhlIHVzZXIgbXVzdAotLy8g
Y2hlY2sgdXNpbmcgVGV4dHVyZTo6aXNEaXJ0eSgpIGltbWVkaWF0ZWx5IGJlZm9yZSB1c2luZyBp
dCwgZXZlcnkgdGltZS4KLS8vIFRoZSBvbmx5IHdheSB0byBwcmV2ZW50IGV2aWN0aW9uIHRoaXMg
aXMgdG8gY2FsbCBUZXh0dXJlOjpwcm90ZWN0KCkuCi0vLyBJZiB0aGUgdGV4dHVyZSBpc0RpcnR5
KCksIHlvdSBtdXN0IHVwZGF0ZUNvbnRlbnRzKCkgYmVmb3JlIHlvdSBjYW4gdXNlIGl0LgotY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlPiBjcmVhdGUoYm9vbCBpc0NvbG9yID0gZmFsc2UpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUoaXNDb2xvcikpOwotICAg
IH0KLQotICAgIH5UZXh0dXJlKCk7Ci0KLSAgICB0eXBlZGVmIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QnVmZmVyKiBHcHVIYW5kbGU7Ci0gICAgdHlwZWRlZiBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogSG9zdFR5cGU7Ci0KLSAgICBHcHVIYW5kbGUgdGV4
dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGU7IH0KLSAgICBib29sIGlzRGlydHkoKSBj
b25zdCB7IHJldHVybiAhbV9oYW5kbGU7IH0KLSAgICBib29sIGhhc1RleHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX2hhbmRsZTsgfQotCi0gICAgYm9vbCBpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbG9yOyB9Ci0gICAgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPcGFx
dWU7IH0KLQotICAgIGJvb2wgaXNQcm90ZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb3RlY3Rp
b25Db3VudCA+IDA7IH0KLSAgICB2b2lkIHByb3RlY3QoKSB7ICsrbV9wcm90ZWN0aW9uQ291bnQ7
IH0KLSAgICB2b2lkIHVucHJvdGVjdCgpIHsgLS1tX3Byb3RlY3Rpb25Db3VudDsgfQotCi0gICAg
Ly8gVGhpcyB3aWxsIGVuc3VyZSB0aGUgdGV4dHVyZSBoYXMgYmFja2luZyB3aXRoIHRoZSBzcGVj
aWZpZWQgc2l6ZQotICAgIGJvb2wgcHJvdGVjdChjb25zdCBJbnRTaXplJiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCYWNrZWRXaGVuTmVjZXNzYXJ5KTsKLQotICAgIHZvaWQgdXBkYXRlQ29udGVudHMo
Y29uc3QgSG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0
IEludFJlY3QmIHRpbGUsIGJvb2wgaXNPcGFxdWUpOwotICAgIHZvaWQgc2V0Q29udGVudHNUb0Nv
bG9yKGNvbnN0IENvbG9yJik7Ci0KLSAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NpemUud2lkdGgoKTsg
fQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3NpemUuaGVpZ2h0KCk7IH0KLSAg
ICBzdGF0aWMgaW50IGJ5dGVzUGVyUGl4ZWwoKSB7IHJldHVybiA0OyB9Ci0KLSAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlclNpemVJbkJ5dGVzOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOwot
Ci0gICAgVGV4dHVyZShib29sIGlzQ29sb3IgPSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRUZXh0dXJl
SWQoR3B1SGFuZGxlIGlkKQotICAgIHsKLSAgICAgICAgbV9oYW5kbGUgPSBpZDsKLQotICAgICAg
ICAvLyBXZSBhc3N1bWUgaXQgaXMgYSBuZXdseSBhbGxvY2F0ZWQgdGV4dHVyZSwKLSAgICAgICAg
Ly8gYW5kIHRodXMgZW1wdHksIG9yIDAsIHdoaWNoIHdvdWxkIG9mIGNvdXJzZQotICAgICAgICAv
LyBiZSBlbXB0eS4KLSAgICAgICAgbV9zaXplID0gSW50U2l6ZSgpOwotICAgICAgICBtX2J1ZmZl
clNpemVJbkJ5dGVzID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9Ci0KLSAgICBpbnQgbV9wcm90ZWN0aW9uQ291bnQ7
Ci0gICAgR3B1SGFuZGxlIG1faGFuZGxlOwotICAgIEludFNpemUgbV9zaXplOwotICAgIGJvb2wg
bV9pc0NvbG9yOwotICAgIGJvb2wgbV9pc09wYXF1ZTsKLSAgICBzaXplX3QgbV9idWZmZXJTaXpl
SW5CeXRlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2VuZGlmIC8vIFRleHR1cmVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2Fj
aGVDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAppbmRleCA4NjY3
OWYzM2M1Yjk1YTZjZGNhNDFkNDUzZmZhNzBkYjUzM2FjOTdlLi5iNjUwMDViMDFiZDcwYzNmNWFl
MWU1NzUyZDEwODk3NjhjNDQzMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVD
YWNoZUNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3Qg
aW50IGRlZmF1bHRNZW1vcnlMaW1pdCA9IDY0ICogMTAyNCAqIDEwMjQ7IC8vIE1lYXN1cmVkIGlu
IGJ5dGVzLgogLy8gYmVmb3JlIHNvbWVvbmUgaGFzIGEgY2hhbmNlIHRvIHByb3RlY3QgaXQgZm9y
IGxlZ2l0aW1hdGUgcmVhc29ucy4KIGNsYXNzIFRleHR1cmVQcm90ZWN0b3IgewogcHVibGljOgot
ICAgIFRleHR1cmVQcm90ZWN0b3IoVGV4dHVyZSogdGV4dHVyZSkKKyAgICBUZXh0dXJlUHJvdGVj
dG9yKExheWVyVGV4dHVyZSogdGV4dHVyZSkKICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkK
ICAgICB7CiAgICAgICAgIG1fdGV4dHVyZS0+cHJvdGVjdCgpOwpAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmUqIG1fdGV4dHVyZTsKKyAgICBM
YXllclRleHR1cmUqIG1fdGV4dHVyZTsKIH07CiAKIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkOjpUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZCgpCkBAIC01OCwxMiArNTgsMTIgQEAg
VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OlRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhy
ZWFkKCkKIHsKIH0KIAotVGV4dHVyZTo6R3B1SGFuZGxlIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5n
VGhyZWFkOjphbGxvY2F0ZVRleHR1cmVJZChjb25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgdHlwZSkKK0xheWVyVGV4dHVyZTo6R3B1
SGFuZGxlIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjphbGxvY2F0ZVRleHR1cmVJZChj
b25zdCBJbnRTaXplJiBzaXplLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZl
clR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpjcmVhdGVCdWZmZXIoc2l6ZSwgdHlwZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVUZXh0dXJl
SWQoVGV4dHVyZTo6R3B1SGFuZGxlIGlkKQorc3RhdGljIHZvaWQgZnJlZVRleHR1cmVJZChMYXll
clRleHR1cmU6OkdwdUhhbmRsZSBpZCkKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OmRlc3Ryb3lCdWZmZXIoaWQpOwogfQpAQCAtNzcsMjIgKzc3LDIyIEBAIHZvaWQgVGV4
dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmNvbGxlY3RHYXJiYWdlKCkKICAgICBtX2dhcmJh
Z2UuY2xlYXIoKTsKIH0KIAotdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4
dHVyZVJlc2l6ZWQoVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgb2xkU2l6ZSkKK3Zv
aWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVSZXNpemVkKExheWVyVGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgb2xkU2l6ZSkKIHsKLSAgICBpbnQgZGVsdGEg
PSAodGV4dHVyZS0+d2lkdGgoKSAqIHRleHR1cmUtPmhlaWdodCgpIC0gb2xkU2l6ZS53aWR0aCgp
ICogb2xkU2l6ZS5oZWlnaHQoKSkgKiBUZXh0dXJlOjpieXRlc1BlclBpeGVsKCk7CisgICAgaW50
IGRlbHRhID0gKHRleHR1cmUtPndpZHRoKCkgKiB0ZXh0dXJlLT5oZWlnaHQoKSAtIG9sZFNpemUu
d2lkdGgoKSAqIG9sZFNpemUuaGVpZ2h0KCkpICogTGF5ZXJUZXh0dXJlOjpieXRlc1BlclBpeGVs
KCk7CiAgICAgaW5jTWVtb3J5VXNhZ2UoZGVsdGEpOwogICAgIGlmIChkZWx0YSA+IDApCiAgICAg
ICAgIHBydW5lKCk7CiB9CiAKLXZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRl
eHR1cmVTaXplSW5CeXRlc0NoYW5nZWQoVGV4dHVyZSosIGludCBkZWx0YSkKK3ZvaWQgVGV4dHVy
ZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVTaXplSW5CeXRlc0NoYW5nZWQoTGF5ZXJU
ZXh0dXJlKiwgaW50IGRlbHRhKQogewogICAgIGluY01lbW9yeVVzYWdlKGRlbHRhKTsKICAgICBp
ZiAoZGVsdGEgPiAwKQogICAgICAgICBwcnVuZSgpOwogfQogCi12b2lkIFRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRGVzdHJveWVkKFRleHR1cmUqIHRleHR1cmUpCit2b2lk
IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRGVzdHJveWVkKExheWVyVGV4
dHVyZSogdGV4dHVyZSkKIHsKICAgICBpZiAodGV4dHVyZS0+aXNDb2xvcigpKSB7CiAgICAgICAg
IG1fZ2FyYmFnZS5hcHBlbmQoWm9tYmllVGV4dHVyZSh0ZXh0dXJlKSk7CkBAIC0xMDQsMTMgKzEw
NCwxMyBAQCB2b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRGVzdHJv
eWVkKFRleHR1cmUqIHRleHR1cmUpCiAgICAgbV90ZXh0dXJlcy5yZW1vdmUoaXQpOwogfQogCi1i
b29sIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjppbnN0YWxsKFRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
QnVmZmVyVHlwZSB0eXBlKQorYm9vbCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6aW5z
dGFsbChMYXllclRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHNpemUsIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSB0eXBlKQogewogICAgIGlmICghdGV4
dHVyZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXRleHR1cmUtPmhhc1RleHR1
cmUoKSAmJiAhc2l6ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgVGV4dHVyZTo6R3B1SGFuZGxlIHRl
eHR1cmVJZCA9IGFsbG9jYXRlVGV4dHVyZUlkKHNpemUsIHR5cGUpOworICAgICAgICBMYXllclRl
eHR1cmU6OkdwdUhhbmRsZSB0ZXh0dXJlSWQgPSBhbGxvY2F0ZVRleHR1cmVJZChzaXplLCB0eXBl
KTsKICAgICAgICAgaWYgKCF0ZXh0dXJlSWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTEyNSwxMiArMTI1LDEyIEBAIGJvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6
Omluc3RhbGwoVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnJlc2l6ZVRl
eHR1cmUoVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJUeXBlIHR5cGUpCitib29sIFRleHR1cmVDYWNoZUNv
bXBvc2l0aW5nVGhyZWFkOjpyZXNpemVUZXh0dXJlKExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXJU
eXBlIHR5cGUpCiB7CiAgICAgSW50U2l6ZSBvbGRTaXplID0gdGV4dHVyZS0+c2l6ZSgpOwogCiAg
ICAgLy8gUmVhbGxvY2F0ZSB0aGUgYnVmZmVyCi0gICAgVGV4dHVyZTo6R3B1SGFuZGxlIHRleHR1
cmVJZCA9IGFsbG9jYXRlVGV4dHVyZUlkKHNpemUsIHR5cGUpOworICAgIExheWVyVGV4dHVyZTo6
R3B1SGFuZGxlIHRleHR1cmVJZCA9IGFsbG9jYXRlVGV4dHVyZUlkKHNpemUsIHR5cGUpOwogICAg
IGlmICghdGV4dHVyZUlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0NiwxMCArMTQ2
LDEwIEBAIHZvaWQgVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OmV2aWN0KGNvbnN0IFRl
eHR1cmVTZXQ6Oml0ZXJhdG9yJiBpdCkKICAgICBpZiAoaXQgPT0gbV90ZXh0dXJlcy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVGV4dHVyZSogdGV4dHVyZSA9ICppdDsKKyAgICBMYXll
clRleHR1cmUqIHRleHR1cmUgPSAqaXQ7CiAgICAgaWYgKHRleHR1cmUtPmhhc1RleHR1cmUoKSkg
ewogICAgICAgICBpbnQgZGVsdGEgPSAwOwotICAgICAgICBkZWx0YSArPSB0ZXh0dXJlLT53aWR0
aCgpICogdGV4dHVyZS0+aGVpZ2h0KCkgKiBUZXh0dXJlOjpieXRlc1BlclBpeGVsKCk7CisgICAg
ICAgIGRlbHRhICs9IHRleHR1cmUtPndpZHRoKCkgKiB0ZXh0dXJlLT5oZWlnaHQoKSAqIExheWVy
VGV4dHVyZTo6Ynl0ZXNQZXJQaXhlbCgpOwogICAgICAgICBkZWx0YSArPSB0ZXh0dXJlLT5zaXpl
SW5CeXRlcygpOwogICAgICAgICBpZiAoZGVsdGEpCiAgICAgICAgICAgICBkZWNNZW1vcnlVc2Fn
ZShkZWx0YSk7CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGlu
Z1RocmVhZDo6ZXZpY3QoY29uc3QgVGV4dHVyZVNldDo6aXRlcmF0b3ImIGl0KQogICAgIHRleHR1
cmUtPnNldFRleHR1cmVJZCgwKTsKIH0KIAotdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1Ro
cmVhZDo6dGV4dHVyZUFjY2Vzc2VkKFRleHR1cmUqIHRleHR1cmUpCit2b2lkIFRleHR1cmVDYWNo
ZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlQWNjZXNzZWQoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJl
KQogewogICAgIGlmICh0ZXh0dXJlLT5pc0NvbG9yKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE4
Myw3ICsxODMsNyBAQCB2b2lkIFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjpwcnVuZShz
aXplX3QgbGltaXQpCiAgICAgd2hpbGUgKG1fbWVtb3J5VXNhZ2UgPiBsaW1pdCkgewogICAgICAg
ICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoVGV4dHVyZVNldDo6aXRlcmF0b3Ig
aXQgPSBtX3RleHR1cmVzLmJlZ2luKCk7IGl0ICE9IG1fdGV4dHVyZXMuZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgICAgIFRleHR1cmUqIHRleHR1cmUgPSAqaXQ7CisgICAgICAgICAgICBMYXllclRl
eHR1cmUqIHRleHR1cmUgPSAqaXQ7CiAgICAgICAgICAgICBpZiAodGV4dHVyZS0+aXNQcm90ZWN0
ZWQoKSB8fCAodGV4dHVyZS0+c2l6ZSgpLmlzRW1wdHkoKSAmJiAhdGV4dHVyZS0+c2l6ZUluQnl0
ZXMoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBldmljdChpdCk7
CkBAIC0yMDksOSArMjA5LDkgQEAgdm9pZCBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6
c2V0TWVtb3J5VXNhZ2Uoc2l6ZV90IG1lbW9yeVVzYWdlKQogI2VuZGlmCiB9CiAKLVBhc3NSZWZQ
dHI8VGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JUaWxl
ZENvbnRlbnRzKGNvbnN0IFRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYgaW5kZXgsIGJvb2wgaXNPcGFxdWUpCitQYXNz
UmVmUHRyPExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1
cmVGb3JUaWxlZENvbnRlbnRzKGNvbnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRz
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVGlsZUluZGV4JiBpbmRleCwgYm9vbCBp
c09wYXF1ZSkKIHsKLSAgICBSZWZQdHI8VGV4dHVyZT4gdGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUo
KTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlID0gY3JlYXRlVGV4dHVyZSgpOwog
CiAgICAgLy8gUHJvdGVjdCBuZXdseSBjcmVhdGVkIHRleHR1cmUgZnJvbSBiZWluZyBldmljdGVk
LgogICAgIFRleHR1cmVQcm90ZWN0b3IgcHJvdGVjdG9yKHRleHR1cmUuZ2V0KCkpOwpAQCAtMjIx
LDcgKzIyMSw3IEBAIFBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdU
aHJlYWQ6OnRleHR1cmVGb3JUaWxlZENvbnRlbnRzKGNvbnN0CiAgICAgcmV0dXJuIHRleHR1cmUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkOjp0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorUGFzc1JlZlB0
cjxMYXllclRleHR1cmU+IFRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkOjp0ZXh0dXJlRm9y
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogewogICAgIC8vIEp1c3QgdG8gbWFrZSBzdXJlIHdl
IGRvbid0IGdldCBmb29sZWQgYnkgc29tZSBtYWxpY2lvdXMgd2ViIHBhZ2UKICAgICAvLyBpbnRv
IGNhY2hpbmcgbWlsbGlvbnMgb2YgY29sb3IgdGV4dHVyZXMuCkBAIC0yMjksOSArMjI5LDkgQEAg
UGFzc1JlZlB0cjxUZXh0dXJlPiBUZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZDo6dGV4dHVy
ZUZvckNvbG9yKGNvbnN0IENvbG9yJgogICAgICAgICBtX2NvbG9ycy5jbGVhcigpOwogCiAgICAg
Q29sb3JUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fY29sb3JzLmZpbmQoY29sb3IpOwotICAg
IFJlZlB0cjxUZXh0dXJlPiB0ZXh0dXJlOworICAgIFJlZlB0cjxMYXllclRleHR1cmU+IHRleHR1
cmU7CiAgICAgaWYgKGl0ID09IG1fY29sb3JzLmVuZCgpKSB7Ci0gICAgICAgIHRleHR1cmUgPSBU
ZXh0dXJlOjpjcmVhdGUodHJ1ZSAvKiBpc0NvbG9yICovKTsKKyAgICAgICAgdGV4dHVyZSA9IExh
eWVyVGV4dHVyZTo6Y3JlYXRlKHRydWUgLyogaXNDb2xvciAqLyk7CiAjaWYgREVCVUdfVEVYVFVS
RV9NRU1PUllfVVNBR0UKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDcmVhdGluZyB0ZXh0dXJl
IDB4JXggZm9yIGNvbG9yIDB4JXhcbiIsIHRleHR1cmUuZ2V0KCksIGNvbG9yLnJnYigpKTsKICNl
bmRpZgpAQCAtMjQ3LDkgKzI0Nyw5IEBAIFBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZUNhY2hl
Q29tcG9zaXRpbmdUaHJlYWQ6OnRleHR1cmVGb3JDb2xvcihjb25zdCBDb2xvciYKICAgICByZXR1
cm4gdGV4dHVyZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZUNh
Y2hlQ29tcG9zaXRpbmdUaHJlYWQ6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxUZXh0dXJl
PiYgdGV4dHVyZUluLCBjb25zdCBUZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUp
CitQYXNzUmVmUHRyPExheWVyVGV4dHVyZT4gVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQ6
OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxMYXllclRleHR1cmU+JiB0ZXh0dXJlSW4sIGNv
bnN0IExheWVyVGV4dHVyZTo6SG9zdFR5cGUmIGNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBib29sIGlzT3BhcXVlKQogewotICAgIFJl
ZlB0cjxUZXh0dXJlPiB0ZXh0dXJlKHRleHR1cmVJbik7CisgICAgUmVmUHRyPExheWVyVGV4dHVy
ZT4gdGV4dHVyZSh0ZXh0dXJlSW4pOwogCiAgICAgLy8gSWYgdGhlIHRleHR1cmUgd2FzIDAsIG9y
IG5lZWRzIHRvIHRyYW5zaXRpb24gZnJvbSBhIHNvbGlkIGNvbG9yIHRleHR1cmUgdG8gYSBjb250
ZW50cyB0ZXh0dXJlLAogICAgIC8vIGNyZWF0ZSBhIG5ldyB0ZXh0dXJlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9UZXh0dXJlQ2FjaGVD
b21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9UZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVhZC5oCmluZGV4IGQ5NjFmNTExNjRh
YzFjOWQ5NzMwYzg2ZjM5YTgzMzQ1NWM2ODA0NjMuLjM3Y2IzYjAzODQwNGZiZTg0MTQzYjRkMDk3
ZjliYWM0OWI1MzE1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvVGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L1RleHR1cmVDYWNoZUNvbXBv
c2l0aW5nVGhyZWFkLmgKQEAgLTIyLDggKzIyLDggQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZS5o
IgogI2luY2x1ZGUgIkxheWVyVGlsZUluZGV4LmgiCi0jaW5jbHVkZSAiVGV4dHVyZS5oIgogCiAj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtNDUsMTcgKzQ1LDE3IEBAIHB1YmxpYzoKICAgICBmcmllbmQgVGV4dHVyZUNh
Y2hlQ29tcG9zaXRpbmdUaHJlYWQqIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCk7CiAK
ICAgICAvLyBDcmVhdGVzIGEgbmV3IHRleHR1cmUgbWFuYWdlZCBieSB0aGlzIGNhY2hlLgotICAg
IFBhc3NSZWZQdHI8VGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpCisgICAgUGFzc1JlZlB0cjxMYXll
clRleHR1cmU+IGNyZWF0ZVRleHR1cmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFRleHR1cmU6
OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlOjpjcmVhdGUoKTsKICAgICB9
CiAKICAgICAvLyBSZXRyaWV2ZSBhIHRleHR1cmUgZnJvbSB0aGUgY2FjaGUuCi0gICAgUGFzc1Jl
ZlB0cjxUZXh0dXJlPiB0ZXh0dXJlRm9yVGlsZWRDb250ZW50cyhjb25zdCBUZXh0dXJlOjpIb3N0
VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUaWxlSW5kZXgm
LCBib29sIGlzT3BhcXVlKTsKLSAgICBQYXNzUmVmUHRyPFRleHR1cmU+IHRleHR1cmVGb3JDb2xv
cihjb25zdCBDb2xvciYpOworICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlRm9y
VGlsZWRDb250ZW50cyhjb25zdCBMYXllclRleHR1cmU6Okhvc3RUeXBlJiBjb250ZW50cywgY29u
c3QgSW50UmVjdCYgdGlsZVJlY3QsIGNvbnN0IFRpbGVJbmRleCYsIGJvb2wgaXNPcGFxdWUpOwor
ICAgIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlPiB0ZXh0dXJlRm9yQ29sb3IoY29uc3QgQ29sb3Im
KTsKIAogICAgIC8vIFVwZGF0ZSBjb250ZW50cyBvZiBhbiBleGlzdGluZyB0ZXh0dXJlLCBvciBj
cmVhdGUgYSBuZXcgb25lIGlmIHRleHR1cmUgaXMgMC4KLSAgICBQYXNzUmVmUHRyPFRleHR1cmU+
IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxUZXh0dXJlPiYsIGNvbnN0IFRleHR1cmU6Okhv
c3RUeXBlJiBjb250ZW50cywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCwgYm9vbCBpc09wYXF1ZSk7CisgICAgUGFzc1JlZlB0cjxMYXllclRleHR1cmU+
IHVwZGF0ZUNvbnRlbnRzKGNvbnN0IFJlZlB0cjxMYXllclRleHR1cmU+JiwgY29uc3QgTGF5ZXJU
ZXh0dXJlOjpIb3N0VHlwZSYgY29udGVudHMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgY29u
c3QgSW50UmVjdCYgdGlsZVJlY3QsIGJvb2wgaXNPcGFxdWUpOwogCiAgICAgc2l6ZV90IG1lbW9y
eVVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlVc2FnZTsgfQogICAgIHNpemVfdCBtZW1v
cnlMaW1pdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5TGltaXQ7IH0KQEAgLTY5LDQyICs2OSw0
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBMUlUg
bGlzdC4KLSAgICB2b2lkIHRleHR1cmVBY2Nlc3NlZChUZXh0dXJlKik7CisgICAgdm9pZCB0ZXh0
dXJlQWNjZXNzZWQoTGF5ZXJUZXh0dXJlKik7CiAKICAgICAvLyBEZWxldGluZyBkZXN0cm95ZWQg
dGV4dHVyZXMgaXMgcHJvdmlkZWQgYXMgYSBzZXBhcmF0ZSBtZXRob2QsIGJlY2F1c2UKICAgICAv
LyB0aGVyZSBtaWdodCBub3QgYmUgYW4gT3BlbkdMIGNvbnRleHQgY3VycmVudCB3aGVuIHRoZSB0
ZXh0dXJlIGRlc3RydWN0b3IKICAgICAvLyB3YXMgY2FsbGVkLiBDYWxsaW5nIHRoaXMgbWFrZXMg
c3VyZSB0byBmcmVlIGFueSBzdWNoIHRleHR1cmVzLgogICAgIHZvaWQgY29sbGVjdEdhcmJhZ2Uo
KTsKIAotICAgIHZvaWQgdGV4dHVyZURlc3Ryb3llZChUZXh0dXJlKik7Ci0gICAgdm9pZCB0ZXh0
dXJlUmVzaXplZChUZXh0dXJlKiwgY29uc3QgSW50U2l6ZSYgb2xkU2l6ZSk7Ci0gICAgdm9pZCB0
ZXh0dXJlU2l6ZUluQnl0ZXNDaGFuZ2VkKFRleHR1cmUqLCBpbnQgZGVsdGEpOworICAgIHZvaWQg
dGV4dHVyZURlc3Ryb3llZChMYXllclRleHR1cmUqKTsKKyAgICB2b2lkIHRleHR1cmVSZXNpemVk
KExheWVyVGV4dHVyZSosIGNvbnN0IEludFNpemUmIG9sZFNpemUpOworICAgIHZvaWQgdGV4dHVy
ZVNpemVJbkJ5dGVzQ2hhbmdlZChMYXllclRleHR1cmUqLCBpbnQgZGVsdGEpOwogCiAgICAgLy8g
VW5kbyB0aGUgZWZmZWN0cyBvZiBldmljdGlvbiwgaWYgcG9zc2libGUuCi0gICAgYm9vbCBpbnN0
YWxsKFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSA9IEludFNpemUoMCwgMCks
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7Ci0gICAgYm9vbCByZXNp
emVUZXh0dXJlKFRleHR1cmUqLCBjb25zdCBJbnRTaXplJiBuZXdTaXplLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlclR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OkJhY2tlZFdoZW5OZWNlc3NhcnkpOworICAgIGJvb2wgaW5zdGFsbChMYXllclRleHR1
cmUqLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSA9IEludFNpemUoMCwgMCksIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CisgICAgYm9vbCByZXNpemVUZXh0dXJl
KExheWVyVGV4dHVyZSosIGNvbnN0IEludFNpemUmIG5ld1NpemUsIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpHcmFwaGljczo6QnVmZmVyVHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFpvbWJpZVRl
eHR1cmUgewotICAgICAgICBleHBsaWNpdCBab21iaWVUZXh0dXJlKFRleHR1cmUqIHRleHR1cmUp
CisgICAgICAgIGV4cGxpY2l0IFpvbWJpZVRleHR1cmUoTGF5ZXJUZXh0dXJlKiB0ZXh0dXJlKQog
ICAgICAgICAgICAgOiBpZCh0ZXh0dXJlLT50ZXh0dXJlSWQoKSkKICAgICAgICAgICAgICwgc2l6
ZSh0ZXh0dXJlLT5zaXplKCkpCiAgICAgICAgICAgICAsIHNpemVJbkJ5dGVzKHRleHR1cmUtPnNp
emVJbkJ5dGVzKCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1cmU6Okdw
dUhhbmRsZSBpZDsKKyAgICAgICAgTGF5ZXJUZXh0dXJlOjpHcHVIYW5kbGUgaWQ7CiAgICAgICAg
IEludFNpemUgc2l6ZTsKICAgICAgICAgc2l6ZV90IHNpemVJbkJ5dGVzOwogICAgIH07Ci0gICAg
dHlwZWRlZiBMaXN0SGFzaFNldDxUZXh0dXJlKiA+IFRleHR1cmVTZXQ7Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPFRpbGVJbmRleCwgUmVmUHRyPFRleHR1cmU+ID4gVGV4dHVyZU1hcDsKKyAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0PExheWVyVGV4dHVyZSogPiBUZXh0dXJlU2V0OworICAgIHR5cGVkZWYg
SGFzaE1hcDxUaWxlSW5kZXgsIFJlZlB0cjxMYXllclRleHR1cmU+ID4gVGV4dHVyZU1hcDsKICAg
ICB0eXBlZGVmIFZlY3Rvcjxab21iaWVUZXh0dXJlPiBHYXJiYWdlOwogCiAgICAgVGV4dHVyZUNh
Y2hlQ29tcG9zaXRpbmdUaHJlYWQoKTsKICAgICB+VGV4dHVyZUNhY2hlQ29tcG9zaXRpbmdUaHJl
YWQoKTsKIAotICAgIFRleHR1cmU6OkdwdUhhbmRsZSBhbGxvY2F0ZVRleHR1cmVJZChjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZm
ZXJUeXBlKTsKKyAgICBMYXllclRleHR1cmU6OkdwdUhhbmRsZSBhbGxvY2F0ZVRleHR1cmVJZChj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNz
OjpCdWZmZXJUeXBlKTsKIAogICAgIHZvaWQgaW5jTWVtb3J5VXNhZ2UoaW50IGRlbHRhKSB7IHNl
dE1lbW9yeVVzYWdlKG1lbW9yeVVzYWdlKCkgKyBkZWx0YSk7IH0KICAgICB2b2lkIGRlY01lbW9y
eVVzYWdlKGludCBkZWx0YSkgeyBzZXRNZW1vcnlVc2FnZShtZW1vcnlVc2FnZSgpIC0gZGVsdGEp
OyB9CkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKENvbG9yJiBzbG90KSB7IG5ldyAoJnNsb3QpIENvbG9yKCk7ICpy
ZWludGVycHJldF9jYXN0PFJHQkEzMio+KCZzbG90KSA9IENvbG9yOjp3aGl0ZTsgfQogICAgICAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBDb2xvciYgdmFsdWUpIHsgcmV0dXJu
ICF2YWx1ZS5pc1ZhbGlkKCkgJiYgdmFsdWUucmdiKCkgPT0gQ29sb3I6OndoaXRlOyB9CiAgICAg
fTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Q29sb3IsIFJlZlB0cjxUZXh0dXJlPiwgQ29sb3JIYXNo
LCBDb2xvckhhc2hUcmFpdHM+IENvbG9yVGV4dHVyZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
Q29sb3IsIFJlZlB0cjxMYXllclRleHR1cmU+LCBDb2xvckhhc2gsIENvbG9ySGFzaFRyYWl0cz4g
Q29sb3JUZXh0dXJlTWFwOwogICAgIENvbG9yVGV4dHVyZU1hcCBtX2NvbG9yczsKICAgICBHYXJi
YWdlIG1fZ2FyYmFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYk92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVy
bGF5LmNwcAppbmRleCBlMGU1ZTIzYzJmMGI4NTQ0ZWYyNTE3MDlmNTI2N2E5MjlhZTQyMGFlLi44
N2I2ZTdkYzlhMTk1MjZlMmZiMmZlNzg1YzY1NTY3ZjJmNWYzYjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViT3ZlcmxheS5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lk
IFdlYk92ZXJsYXlMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojp1cGxvYWRUZXh0dXJlc0lm
TmVlZGVkKExheWVyQ29tcG9zaQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVGV4dHVy
ZTo6SG9zdFR5cGUgdGV4dHVyZUNvbnRlbnRzID0gVGV4dHVyZTo6SG9zdFR5cGUoKTsKKyAgICBM
YXllclRleHR1cmU6Okhvc3RUeXBlIHRleHR1cmVDb250ZW50cyA9IExheWVyVGV4dHVyZTo6SG9z
dFR5cGUoKTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplOwogCiAgICAgaWYgKG1fZHJhd3NDb250
ZW50KSB7CkBAIC00OTYsNyArNDk2LDcgQEAgdm9pZCBXZWJPdmVybGF5TGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2kKICAgICAg
ICAgbV91cGxvYWRlZEltYWdlID0gbV9pbWFnZTsKICAgICB9CiAKLSAgICBtX3RleHR1cmUgPSBU
ZXh0dXJlOjpjcmVhdGUoKTsKKyAgICBtX3RleHR1cmUgPSBMYXllclRleHR1cmU6OmNyZWF0ZSgp
OwogICAgIG1fdGV4dHVyZS0+cHJvdGVjdChJbnRTaXplKCksIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6QmFja2VkV2hlbk5lY2Vzc2FyeSk7CiAgICAgSW50UmVjdCBiaXRtYXBSZWN0
KDAsIDAsIHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdodCgpKTsKICAgICBt
X3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1cmVDb250ZW50cywgYml0bWFwUmVjdCwgYml0
bWFwUmVjdCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJPdmVybGF5X3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViT3Zlcmxh
eV9wLmgKaW5kZXggNDZjZjk0OTJhZjA0ZGJlNTUzYzg2NGJhY2Q4MDU2YzZiODY5N2ZkYy4uNmY1
NjgwOTJhNTY3ZWZiODNlMmE4MjNmYjdiM2Y5MTA2OTc5OTMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJPdmVybGF5X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYk92ZXJsYXlfcC5oCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5o
IgotI2luY2x1ZGUgIlRleHR1cmUuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmUuaCIKICNpbmNs
dWRlICJXZWJPdmVybGF5LmgiCiAjaW5jbHVkZSAiV2ViT3ZlcmxheU92ZXJyaWRlLmgiCiAKQEAg
LTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9kcmF3c0Nv
bnRlbnQ7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6TGF5ZXJUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpUaWxlZEltYWdlIG1faW1hZ2U7CiAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkdyYXBoaWNzOjpUaWxlZEltYWdlIG1fdXBsb2FkZWRJbWFnZTsKICAgICBXZWJDb3Jl
OjpDb2xvciBtX2NvbG9yOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>