<?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>81640</bug_id>
          
          <creation_ts>2012-03-20 02:18:59 -0700</creation_ts>
          <short_desc>Make animVal support type-safe</short_desc>
          <delta_ts>2012-03-20 04:47:46 -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>SVG</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>
          <dependson>12437</dependson>
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>koivisto</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582873</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-20 02:18:59 -0700</bug_when>
    <thetext>As discussed with Antti, we should remove SVGGenericAnimatedType, and the associated reinterpret_cast, and replace it with a type-safe solution, even if it requires some boilerplate code.
It was a poor decision to go with it initially, so I&apos;m going to redesign it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582922</commentid>
    <comment_count>1</comment_count>
      <attachid>132794</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-20 04:18:19 -0700</bug_when>
    <thetext>Created attachment 132794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582939</commentid>
    <comment_count>2</comment_count>
      <attachid>132794</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-20 04:41:49 -0700</bug_when>
    <thetext>Comment on attachment 132794
Patch

r=me, with naming consistency fixes discussed in irc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582945</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-03-20 04:47:46 -0700</bug_when>
    <thetext>Committed r111380: &lt;http://trac.webkit.org/changeset/111380&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132794</attachid>
            <date>2012-03-20 04:18:19 -0700</date>
            <delta_ts>2012-03-20 04:41:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81640-20120320121816.patch</filename>
            <type>text/plain</type>
            <size>75770</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY5NTQ1YjQ1ODQwOTBk
MzVlNzE5MWM4OTMwYzBmZDQ3YWExMDYwOS4uNzg0NGY1Yjg3NjU0NjIxOWFlOTMwOGI5ZDE1NWQ1
MmUxODQxYmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MiBAQAorMjAxMi0wMy0yMCAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBNYWtlIGFu
aW1WYWwgc3VwcG9ydCB0eXBlLXNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxNjQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkZXNpZ24gYW5pbVZhbCBzdXBwb3J0IGluIGEgdHlwZS1zYWZlIGZh
c2hpb24sIGF2b2lkaW5nIHRoZSBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlCisgICAgICAgIGFuZCBh
c3NvY2lhdGVkIHJlaW50ZXJwcmV0X2Nhc3RzLCB3aGljaCByZXF1aXJlIGFsbCBjYWxsLXNpdGVz
IHRvIGFzc3VyZSB0aGF0IHRoZQorICAgICAgICB0eXBlcyBhcmUgc2FmZSB0byBjYXN0LCBiZWZv
cmUgYWN0dWFsbHkgY2FsbGluZyB0aGUgbWV0aG9kLgorCisgICAgICAgIFJlbW92ZSBwdXJlIHZp
cnR1YWwgYW5pbWF0aW9uU3RhcnRlZC9FbmRlZC9WYWx1ZVdpbGxDaGFuZ2UvVmFsdWVEaWRDaGFu
Z2UgJiBjdXJyZW50QmFzZVZhbHVlVmFyaWFudCBtZXRob2RzIGZyb20gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSwKKyAgICAgICAgYW5kIGRlLXZpcnR1YWxpemUgdGhlbSBpbiBjbGFzc2VzIHRoYXQgaW5o
ZXJpdCBmcm9tIFNWR0FuaW1hdGVkUHJvcGVydHksIGxpa2UgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmYsIGV0Yy4KKworICAgICAgICBBZGQgc3RhcnRBbmltVmFsQW5pbWF0aW9uL3N0b3BBbmlt
VmFsQW5pbWF0aW9uL3Jlc2V0QW5pbVZhbFRvQmFzZVZhbC9hbmltVmFsV2lsbENoYW5nZS9hbmlt
VmFsbERpZENoYW5nZSBtZXRob2RzIHRvIGFsbAorICAgICAgICBTVkdBbmltYXRlZFhYWEFuaW1h
dG9yIGNsYXNzZXMgdGhhdCBjdXJyZW50bHkgc3VwcG9ydCBhbmltVmFsIChTVkdBbmltYXRlZExl
bmd0aC9MZW5ndGhMaXN0L051bWJlcihPcHRpb25hbE51bWJlcikvTnVtYmVyTGlzdC9UcmFuc2Zv
cm1MaXN0KS4KKyAgICAgICAgVGhvc2UgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciBjYW4gY2Fz
dCB0aGUgZ2VuZXJpYyBTVkdBbmltYXRlZFByb3BlcnR5KiBhc3NvY2lhdGVkIHdpdGggYSBjZXJ0
YWluIFNWRyBET00gcHJvcGVydHksIHRvIHRoZSByZWFsIHR5cGUKKyAgICAgICAgZWcuIFNWR0Fu
aW1hdGVkTGVuZ3RoICh3aGljaCBpcyBhIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR0xl
bmd0aD4pLiBUaGlzIHdheSB3ZSBjYW4gY2FsbCB0aG9zZSBtZXRob2RzLCB3aXRob3V0IHJlbHlp
bmcgb24gdmlydHVhbAorICAgICAgICBmdW5jdGlvbiBjYWxscy4gQWxzbyBpdCBtYWtlcyB0aGUg
IlNWR0dlbmVyaWNBbmltYXRlZFR5cGUqIGN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KCkiIGFjY2Vz
c29yIG5lZWRsZXNzLCBhcyB3ZSBjYW4ganVzdCBjYWxsIHRoZSBtZXRob2QKKyAgICAgICAgcmln
aHQgb24gZWcuIHRoZSBTVkdBbmltYXRlZExlbmd0aCwgd2hpY2ggZ2l2ZXMgdXMgdGhlICJjb25z
dCBTVkdMZW5ndGgmIiBvYmplY3QsIGluc3RlYWQgb2YgYSBnZW5lcmljIHBvaW50ZXIgdHlwZSwg
dGhhdCB3ZSBoYXZlIHRvCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3QgdG8gc29tZSBob3BlZnVs
bHktbWF0Y2hpbmcgZXhwZWN0ZWQgdHlwZS4gVGhlIG5ldyBhcHByb2FjaCBpcyB0cnVseSB0eXBl
LXNhZmV5LCBidXQgbmVlZHMgYSBiaXQgbW9yZSBib2lsZXJwbGF0ZSBjb2RlLgorCisgICAgICAg
IFRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGNvcHkmcGFzdGUgYWNyb3NzIHRoZSBTVkdBbmltYXRl
ZFhYWEFuaW1hdG9yIGNsYXNzZXMsIGFsbCBjb2RlIGlzIHBsYWNlZCBpbiB0ZW1wbGF0ZSBmdW5j
dGlvbnMgaW4KKyAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCwgd2hpY2ggY2FuIGJl
IHNoYXJlZCBhY3Jvc3MgYWxsIFNWR0FuaW1hdGVkWFhYQW5pbWF0b3IgY2xhc3NlcywgdGhhdCBp
bmhlcml0IGZyb20gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuCisKKyAgICAgICAgVGVzdDogc3Zn
L2FuaW1hdGlvbnMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3JlYXRpb24td2hpbGUtYW5pbWF0
aW5nLmh0bWwKKworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVu
dDo6dGFyZ2V0RWxlbWVudFdpbGxDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpz
dGFydEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5n
dGhBbmltYXRvcjo6c3RvcEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpyZXNldEFuaW1WYWxU
b0Jhc2VWYWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6
YW5pbVZhbFdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhB
bmltYXRvcjo6YW5pbVZhbERpZENoYW5nZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTGVu
Z3RoLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRv
cjo6c3RvcEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNl
VmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjph
bmltVmFsV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aExp
c3RBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoTGlzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTVkdBbmltYXRlZExl
bmd0aExpc3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnN0YXJ0QW5pbVZh
bEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
OjpzdG9wQW5pbVZhbEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjphbmltVmFsV2ls
bENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjph
bmltVmFsRGlkQ2hhbmdlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcik6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpzdG9wQW5p
bVZhbEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmFuaW1WYWxXaWxs
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
OjphbmltVmFsRGlkQ2hhbmdlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFu
aW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5p
bWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJP
cHRpb25hbE51bWJlckFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphbmltVmFs
V2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcik6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
QW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFuaW1WYWxX
aWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OnN0YXJ0QW5pbVZh
bEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6
c3RvcEFuaW1WYWxBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFR5cGVBbmltYXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNG
b3JBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVB
bmltYXRvcjo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5
cGVBbmltYXRvcjo6YW5pbWF0aW9uVmFsdWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmFuaW1hdGlvblZhbHVlV2lsbENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6Y29uc3RydWN0RnJvbU9uZUJh
c2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6cmVz
ZXRGcm9tT25lQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yOjpjb25zdHJ1Y3RGcm9tVHdvQmFzZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFR5cGVBbmltYXRvcjo6cmVzZXRGcm9tVHdvQmFzZVZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6Y2FzdEFuaW1hdGVkUHJvcGVydHlU
b0FjdHVhbFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6
OmNvbGxlY3RBbmltYXRlZFByb3BlcnRpZXNGcm9tSW5zdGFuY2VzKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25F
bGVtZW50OjphcHBseUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
aW9uRWxlbWVudDo6c2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVsZW1lbnQp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6SW5zdGFuY2VVcGRhdGVCbG9j
a2VyOjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlcjo6fklu
c3RhbmNlVXBkYXRlQmxvY2tlcik6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnN0YW5jZVVwZGF0ZUJsb2NrZXIpOgor
ICAgICAgICAoU1ZHRWxlbWVudEluc3RhbmNlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6Y3VycmVudEJhc2VWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvblN0YXJ0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjphbmlt
YXRpb25FbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmY6OmFuaW1hdGlvblZhbHVlV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY6OmN1
cnJlbnRCYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmY6OmFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvbkVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmOjphbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvblZhbHVlRGlk
Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3Bl
cnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0
eVRlYXJPZmY6OmN1cnJlbnRCYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvbkVuZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmOjphbmlt
YXRpb25WYWx1ZVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRTdGF0
aWNQcm9wZXJ0eVRlYXJPZmY6OmFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKToKKwogMjAxMi0wMy0y
MCAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVn
aW9uc11JbXBsZW1lbnQgTmFtZWRGbG93OjpnZXRSZWdpb25zQnlDb250ZW50Tm9kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKaW5kZXggZTA5NDFiNDg1ZGMwYjNkMjgx
ZDJiMWEzYzk5YzQ2MWNmOWY4YmU5NC4uMDhkMzU3OWI3ZGRiMmIzYjU0ZjA3OGU1NzIyMzIwODc4
MjNmZWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCkBAIC0x
OTIsMTAgKzE5Miw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0CiAgICAgLy8gaWYgYWZ0ZXIg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSgpIHJhbiB0aGUgY2FjaGVkIHBvaW50ZXJzIGluIHRoZSBs
aXN0IHByb3BlcnkgdGVhcgogICAgIC8vIG9mZnMgd291bGQgcG9pbnQgbm93aGVyZSwgYW5kIHdl
IGNvdWxkbid0IGNyZWF0ZSBjb3BpZXMgb2YgdGhvc2UgdmFsdWVzIGFueW1vcmUsCiAgICAgLy8g
d2hpbGUgZGV0YWNoaW5nLiBUaGlzIGlzIGNvdmVyZWQgYnkgYXNzZXJ0aW9ucywgbW92aW5nIHRo
aXMgZG93biB3b3VsZCBmaXJlIHRoZW0uCi0gICAgc2l6ZV90IHByb3BlcnRpZXNTaXplID0gbV9h
bmltYXRlZFByb3BlcnRpZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJv
cGVydGllc1NpemU7ICsraSkKLSAgICAgICAgbV9hbmltYXRlZFByb3BlcnRpZXNbaV0tPmFuaW1h
dGlvblZhbHVlV2lsbENoYW5nZSgpOwotCisgICAgbV9hbmltYXRvci0+YW5pbVZhbFdpbGxDaGFu
Z2UobV9hbmltYXRlZFByb3BlcnRpZXMpOwogICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUocGVyY2VudGFnZSwgcmVwZWF0LCBtX2Zyb21UeXBlLCBtX3RvVHlwZSwgcmVzdWx0
QW5pbWF0aW9uRWxlbWVudC0+bV9hbmltYXRlZFR5cGUpOwogfQogCkBAIC0yNDIsMjMgKzIzOSwy
OCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmlu
ZyYgYmFzZVN0cmluZykKICAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRvciogYW5pbWF0b3IgPSBl
bnN1cmVBbmltYXRvcigpOwogICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IGFu
aW1hdG9yLT50eXBlKCkpOwogCi0gICAgbV9hbmltYXRlZFByb3BlcnRpZXMgPSBhbmltYXRlZFBy
b3BlcnRpZXNGb3JUeXBlKGFuaW1hdG9yLT50eXBlKCkpOworICAgIFNWR0VsZW1lbnQqIHRhcmdl
dEVsZW1lbnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CisgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSA9IHRoaXMtPmF0dHJpYnV0ZU5hbWUoKTsKKyAgICBTaG91bGRBcHBs
eUFuaW1hdGlvbiBzaG91bGRBcHBseSA9IHNob3VsZEFwcGx5QW5pbWF0aW9uKHRhcmdldEVsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUpOworICAgIGlmIChzaG91bGRBcHBseSA9PSBBcHBseVhNTEFuaW1h
dGlvbikKKyAgICAgICAgbV9hbmltYXRlZFByb3BlcnRpZXMgPSBhbmltYXRvci0+ZmluZEFuaW1h
dGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZU5hbWUodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFt
ZSk7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnRpZXMuaXNFbXB0
eSgpKTsKKwogICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gTGVnYWN5IGZhbGxiYWNrIGNvZGUgcGF0aCwgdXNlcyB0aGUgcGFzc2VkLWluIGJhc2VT
dHJpbmcsIHdoaWNoIGlzIGNhY2hlZC4KICAgICAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKICAg
ICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gYW5pbWF0b3ItPmNvbnN0cnVjdEZyb21TdHJpbmco
YmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlLT5z
ZXRWYWx1ZUFzU3RyaW5nKGF0dHJpYnV0ZU5hbWUoKSwgYmFzZVN0cmluZyk7CisgICAgICAgICAg
ICBtX2FuaW1hdGVkVHlwZS0+c2V0VmFsdWVBc1N0cmluZyhhdHRyaWJ1dGVOYW1lLCBiYXNlU3Ry
aW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChwcm9wZXJ0eVR5cGVz
QXJlQ29uc2lzdGVudChtX2FuaW1hdGVkUHJvcGVydHlUeXBlLCBtX2FuaW1hdGVkUHJvcGVydGll
cykpOwotICAgIGlmICghbV9hbmltYXRlZFR5cGUpIHsKLSAgICAgICAgVmVjdG9yPFNWR0dlbmVy
aWNBbmltYXRlZFR5cGUqPiB0eXBlczsKLSAgICAgICAgbV9hbmltYXRlZFR5cGUgPSBhbmltYXRv
ci0+Y29uc3RydWN0RnJvbUJhc2VWYWx1ZShtX2FuaW1hdGVkUHJvcGVydGllcywgdHlwZXMpOwot
ICAgICAgICBhbmltYXRpb25TdGFydGVkKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLCB0eXBlcyk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGFuaW1hdG9yLT5yZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVl
KG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLCBtX2FuaW1hdGVkVHlwZS5nZXQoKSk7CisgICAgaWYgKCFt
X2FuaW1hdGVkVHlwZSkKKyAgICAgICAgbV9hbmltYXRlZFR5cGUgPSBhbmltYXRvci0+c3RhcnRB
bmltVmFsQW5pbWF0aW9uKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKKyAgICBlbHNlCisgICAgICAg
IGFuaW1hdG9yLT5yZXNldEFuaW1WYWxUb0Jhc2VWYWwobV9hbmltYXRlZFByb3BlcnRpZXMsIG1f
YW5pbWF0ZWRUeXBlLmdldCgpKTsKIH0KIAogdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQoKQpAQCAtMjY3LDkgKzI2OSwxOCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgIT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFu
aW1hdGVUcmFuc2Zvcm1UYWcpKTsKICAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAh
PSBBbmltYXRlZFVua25vd24pOwogICAgIEFTU0VSVChtX2FuaW1hdGVkVHlwZSk7Ci0gICAgc2V0
VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZShtX2FuaW1hdGVkVHlwZS5nZXQoKSk7CisgICAg
QVNTRVJUKG1fYW5pbWF0b3IpOworCisgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1w
dHkoKSkgeworICAgICAgICAvLyBDU1MgLyBsZWdhY3kgWE1MIGNoYW5nZSBjb2RlLXBhdGguCisg
ICAgICAgIHNldFRhcmdldEF0dHJpYnV0ZUFuaW1hdGVkVmFsdWUobV9hbmltYXRlZFR5cGUuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU1ZHIERPTSBhbmltVmFsIGFu
aW1hdGlvbiBjb2RlLXBhdGguCisgICAgbV9hbmltYXRvci0+YW5pbVZhbERpZENoYW5nZShtX2Fu
aW1hdGVkUHJvcGVydGllcyk7CiB9Ci0gICAgCisKIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50Ojpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCiB7CiAgICAgLy8gRklYTUU6IEEgcmV0dXJuIHZhbHVlIG9mIGZsb2F0IGlzIG5v
dCBlbm91Z2ggdG8gc3VwcG9ydCBwYWNlZCBhbmltYXRpb25zIG9uIGxpc3RzLgpAQCAtMjg1LDcg
KzI5Niw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnRhcmdldEVsZW1lbnRXaWxsQ2hhbmdl
KFNWR0VsZW1lbnQqIGN1cnJlbnRUYXJnZXQsIFNWR0VsCiAgICAgU1ZHU01JTEVsZW1lbnQ6OnRh
cmdldEVsZW1lbnRXaWxsQ2hhbmdlKGN1cnJlbnRUYXJnZXQsIG5ld1RhcmdldCk7CiAKICAgICBp
ZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICBhbmltYXRpb25F
bmRlZChtX2FuaW1hdGVkUHJvcGVydGllcyk7CisgICAgICAgIGVuc3VyZUFuaW1hdG9yKCktPnN0
b3BBbmltVmFsQW5pbWF0aW9uKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKICAgICAgICAgbV9hbmlt
YXRlZFByb3BlcnRpZXMuY2xlYXIoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGguY3BwCmluZGV4IDFkZTM3ZmQxZjAwMWQ3MjU2OGNkNjJlODQ4YmUwMjkyNDYy
NzFjYmMuLjljN2I0MGE5MTM0MjRkZjg1Yjk1MjFmNmMxZTk1ZTgyMTFiNjdlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtNDcsMTQgKzQ3LDI5IEBAIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
TGVuZ3RoKG5ldyBTVkdMZW5ndGgobV9sZW5ndGhNb2RlLCBzdHJpbmcpKTsKIH0KIAotUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNvbnN0cnVj
dEZyb21CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVy
dGllcywgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYgdHlwZXMpCitQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6c3RhcnRBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMp
CiB7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTGVuZ3RoKGNvbnN0cnVjdEZy
b21PbmVCYXNlVmFsdWU8U1ZHTGVuZ3RoPihwcm9wZXJ0aWVzLCB0eXBlcykpOworICAgIHJldHVy
biBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0aChjb25zdHJ1Y3RGcm9tT25lQmFzZVZhbHVl
PFNWR0xlbmd0aCwgU1ZHQW5pbWF0ZWRMZW5ndGg+KHByb3BlcnRpZXMpKTsKIH0KIAotdm9pZCBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpyZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZhbHVlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVk
VHlwZSogdHlwZSkKK3ZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6c3RvcEFuaW1WYWxB
bmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykK
IHsKLSAgICByZXNldEFuaW1hdGVkVHlwZUZyb21PbmVCYXNlVmFsdWU8U1ZHTGVuZ3RoPihwcm9w
ZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGgpOworICAgIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yOjpzdG9wQW5pbWF0aW9uPFNWR0FuaW1hdGVkTGVuZ3RoPihwcm9wZXJ0aWVz
KTsKK30KKwordm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jh
c2VWYWwoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgU1ZH
QW5pbWF0ZWRUeXBlKiB0eXBlKQoreworICAgIHJlc2V0RnJvbU9uZUJhc2VWYWx1ZTxTVkdMZW5n
dGgsIFNWR0FuaW1hdGVkTGVuZ3RoPihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBl
OjpsZW5ndGgpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMp
Cit7CisgICAgYW5pbWF0aW9uVmFsdWVXaWxsQ2hhbmdlPFNWR0FuaW1hdGVkTGVuZ3RoPihwcm9w
ZXJ0aWVzKTsKK30KKwordm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjphbmltVmFsRGlk
Q2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7
CisgICAgYW5pbWF0aW9uVmFsdWVEaWRDaGFuZ2U8U1ZHQW5pbWF0ZWRMZW5ndGg+KHByb3BlcnRp
ZXMpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21B
bmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGgu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCmluZGV4IDkyZDQ4YjFm
NzBlMzRmNmU2YTM5M2QxYzVhZDM4ODE4NDUxZjVmYjQuLjJjMTM2YzYwOTM5YzQ1ZTI3YzE1OTAw
YzcxN2FmOGQzZDZhM2JkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5o
CkBAIC0zNyw3ICszNyw2IEBAIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRM
ZW5ndGgsIFNWR0xlbmd0aCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wCiBERUZJTkVfQU5JTUFU
RURfUFJPUEVSVFkoQW5pbWF0ZWRMZW5ndGgsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01B
dHRyaWJ1dGUubG9jYWxOYW1lKCksIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci1jbGFzcyBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlOwog
CiBjbGFzcyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yIHsKIApAQCAtNDYsOCArNDUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNW
R0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoKSB7IH0KIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxT
VkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAg
dmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbUJhc2VWYWx1
ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNWR0dlbmVyaWNB
bmltYXRlZFR5cGUqPiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlwZVRvQmFz
ZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5
cGUqKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOworICAgIHZp
cnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgU1ZHQW5pbWF0ZWRUeXBlKik7CisgICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0
b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
RnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwCmluZGV4IDg3OTQ5MDlmNjg0ZWU2Y2ViMjZkZGIxOGY5ZmJjOTBlNjJmNzU4MzUuLjAx
NTNiNDFmY2Q1ODhlZDNmYzBiMTRjMDM4OGI3ODRmZjk4MzgxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCkBAIC00MCwxNCArNDAsMjkgQEAgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
b25zdHJ1Y3RGcm9tU3RyaW5nKGMKICAgICByZXR1cm4gYW5pbWF0ZVR5cGUucmVsZWFzZSgpOwog
fQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5p
bWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYgcHJvcGVydGllcywgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYgdHlw
ZXMpCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5p
bWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+JiBwcm9wZXJ0aWVzKQogewotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZUxlbmd0aExpc3QoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxTVkdMZW5ndGhMaXN0Pihwcm9w
ZXJ0aWVzLCB0eXBlcykpOworICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUxlbmd0
aExpc3QoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxTVkdMZW5ndGhMaXN0LCBTVkdBbmltYXRl
ZExlbmd0aExpc3Q+KHByb3BlcnRpZXMpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZExlbmd0aExp
c3RBbmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit2
b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihj
b25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQogewotICAgIHJl
c2V0QW5pbWF0ZWRUeXBlRnJvbU9uZUJhc2VWYWx1ZTxTVkdMZW5ndGhMaXN0Pihwcm9wZXJ0aWVz
LCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpsZW5ndGhMaXN0KTsKKyAgICBTVkdBbmltYXRlZFR5
cGVBbmltYXRvcjo6c3RvcEFuaW1hdGlvbjxTVkdBbmltYXRlZExlbmd0aExpc3Q+KHByb3BlcnRp
ZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpyZXNldEFuaW1W
YWxUb0Jhc2VWYWwoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGll
cywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlKQoreworICAgIHJlc2V0RnJvbU9uZUJhc2VWYWx1ZTxT
VkdMZW5ndGhMaXN0LCBTVkdBbmltYXRlZExlbmd0aExpc3Q+KHByb3BlcnRpZXMsIHR5cGUsICZT
VkdBbmltYXRlZFR5cGU6Omxlbmd0aExpc3QpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1hdGlvblZhbHVlV2lsbENoYW5nZTxT
VkdBbmltYXRlZExlbmd0aExpc3Q+KHByb3BlcnRpZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmlt
YXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5pbWF0aW9uVmFsdWVEaWRDaGFu
Z2U8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Pihwcm9wZXJ0aWVzKTsKIH0KIAogdm9pZCBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaAppbmRleCA2ZGRmMDcwOGZhNTBjMDljM2Q3
ZTU5NWM5NDRhOWJiODU4YTAxMDk5Li42NjgzYTI5NTRkNGU5YWQzN2JlMWYzMzBlNGE2NDA1MTIz
YjM2MTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCkBA
IC0zNyw3ICszNyw2IEBAIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWShTVkdBbmltYXRl
ZExlbmd0aExpc3QsIFNWR0xlbmd0aExpc3QsIFVwcGVyUHJvcGVyCiBERUZJTkVfQU5JTUFURURf
UFJPUEVSVFkoQW5pbWF0ZWRMZW5ndGhMaXN0LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9N
QXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQogCiBj
bGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotY2xhc3MgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZTsK
IAogY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IgewogICAgIApAQCAtNDYsOCArNDUsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKCkgeyB9CiAgICAgCiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBW
ZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0
QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYsIFNWR0FuaW1hdGVkVHlwZSopOworICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmlt
VmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmlt
YXRlZFR5cGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVj
dG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlk
Q2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZh
bHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwCmluZGV4IDI4NmIzMTk1YjU4YzViZWNkNTUwYTE3ZDViNzE1Y2E2ODA5
MjJjYjcuLmM2YjcxNDM5YTNhN2U5Yjk4NzMzNzUzYWE3YWNlNmQ3NzI5YjIxZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApAQCAtNDMsMTQgKzQzLDI5IEBAIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0CiAgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsK
IH0KIAotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0
b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVy
dHkqPiYgcHJvcGVydGllcywgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYgdHlwZXMp
CitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6
c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4m
IHByb3BlcnRpZXMpCiB7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVy
KGNvbnN0cnVjdEZyb21PbmVCYXNlVmFsdWU8ZmxvYXQ+KHByb3BlcnRpZXMsIHR5cGVzKSk7Cisg
ICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyKGNvbnN0cnVjdEZyb21PbmVC
YXNlVmFsdWU8ZmxvYXQsIFNWR0FuaW1hdGVkTnVtYmVyPihwcm9wZXJ0aWVzKSk7CiB9CiAKLXZv
aWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1
ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmlt
YXRlZFR5cGUqIHR5cGUpCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRp
ZXMpCiB7Ci0gICAgcmVzZXRBbmltYXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlPGZsb2F0Pihwcm9w
ZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIpOworICAgIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yOjpzdG9wQW5pbWF0aW9uPFNWR0FuaW1hdGVkTnVtYmVyPihwcm9wZXJ0aWVz
KTsKK30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpyZXNldEFuaW1WYWxUb0Jh
c2VWYWwoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgU1ZH
QW5pbWF0ZWRUeXBlKiB0eXBlKQoreworICAgIHJlc2V0RnJvbU9uZUJhc2VWYWx1ZTxmbG9hdCwg
U1ZHQW5pbWF0ZWROdW1iZXI+KHByb3BlcnRpZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6Om51
bWJlcik7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6YW5pbVZhbFdpbGxD
aGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKK3sK
KyAgICBhbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2U8U1ZHQW5pbWF0ZWROdW1iZXI+KHByb3BlcnRp
ZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFu
Z2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKK3sKKyAg
ICBhbmltYXRpb25WYWx1ZURpZENoYW5nZTxTVkdBbmltYXRlZE51bWJlcj4ocHJvcGVydGllcyk7
CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgKaW5kZXggNTU0OWMwNTUwY2Iy
YTBkYmExNjdlOGE2OGUxZmQ4ZTdhOTBlMGI2NC4uOGFlOWI4ZmMzMTcyYTVmYzI5ZGUxY2EyMTIw
ZThkODE5N2MxYTVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgKQEAg
LTQwLDcgKzQwLDYgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyLCBP
d25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmwKIERFRklORV9BTklNQVRFRF9Q
Uk9QRVJUWShBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLCBPd25lclR5cGUsIERPTUF0dHJp
YnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSkKIAogY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKLWNsYXNzIFNWR0dlbmVyaWNBbmlt
YXRlZFR5cGU7CiAKIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogCkBAIC01MSw4ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoU1ZHQW5pbWF0aW9uRWxlbWVudCos
IGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCYgYW5pbWF0ZWRO
dW1iZXIsIGZsb2F0IGZyb21OdW1iZXIsIGZsb2F0IHRvTnVtYmVyKTsKIAogICAgIHZpcnR1YWwg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9y
PFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1h
dGVkVHlwZVRvQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mLCBT
VkdBbmltYXRlZFR5cGUqKTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZhbFRv
QmFzZVZhbChjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgU1ZHQW5pbWF0ZWRU
eXBlKik7CisgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxT
VkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5n
ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwogICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuY3BwCmluZGV4IDk5OTUzMzM2ZjY3MWZiODllNmRjNTQ4ODFlNmQzOWFl
ZWFlNTY4NGMuLmUwZDI3ZWJhMDVkZDY4YzY4YTEwOGZiOTkwMGIyZWY1ODZjNjRmZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCkBAIC0zOSwxNCAr
MzksMjkgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyTGlz
dEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGMKICAgICByZXR1cm4gYW5pbXRlZFR5cGUu
cmVsZWFzZSgpOwogfQogCi1QYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNW
R0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRl
ZFR5cGUqPiYgdHlwZXMpCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQogewotICAgIHJldHVybiBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxTVkdOdW1i
ZXJMaXN0Pihwcm9wZXJ0aWVzLCB0eXBlcykpOworICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZU51bWJlckxpc3QoY29uc3RydWN0RnJvbU9uZUJhc2VWYWx1ZTxTVkdOdW1iZXJMaXN0
LCBTVkdBbmltYXRlZE51bWJlckxpc3Q+KHByb3BlcnRpZXMpKTsKIH0KIAotdm9pZCBTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcjo6cmVzZXRBbmltYXRlZFR5cGVUb0Jhc2VWYWx1ZShjb25z
dCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5
cGUqIHR5cGUpCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpzdG9wQW5pbVZh
bEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVz
KQogewotICAgIHJlc2V0QW5pbWF0ZWRUeXBlRnJvbU9uZUJhc2VWYWx1ZTxTVkdOdW1iZXJMaXN0
Pihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJMaXN0KTsKKyAgICBT
VkdBbmltYXRlZFR5cGVBbmltYXRvcjo6c3RvcEFuaW1hdGlvbjxTVkdBbmltYXRlZE51bWJlckxp
c3Q+KHByb3BlcnRpZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9y
OjpyZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYgcHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlKQoreworICAgIHJlc2V0RnJvbU9u
ZUJhc2VWYWx1ZTxTVkdOdW1iZXJMaXN0LCBTVkdBbmltYXRlZE51bWJlckxpc3Q+KHByb3BlcnRp
ZXMsIHR5cGUsICZTVkdBbmltYXRlZFR5cGU6Om51bWJlckxpc3QpOworfQorCit2b2lkIFNWR0Fu
aW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1hdGlvblZhbHVl
V2lsbENoYW5nZTxTVkdBbmltYXRlZE51bWJlckxpc3Q+KHByb3BlcnRpZXMpOworfQorCit2b2lk
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZl
Y3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5pbWF0aW9u
VmFsdWVEaWRDaGFuZ2U8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0Pihwcm9wZXJ0aWVzKTsKIH0KIAog
dm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFs
dWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAppbmRleCA4MDIyY2I4
NGJiNGNiMDEyNjI1YTZjZDdiMGU3ZmEwNzljOTZlMzMyLi4zNWQ5MWVjMWU4OTE4MDY4M2NhYzg2
YjAyMjJlZjMzMDExNWU3ZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyTGlzdC5oCkBAIC0zNyw3ICszNyw2IEBAIERFQ0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJU
WShTVkdBbmltYXRlZE51bWJlckxpc3QsIFNWR051bWJlckxpc3QsIFVwcGVyUHJvcGVyCiBERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJMaXN0LCBPd25lclR5cGUsIERPTUF0
dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQogCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotY2xhc3MgU1ZHR2VuZXJpY0Fu
aW1hdGVkVHlwZTsKIAogY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogICAgIApAQCAtNDYsOSArNDUsMTIgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yKCkgeyB9CiAg
ICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mLCBWZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1h
dGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopOwotICAgIAorICAgIHZpcnR1YWwgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0
b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsgCisgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+Jik7CisKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
OwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CiAgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKaW5kZXggMGUzNjQ4NmY2ZTRjMTQwNzJlN2U2
M2ViY2E1NDgyMjkwYTQyZGJhNS4uOTZkOGJjOGZlYTcwMTQ5YzA0OGYzMjFkZDFhYTllYzkyYjMw
Y2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmNwcApAQCAtNDYsMTQgKzQ2LDI5IEBAIFBhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OmNvbnN0
cnVjdEZyCiAgICAgcmV0dXJuIGFuaW10ZWRUeXBlLnJlbGVhc2UoKTsKIH0KIAotUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRv
cjo6Y29uc3RydWN0RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+JiBwcm9wZXJ0aWVzLCBWZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+JiB0eXBlcykK
K1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQogewotICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0cnVjdEZyb21Ud29CYXNlVmFsdWVzPHBh
aXI8ZmxvYXQsIGZsb2F0PiwgZmxvYXQ+KHByb3BlcnRpZXMsIHR5cGVzKSk7CisgICAgcmV0dXJu
IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3RydWN0RnJv
bVR3b0Jhc2VWYWx1ZXM8cGFpcjxmbG9hdCwgZmxvYXQ+LCBmbG9hdCwgU1ZHQW5pbWF0ZWROdW1i
ZXI+KHByb3BlcnRpZXMpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OnJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNW
R0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlKQor
dm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3I6OnN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMp
CiB7Ci0gICAgcmVzZXRBbmltYXRlZFR5cGVGcm9tVHdvQmFzZVZhbHVlczxwYWlyPGZsb2F0LCBm
bG9hdD4sIGZsb2F0Pihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXJP
cHRpb25hbE51bWJlcik7CisgICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OnN0b3BBbmltYXRp
b248U1ZHQW5pbWF0ZWROdW1iZXI+KHByb3BlcnRpZXMpOworfQorCit2b2lkIFNWR0FuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0
IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlw
ZSogdHlwZSkKK3sKKyAgICByZXNldEZyb21Ud29CYXNlVmFsdWVzPHBhaXI8ZmxvYXQsIGZsb2F0
PiwgZmxvYXQsIFNWR0FuaW1hdGVkTnVtYmVyPihwcm9wZXJ0aWVzLCB0eXBlLCAmU1ZHQW5pbWF0
ZWRUeXBlOjpudW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIGFuaW1hdGlvblZhbHVl
V2lsbENoYW5nZTxTVkdBbmltYXRlZE51bWJlcj4ocHJvcGVydGllcyk7Cit9CisKK3ZvaWQgU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5p
bWF0aW9uVmFsdWVEaWRDaGFuZ2U8U1ZHQW5pbWF0ZWROdW1iZXI+KHByb3BlcnRpZXMpOwogfQog
CiB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRl
RnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlci5oCmluZGV4IDhiNWYwMDhmYTkwMTdkNjZkODAwYjJhMDVhNmMyYmU2
ZGY5ZjJjYmQuLmZhMjU4MTliNWVmMTM4ZTZhOWE4MjRmN2QxMzc4ZTRkYTZmOWRkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIuaApAQCAtMjYsNyArMjYsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdB
bmltYXRpb25FbGVtZW50OwotY2xhc3MgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZTsKIAogY2xhc3Mg
U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKICAgICAKQEAgLTM3LDggKzM2LDExIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKFNWR0FuaW1h
dGlvbkVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgZmxv
YXQmIGFuaW1hdGVkTnVtYmVyLCBmbG9hdCBmcm9tTnVtYmVyLCBmbG9hdCB0b051bWJlcik7CiAg
ICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mLCBWZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1h
dGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopOworICAgIHZpcnR1YWwgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0
aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9p
ZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKaW5kZXggNzE4NzZhZTU1
ZDQyNzVhMjk3NzhkOWQyZWQyOWFlYWZmM2QxNzIwZS4uZjAyNDY5Njc3NWZkNjAyY2Q1ZGYzZjVj
ZGU1NzlmNjFiZDdkMTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jcHAKQEAgLTQ4LDkgKzQ4LDE0IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0
cmluCiAgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9w
ZXJ0aWVzLCBWZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+JiB0eXBlcykKK1Bhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6c3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHBy
b3BlcnRpZXMpCiB7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3Jt
TGlzdChjb25zdHJ1Y3RGcm9tT25lQmFzZVZhbHVlPFNWR1RyYW5zZm9ybUxpc3Q+KHByb3BlcnRp
ZXMsIHR5cGVzKSk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlVHJhbnNmb3Jt
TGlzdChjb25zdHJ1Y3RGcm9tT25lQmFzZVZhbHVlPFNWR1RyYW5zZm9ybUxpc3QsIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdD4ocHJvcGVydGllcykpOworfQorCit2b2lkIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQoreworICAgIFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yOjpzdG9wQW5pbWF0aW9uPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4ocHJvcGVydGll
cyk7CiB9CiAKIGlubGluZSBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQqIGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmlu
ZykKQEAgLTU5LDkgKzY0LDE5IEBAIGlubGluZSBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZyCiAgICAgcmV0dXJu
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKFNW
R1RyYW5zZm9ybTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoYW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQtPnRyYW5zZm9ybVR5cGUoKSkgKyBzdHJpbmcgKyAnKScpOwogfQogCi12b2lkIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpyZXNldEFuaW1hdGVkVHlwZVRvQmFzZVZh
bHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFNWR0Fu
aW1hdGVkVHlwZSogdHlwZSkKK3ZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6
OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+
JiBwcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUqIHR5cGUpCit7CisgICAgcmVzZXRGcm9tT25l
QmFzZVZhbHVlPFNWR1RyYW5zZm9ybUxpc3QsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4ocHJv
cGVydGllcywgdHlwZSwgJlNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlzdCk7Cit9CisKK3Zv
aWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFuaW1WYWxXaWxsQ2hhbmdlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCit7CisgICAgYW5p
bWF0aW9uVmFsdWVXaWxsQ2hhbmdlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4ocHJvcGVydGll
cyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFuaW1WYWxE
aWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykK
IHsKLSAgICByZXNldEFuaW1hdGVkVHlwZUZyb21PbmVCYXNlVmFsdWU8U1ZHVHJhbnNmb3JtTGlz
dD4ocHJvcGVydGllcywgdHlwZSwgJlNWR0FuaW1hdGVkVHlwZTo6dHJhbnNmb3JtTGlzdCk7Cisg
ICAgYW5pbWF0aW9uVmFsdWVEaWRDaGFuZ2U8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Pihwcm9w
ZXJ0aWVzKTsKIH0KIAogdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuaAppbmRleCA4NWVmNDBlNjYxYmQ0ZDVhMGJmMmU3ZDgwMTBmMmNmOGU2OWE5Zjk2
Li4zMDc5YTk3NmU0ZWQ4Mzc4Mzk2ZDg5NDBkNWM4Y2IzMDVjZTI0NjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCkBAIC0zNyw3ICszNyw2IEBA
IERFRklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZFRyYW5zZm9ybUxpc3QsIE93bmVyVHlw
ZSwgRE9NQXR0cmlidXRlLCBET01BdHRyCiAKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiBj
bGFzcyBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDsKLWNsYXNzIFNWR0dlbmVyaWNBbmltYXRl
ZFR5cGU7CiAKIGNsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yIDogcHVibGlj
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKQEAgLTQ1LDggKzQ0LDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcigpIHsg
fQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mLCBWZWN0b3I8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29uc3QgVmVjdG9yPFNWR0FuaW1h
dGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopOworICAgIHZpcnR1YWwgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBWZWN0b3I8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0
aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mLCBTVkdBbmltYXRlZFR5cGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOworICAgIHZpcnR1YWwgdm9p
ZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFR5cGUuaAppbmRleCBjYjU3YTUxODFmN2M1ZjFmODE4NjM3ZGI5NzgwNGEy
ZDg4MWM2MmQ4Li45ZmYxOWE1Y2NmMjkxZTI5OGZjNGY0YzI0NzM3YTZkNWQzOGY4OTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCkBAIC0yOCw3ICsyOCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgU1ZHQW5n
bGU7Ci1jbGFzcyBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlOwogY2xhc3MgU1ZHTGVuZ3RoOwogY2xh
c3MgU1ZHTGVuZ3RoTGlzdDsKIGNsYXNzIFNWR051bWJlckxpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCmluZGV4IDA3NDY4MWNjNDlkN2JkZjMzNGFh
MmEzZmZjZTViY2M4NmFiOGNjZWEuLjcxYmEwYTcyMzdiMmNkMzJkMDQ5ZGJmNjY0MjM2NDBhY2Vm
ZTcxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmlt
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS0yMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMywyMSArMjMsMjYgQEAKICNpZiBFTkFCTEUoU1ZHKQog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5
cGUuaCIKKyNpbmNsdWRlICJTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgiCisjaW5jbHVkZSAi
U1ZHRWxlbWVudEluc3RhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotY2xhc3MgU1ZH
R2VuZXJpY0FuaW1hdGVkVHlwZTsKIAogY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Igewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yKCkgeyB9CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgLy8g
RklYTUU6IE1ha2UgdGhlc2UgdHdvIHB1cmUgb25jZSBhbGwgdHlwZXMgaW1wbGVtZW50IHRoaXMu
Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbUJh
c2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiwgVmVjdG9yPFNWR0dl
bmVyaWNBbmltYXRlZFR5cGUqPiYpIHsgcmV0dXJuIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlVG9CYXNlVmFsdWUoY29u
c3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopIHsgfQor
CisgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcHVyZSBvbmNlIGFsbCB0eXBlcyBpbXBsZW1lbnQg
dGhpcy4KKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1W
YWxBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpIHsgcmV0dXJu
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPigpOyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mLCBTVkdBbmltYXRlZFR5cGUqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykgPSAwOwpAQCAtNDksNiArNTQsMjggQEAgcHVibGljOgogCiAgICAgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAg
VmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiBmaW5kQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0
cmlidXRlTmFtZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwor
CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiBwcm9wZXJ0aWVz
OworICAgICAgICB0YXJnZXRFbGVtZW50LT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKS5h
bmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFt
ZSwgcHJvcGVydGllcyk7CisKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgY2FuIGdvIGF3
YXkgb25jZSBhbGwgdHlwZXMgc3VwcG9ydCBhbmltVmFsLgorICAgICAgICBpZiAoIVNWR0FuaW1h
dGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKG1fdHlwZSkpCisgICAgICAgICAgICByZXR1cm4gVmVj
dG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPigpOworCisgICAgICAgIFZlY3RvcjxTVkdBbmltYXRl
ZFByb3BlcnR5Kj4gcmVzdWx0OworICAgICAgICBzaXplX3QgcHJvcGVydGllc1NpemUgPSBwcm9w
ZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVz
U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBTVkdBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0eSA9
IHByb3BlcnRpZXNbaV0uZ2V0KCk7CisgICAgICAgICAgICBpZiAocHJvcGVydHktPmFuaW1hdGVk
UHJvcGVydHlUeXBlKCkgPT0gbV90eXBlKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cHJvcGVydHkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
IHByb3RlY3RlZDoKICAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFByb3BlcnR5
VHlwZSB0eXBlLCBTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTU3LDY2ICs4
NCwxNTQgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBTVkdHZW5lcmljQW5pbWF0
ZWRUeXBlKiBjdXJyZW50QmFzZVZhbHVlVmFyaWFudChTVkdBbmltYXRlZFByb3BlcnR5KiBwcm9w
ZXJ0eSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGUsIHR5cGVuYW1lIEFuaW1W
YWxUeXBlPgorICAgIHZvaWQgc3RhcnRBbmltYXRpb24oY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVk
UHJvcGVydHkqPiYgcHJvcGVydGllcywgdW5zaWduZWQgd2hpY2hQcm9wZXJ0eSwgQW5pbWF0ZWRU
eXBlKiB0eXBlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHByb3BlcnR5KTsKLSAgICAgICAgQVNT
RVJUKHByb3BlcnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpID09IG1fdHlwZSk7Ci0gICAgICAg
IHJldHVybiBwcm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZVZhcmlhbnQoKTsKKyAgICAgICAgQVNT
RVJUKHdoaWNoUHJvcGVydHkgPCBwcm9wZXJ0aWVzLnNpemUoKSk7CisgICAgICAgIEFuaW1WYWxU
eXBlKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxU
eXBlPihwcm9wZXJ0aWVzW3doaWNoUHJvcGVydHldKTsKKworICAgICAgICBWZWN0b3I8QW5pbVZh
bFR5cGUqPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5hcHBlbmQocHJvcGVydHkpOworICAgICAg
ICBjb2xsZWN0QW5pbWF0ZWRQcm9wZXJ0aWVzRnJvbUluc3RhbmNlcyhyZXN1bHQsIHdoaWNoUHJv
cGVydHksIHByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpLCBwcm9wZXJ0eS0+YXR0cmlidXRlTmFt
ZSgpKTsKKworICAgICAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJlc3VsdC5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0U2l6ZTsgKytpKQorICAgICAgICAgICAg
cmVzdWx0W2ldLT5hbmltYXRpb25TdGFydGVkKHR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEFuaW1WYWxUeXBlPgorICAgIHZvaWQgc3RvcEFuaW1hdGlvbihjb25zdCBWZWN0
b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBwcm9wZXJ0aWVzKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPEFuaW1WYWxUeXBlKj4gcmVzdWx0OworICAgICAgICBzaXplX3QgcHJvcGVydGllc1NpemUg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3Qgd2hpY2hQcm9wZXJ0eSA9
IDA7IHdoaWNoUHJvcGVydHkgPCBwcm9wZXJ0aWVzU2l6ZTsgKyt3aGljaFByb3BlcnR5KSB7Cisg
ICAgICAgICAgICBBbmltVmFsVHlwZSogcHJvcGVydHkgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRv
QWN0dWFsVHlwZTxBbmltVmFsVHlwZT4ocHJvcGVydGllc1t3aGljaFByb3BlcnR5XSk7CisgICAg
ICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2Vy
KHByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgpKTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChwcm9wZXJ0eSk7CisgICAgICAgICAgICBjb2xsZWN0QW5pbWF0ZWRQcm9wZXJ0aWVzRnJvbUlu
c3RhbmNlcyhyZXN1bHQsIHdoaWNoUHJvcGVydHksIHByb3BlcnR5LT5jb250ZXh0RWxlbWVudCgp
LCBwcm9wZXJ0eS0+YXR0cmlidXRlTmFtZSgpKTsKKworICAgICAgICAgICAgc2l6ZV90IHJlc3Vs
dFNpemUgPSByZXN1bHQuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXN1bHRTaXplOyArK2kpCisgICAgICAgICAgICAgICAgcmVzdWx0W2ldLT5hbmltYXRpb25F
bmRlZCgpOworICAgICAgICAgICAgcmVzdWx0LmNsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+Ci0gICAgQW5pbWF0ZWRUeXBlKiBj
b25zdHJ1Y3RGcm9tT25lQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mIHByb3BlcnRpZXMsIFZlY3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1WYWxUeXBlPgorICAgIHZvaWQgYW5pbWF0aW9uVmFs
dWVEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGll
cykKKyAgICB7CisgICAgICAgIFZlY3RvcjxBbmltVmFsVHlwZSo+IHJlc3VsdDsKKyAgICAgICAg
c2l6ZV90IHByb3BlcnRpZXNTaXplID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IHdoaWNoUHJvcGVydHkgPSAwOyB3aGljaFByb3BlcnR5IDwgcHJvcGVydGllc1NpemU7
ICsrd2hpY2hQcm9wZXJ0eSkgeworICAgICAgICAgICAgQW5pbVZhbFR5cGUqIHByb3BlcnR5ID0g
Y2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8QW5pbVZhbFR5cGU+KHByb3BlcnRpZXNb
d2hpY2hQcm9wZXJ0eV0pOworICAgICAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnN0YW5j
ZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcihwcm9wZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSk7CisKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQocHJvcGVydHkpOworICAgICAgICAgICAgY29sbGVjdEFu
aW1hdGVkUHJvcGVydGllc0Zyb21JbnN0YW5jZXMocmVzdWx0LCB3aGljaFByb3BlcnR5LCBwcm9w
ZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSwgcHJvcGVydHktPmF0dHJpYnV0ZU5hbWUoKSk7CisKKyAg
ICAgICAgICAgIHNpemVfdCByZXN1bHRTaXplID0gcmVzdWx0LnNpemUoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0U2l6ZTsgKytpKQorICAgICAgICAgICAgICAg
IHJlc3VsdFtpXS0+YW5pbWF0aW9uVmFsdWVEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5jbGVhcigpOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5p
bVZhbFR5cGU+CisgICAgdm9pZCBhbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2UoY29uc3QgVmVjdG9y
PFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcykKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxBbmltVmFsVHlwZSo+IHJlc3VsdDsKKyAgICAgICAgc2l6ZV90IHByb3BlcnRpZXNTaXplID0g
cHJvcGVydGllcy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IHdoaWNoUHJvcGVydHkgPSAw
OyB3aGljaFByb3BlcnR5IDwgcHJvcGVydGllc1NpemU7ICsrd2hpY2hQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgQW5pbVZhbFR5cGUqIHByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0Fj
dHVhbFR5cGU8QW5pbVZhbFR5cGU+KHByb3BlcnRpZXNbd2hpY2hQcm9wZXJ0eV0pOworCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHByb3BlcnR5KTsKKyAgICAgICAgICAgIGNvbGxlY3RBbmlt
YXRlZFByb3BlcnRpZXNGcm9tSW5zdGFuY2VzKHJlc3VsdCwgd2hpY2hQcm9wZXJ0eSwgcHJvcGVy
dHktPmNvbnRleHRFbGVtZW50KCksIHByb3BlcnR5LT5hdHRyaWJ1dGVOYW1lKCkpOworCisgICAg
ICAgICAgICBzaXplX3QgcmVzdWx0U2l6ZSA9IHJlc3VsdC5zaXplKCk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHRbaV0tPmFuaW1hdGlvblZhbHVlV2lsbENoYW5nZSgpOworICAgICAgICAgICAgcmVzdWx0
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmlt
YXRlZFR5cGUsIHR5cGVuYW1lIEFuaW1WYWxUeXBlPgorICAgIEFuaW1hdGVkVHlwZSogY29uc3Ry
dWN0RnJvbU9uZUJhc2VWYWx1ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JiBw
cm9wZXJ0aWVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKHByb3BlcnRpZXMuc2l6ZSgpID09IDEp
OwotICAgICAgICBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUgPSBjdXJyZW50
QmFzZVZhbHVlVmFyaWFudChwcm9wZXJ0aWVzWzBdKTsKKyAgICAgICAgY29uc3QgQW5pbWF0ZWRU
eXBlJiBhbmltYXRlZFR5cGUgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZTxBbmlt
VmFsVHlwZT4ocHJvcGVydGllc1swXSktPmN1cnJlbnRCYXNlVmFsdWUoKTsKIAotICAgICAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIHR5cGUgc2FmZSwgYSBmb2xsb3ctdXAgcGF0Y2ggd2lsbCBhZHJl
c3MgdGhpcy4KLSAgICAgICAgQW5pbWF0ZWRUeXBlKiBjb3B5ID0gbmV3IEFuaW1hdGVkVHlwZSgq
cmVpbnRlcnByZXRfY2FzdDxBbmltYXRlZFR5cGUqPihhbmltYXRlZFR5cGUpKTsKLSAgICAgICAg
dHlwZXMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+KGNv
cHkpKTsKKyAgICAgICAgQW5pbWF0ZWRUeXBlKiBjb3B5ID0gbmV3IEFuaW1hdGVkVHlwZShhbmlt
YXRlZFR5cGUpOworICAgICAgICBzdGFydEFuaW1hdGlvbjxBbmltYXRlZFR5cGUsIEFuaW1WYWxU
eXBlPihwcm9wZXJ0aWVzLCAwLCBjb3B5KTsKICAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPgotICAgIHZvaWQgcmVzZXRBbmlt
YXRlZFR5cGVGcm9tT25lQmFzZVZhbHVlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5
Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlwZSogdHlwZSwgQW5pbWF0ZWRUeXBlJiAoU1ZH
QW5pbWF0ZWRUeXBlOjoqZ2V0dGVyKSgpKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVk
VHlwZSwgdHlwZW5hbWUgQW5pbVZhbFR5cGU+CisgICAgdm9pZCByZXNldEZyb21PbmVCYXNlVmFs
dWUoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgU1ZHQW5p
bWF0ZWRUeXBlKiB0eXBlLCBBbmltYXRlZFR5cGUmIChTVkdBbmltYXRlZFR5cGU6OipnZXR0ZXIp
KCkpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSk7CiAgICAgICAgIEFTU0VSVCh0eXBlLT50
eXBlKCkgPT0gbV90eXBlKTsKICAgICAgICAgQVNTRVJUKHByb3BlcnRpZXMuc2l6ZSgpID09IDEp
OwotICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHR5cGUgc2FmZSwgYSBmb2xsb3ctdXAgcGF0
Y2ggd2lsbCBhZHJlc3MgdGhpcy4KLSAgICAgICAgKHR5cGUtPipnZXR0ZXIpKCkgPSAqcmVpbnRl
cnByZXRfY2FzdDxBbmltYXRlZFR5cGUqPihjdXJyZW50QmFzZVZhbHVlVmFyaWFudChwcm9wZXJ0
aWVzWzBdKSk7CisgICAgICAgICh0eXBlLT4qZ2V0dGVyKSgpID0gY2FzdEFuaW1hdGVkUHJvcGVy
dHlUb0FjdHVhbFR5cGU8QW5pbVZhbFR5cGU+KHByb3BlcnRpZXNbMF0pLT5jdXJyZW50QmFzZVZh
bHVlKCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlLCB0eXBl
bmFtZSBDb250ZW50VHlwZT4KLSAgICBBbmltYXRlZFR5cGUqIGNvbnN0cnVjdEZyb21Ud29CYXNl
VmFsdWVzKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIFZl
Y3RvcjxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4mIHR5cGVzKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUgQ29udGVudFR5cGUsIHR5cGVuYW1lIENvbnRlbnRB
bmltVmFsVHlwZT4KKyAgICBBbmltYXRlZFR5cGUqIGNvbnN0cnVjdEZyb21Ud29CYXNlVmFsdWVz
KGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMpCiAgICAgewog
ICAgICAgICBBU1NFUlQocHJvcGVydGllcy5zaXplKCkgPT0gMik7Ci0gICAgICAgIFNWR0dlbmVy
aWNBbmltYXRlZFR5cGUqIGZpcnN0VHlwZSA9IGN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KHByb3Bl
cnRpZXNbMF0pOwotICAgICAgICBTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBzZWNvbmRUeXBlID0g
Y3VycmVudEJhc2VWYWx1ZVZhcmlhbnQocHJvcGVydGllc1sxXSk7Ci0KLSAgICAgICAgLy8gRklY
TUU6IE1ha2UgdGhpcyB0eXBlIHNhZmUsIGEgZm9sbG93LXVwIHBhdGNoIHdpbGwgYWRyZXNzIHRo
aXMuCi0gICAgICAgIEFuaW1hdGVkVHlwZSogY29weSA9IG5ldyBBbmltYXRlZFR5cGUoKnJlaW50
ZXJwcmV0X2Nhc3Q8Q29udGVudFR5cGUqPihmaXJzdFR5cGUpLCAqcmVpbnRlcnByZXRfY2FzdDxD
b250ZW50VHlwZSo+KHNlY29uZFR5cGUpKTsKLSAgICAgICAgdHlwZXMucmVzZXJ2ZUNhcGFjaXR5
KDIpOwotICAgICAgICB0eXBlcy5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxTVkdHZW5lcmljQW5p
bWF0ZWRUeXBlKj4oJmNvcHktPmZpcnN0KSk7Ci0gICAgICAgIHR5cGVzLmFwcGVuZChyZWludGVy
cHJldF9jYXN0PFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPigmY29weS0+c2Vjb25kKSk7CisgICAg
ICAgIGNvbnN0IENvbnRlbnRUeXBlJiBmaXJzdFR5cGUgPSBjYXN0QW5pbWF0ZWRQcm9wZXJ0eVRv
QWN0dWFsVHlwZTxDb250ZW50QW5pbVZhbFR5cGU+KHByb3BlcnRpZXNbMF0pLT5jdXJyZW50QmFz
ZVZhbHVlKCk7CisgICAgICAgIGNvbnN0IENvbnRlbnRUeXBlJiBzZWNvbmRUeXBlID0gY2FzdEFu
aW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8Q29udGVudEFuaW1WYWxUeXBlPihwcm9wZXJ0aWVz
WzFdKS0+Y3VycmVudEJhc2VWYWx1ZSgpOworCisgICAgICAgIEFuaW1hdGVkVHlwZSogY29weSA9
IG5ldyBBbmltYXRlZFR5cGUoZmlyc3RUeXBlLCBzZWNvbmRUeXBlKTsKKyAgICAgICAgc3RhcnRB
bmltYXRpb248Q29udGVudFR5cGUsIENvbnRlbnRBbmltVmFsVHlwZT4ocHJvcGVydGllcywgMCwg
JmNvcHktPmZpcnN0KTsKKyAgICAgICAgc3RhcnRBbmltYXRpb248Q29udGVudFR5cGUsIENvbnRl
bnRBbmltVmFsVHlwZT4ocHJvcGVydGllcywgMSwgJmNvcHktPnNlY29uZCk7CiAgICAgICAgIHJl
dHVybiBjb3B5OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZSwg
dHlwZW5hbWUgQ29udGVudFR5cGU+Ci0gICAgdm9pZCByZXNldEFuaW1hdGVkVHlwZUZyb21Ud29C
YXNlVmFsdWVzKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMs
IFNWR0FuaW1hdGVkVHlwZSogdHlwZSwgQW5pbWF0ZWRUeXBlJiAoU1ZHQW5pbWF0ZWRUeXBlOjoq
Z2V0dGVyKSgpKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkVHlwZSwgdHlwZW5hbWUg
Q29udGVudFR5cGUsIHR5cGVuYW1lIENvbnRlbnRBbmltVmFsVHlwZT4KKyAgICB2b2lkIHJlc2V0
RnJvbVR3b0Jhc2VWYWx1ZXMoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJv
cGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlKiB0eXBlLCBBbmltYXRlZFR5cGUmIChTVkdBbmltYXRl
ZFR5cGU6OipnZXR0ZXIpKCkpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSk7CiAgICAgICAg
IEFTU0VSVCh0eXBlLT50eXBlKCkgPT0gbV90eXBlKTsKICAgICAgICAgQVNTRVJUKHByb3BlcnRp
ZXMuc2l6ZSgpID09IDIpOwogCi0gICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgdHlwZSBzYWZl
LCBhIGZvbGxvdy11cCBwYXRjaCB3aWxsIGFkcmVzcyB0aGlzLgogICAgICAgICBBbmltYXRlZFR5
cGUmIGFuaW1hdGVkVHlwZVZhbHVlID0gKHR5cGUtPipnZXR0ZXIpKCk7Ci0gICAgICAgIGFuaW1h
dGVkVHlwZVZhbHVlLmZpcnN0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Q29udGVudFR5cGUqPihjdXJy
ZW50QmFzZVZhbHVlVmFyaWFudChwcm9wZXJ0aWVzWzBdKSk7Ci0gICAgICAgIGFuaW1hdGVkVHlw
ZVZhbHVlLnNlY29uZCA9ICpyZWludGVycHJldF9jYXN0PENvbnRlbnRUeXBlKj4oY3VycmVudEJh
c2VWYWx1ZVZhcmlhbnQocHJvcGVydGllc1sxXSkpOworICAgICAgICBhbmltYXRlZFR5cGVWYWx1
ZS5maXJzdCA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPENvbnRlbnRBbmltVmFs
VHlwZT4ocHJvcGVydGllc1swXSktPmN1cnJlbnRCYXNlVmFsdWUoKTsKKyAgICAgICAgYW5pbWF0
ZWRUeXBlVmFsdWUuc2Vjb25kID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8Q29u
dGVudEFuaW1WYWxUeXBlPihwcm9wZXJ0aWVzWzFdKS0+Y3VycmVudEJhc2VWYWx1ZSgpOwogICAg
IH0KIAogICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIG1fdHlwZTsKICAgICBTVkdBbmltYXRpb25F
bGVtZW50KiBtX2FuaW1hdGlvbkVsZW1lbnQ7CiAgICAgU1ZHRWxlbWVudCogbV9jb250ZXh0RWxl
bWVudDsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlwZT4KKyAg
ICBBbmltVmFsVHlwZSogY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5cGUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSogcHJvcGVydHkpCisgICAgeworICAgICAgICBBU1NFUlQocHJvcGVydHkpOwor
ICAgICAgICBBU1NFUlQocHJvcGVydHktPmNvbnRleHRFbGVtZW50KCkpOworICAgICAgICBBU1NF
UlQocHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gbV90eXBlKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEFuaW1WYWxUeXBlKj4ocHJvcGVydHkpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1WYWxUeXBlPgorICAgIHZvaWQgY29sbGVjdEFuaW1hdGVk
UHJvcGVydGllc0Zyb21JbnN0YW5jZXMoVmVjdG9yPEFuaW1WYWxUeXBlKj4mIHJlc3VsdCwgdW5z
aWduZWQgd2hpY2hQcm9wZXJ0eSwgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0YXJnZXRF
bGVtZW50KTsKKworICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaGFzIGluc3RhbmNl
cywgdXBkYXRlIHRoZW0gYXMgd2VsbCwgdy9vIHJlcXVpcmluZyB0aGUgPHVzZT4gdHJlZSB0byBi
ZSByZWJ1aWx0LgorICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBp
bnN0YW5jZXMgPSB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCk7CisgICAgICAg
IGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGluc3RhbmNlcy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCppdCkt
PnNoYWRvd1RyZWVFbGVtZW50KCk7CisgICAgICAgICAgICBpZiAoIXNoYWRvd1RyZWVFbGVtZW50
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBWZWN0b3I8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eSo+IHByb3BlcnRpZXNJbnN0YW5jZSA9IGZpbmRBbmltYXRlZFByb3BlcnRp
ZXNGb3JBdHRyaWJ1dGVOYW1lKHNoYWRvd1RyZWVFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKKyAg
ICAgICAgICAgIEFTU0VSVCh3aGljaFByb3BlcnR5IDwgcHJvcGVydGllc0luc3RhbmNlLnNpemUo
KSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1
YWxUeXBlPEFuaW1WYWxUeXBlPihwcm9wZXJ0aWVzSW5zdGFuY2Vbd2hpY2hQcm9wZXJ0eV0pKTsK
KyAgICAgICAgfQorICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCBlOTNmZDBkMGYwMjQzMWM1
OWQxNWVkMTU1NmRmYjc3MTc4NjU3YmEyLi45Mzc2OGZjNTMzZGE3Njc1MTRlNTUwN2Q4NzYyMDJj
ZWM5ZGM3MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3Bw
CkBAIC0zNDYsMjYgKzM0Niw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUYXJnZXRBdHRyaWJ1
dGVBbmltYXRlZENTU1ZhbHVlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsCiAgICAgICAgIHRh
cmdldEVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotc3RhdGljIGlubGluZSBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+IGZpbmRNYXRjaGluZ0FuaW1hdGVkUHJvcGVydGll
cyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKQotewotICAgIFZlY3RvcjxSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiBwcm9wZXJ0aWVzOwotICAgIHRhcmdldEVsZW1lbnQtPmxv
Y2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0
ZSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0aWVzKTsKLQotICAgIC8vIEZJ
WE1FOiBUaGlzIGNoZWNrIGNhbiBnbyBhd2F5IG9uY2UgYWxsIHR5cGVzIHN1cHBvcnQgYW5pbVZh
bC4KLSAgICBpZiAoIVNWR0FuaW1hdGVkVHlwZTo6c3VwcG9ydHNBbmltVmFsKHR5cGUpKQotICAg
ICAgICByZXR1cm4gVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPigpOwotCi0gICAgVmVjdG9y
PFNWR0FuaW1hdGVkUHJvcGVydHkqPiByZXN1bHQ7Ci0gICAgc2l6ZV90IHByb3BlcnRpZXNTaXpl
ID0gcHJvcGVydGllcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0
aWVzU2l6ZTsgKytpKSB7Ci0gICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIHByb3BlcnR5ID0g
cHJvcGVydGllc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKHByb3BlcnR5LT5hbmltYXRlZFByb3Bl
cnR5VHlwZSgpID09IHR5cGUpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHByb3BlcnR5KTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1l
bnQ6OmFwcGx5QW5pbWF0ZWRWYWx1ZShTVkdBbmltYXRpb25FbGVtZW50OjpTaG91bGRBcHBseUFu
aW1hdGlvbiBzaG91bGRBcHBseSwgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUp
CiB7CiAgICAgQVNTRVJUKGFuaW1hdGVkVHlwZSk7CkBAIC0zNzgsMzcgKzM1OCwxMiBAQCB2b2lk
IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFwcGx5QW5pbWF0ZWRWYWx1ZShTVkdBbmltYXRpb25FbGVt
ZW50OjpTaG91bGRBcHBseUFuaQogICAgICAgICBzZXRUYXJnZXRBdHRyaWJ1dGVBbmltYXRlZENT
U1ZhbHVlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkVHlwZS0+dmFsdWVB
c1N0cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcHBseVhNTEFuaW1hdGlvbjoK
LSAgICAgICAgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiBwcm9wZXJ0aWVzID0gZmluZE1h
dGNoaW5nQW5pbWF0ZWRQcm9wZXJ0aWVzKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFu
aW1hdGVkVHlwZS0+dHlwZSgpKTsKLSAgICAgICAgc2l6ZV90IHByb3BlcnRpZXNTaXplID0gcHJv
cGVydGllcy5zaXplKCk7Ci0gICAgICAgIGlmIChwcm9wZXJ0aWVzU2l6ZSkgewotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0aWVzU2l6ZTsgKytpKQotICAgICAgICAg
ICAgICAgIHByb3BlcnRpZXNbaV0tPmFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBGSVhNRTogRGVwcmVjYXRlZCBs
ZWdhY3kgY29kZSBwYXRoIHdoaWNoIG11dGF0ZXMgdGhlIERPTS4KICAgICAgICAgdGFyZ2V0RWxl
bWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkVHlwZS0+dmFsdWVBc1N0
cmluZygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi1zdHJ1Y3QgSW5zdGFuY2VVcGRh
dGVCbG9ja2VyIHsKLSAgICBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCkKLSAgICAgICAgOiBtX3RhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudC0+aXNTdHls
ZWQoKSA/IHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPih0YXJnZXRFbGVtZW50KSA6IDAp
Ci0gICAgewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50KQotICAgICAgICAgICAgbV90YXJn
ZXRFbGVtZW50LT5zZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKHRydWUpOwotICAgIH0KLQotICAg
IH5JbnN0YW5jZVVwZGF0ZUJsb2NrZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1fdGFyZ2V0RWxl
bWVudCkKLSAgICAgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0SW5zdGFuY2VVcGRhdGVzQmxv
Y2tlZChmYWxzZSk7Ci0gICAgfQotCi0gICAgU1ZHU3R5bGVkRWxlbWVudCogbV90YXJnZXRFbGVt
ZW50OwotfTsKLQogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzZXRUYXJnZXRBdHRyaWJ1dGVB
bmltYXRlZFZhbHVlKFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWRUeXBlKQogewogICAgIEFTU0VS
VChhbmltYXRlZFR5cGUpOwpAQCAtNDIxLDcgKzM3Niw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxl
bWVudDo6c2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZShTVkdBbmltYXRlZFR5cGUqIGFu
aW1hCiAKICAgICAvLyBTY29wZSB0aGlzIGJsb2NrLCBzbyBpbnN0YW5jZXMgdXBkYXRlcyB3aWxs
IGJlIHVuYmxvY2tlZCwgYmVmb3JlIHdlIHRyeSB0byB1cGRhdGUgdGhlIGluc3RhbmNlcy4KICAg
ICB7Ci0gICAgICAgIEluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2VyKHRhcmdldEVsZW1lbnQp
OworICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9j
a2VyKHRhcmdldEVsZW1lbnQpOwogICAgICAgICBhcHBseUFuaW1hdGVkVmFsdWUoc2hvdWxkQXBw
bHksIHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkVHlwZSk7CiAgICAgfQog
CkBAIC00MzQsNzAgKzM4OSw2IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0
QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZShTVkdBbmltYXRlZFR5cGUqIGFuaW1hCiAgICAgfQogfQog
Ci1zdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5QW5pbWF0ZWRQcm9wZXJ0eUFib3V0QW5pbWF0aW9u
QmVnaW5FbmQoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywg
Y29uc3QgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiYgdHlwZXMsIFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi17Ci0g
ICAgQVNTRVJUKCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKHR5cGVzLmlzRW1w
dHkoKSB8fCBwcm9wZXJ0aWVzLnNpemUoKSA9PSB0eXBlcy5zaXplKCkpOwotICAgIEFTU0VSVCh0
YXJnZXRFbGVtZW50KTsKLQotICAgIHNpemVfdCBzaXplID0gcHJvcGVydGllcy5zaXplKCk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSogcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAgICBBU1NFUlQocHJv
cGVydHktPmNvbnRleHRFbGVtZW50KCkgPT0gdGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIEFTU0VS
VChwcm9wZXJ0eS0+YXR0cmlidXRlTmFtZSgpID09IGF0dHJpYnV0ZU5hbWUpOwotICAgICAgICBT
VkdHZW5lcmljQW5pbWF0ZWRUeXBlKiB0eXBlID0gdHlwZXMuaXNFbXB0eSgpID8gMCA6IHR5cGVz
W2ldOwotICAgICAgICBpZiAodHlwZSkKLSAgICAgICAgICAgIHByb3BlcnR5LT5hbmltYXRpb25T
dGFydGVkKHR5cGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEluc3RhbmNlVXBkYXRl
QmxvY2tlciBibG9ja2VyKHRhcmdldEVsZW1lbnQpOwotICAgICAgICAgICAgcHJvcGVydHktPmFu
aW1hdGlvbkVuZGVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IGVs
ZW1lbnQgaGFzIGluc3RhbmNlcywgdXBkYXRlIHRoZW0gYXMgd2VsbCwgdy9vIHJlcXVpcmluZyB0
aGUgPHVzZT4gdHJlZSB0byBiZSByZWJ1aWx0LgotICAgICAgICBjb25zdCBIYXNoU2V0PFNWR0Vs
ZW1lbnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMgPSB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JF
bGVtZW50KCk7Ci0gICAgICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsKLSAgICAgICAgZm9yIChIYXNoU2V0
PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1Ry
ZWVFbGVtZW50ID0gKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCk7Ci0gICAgICAgICAgICBpZiAo
IXNoYWRvd1RyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+IHByb3BlcnRpZXNJbnN0YW5jZSA9IGZp
bmRNYXRjaGluZ0FuaW1hdGVkUHJvcGVydGllcyhzaGFkb3dUcmVlRWxlbWVudCwgYXR0cmlidXRl
TmFtZSwgcHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkpOwotCi0gICAgICAgICAgICBz
aXplX3QgcHJvcGVydGllc0luc3RhbmNlU2l6ZSA9IHByb3BlcnRpZXNJbnN0YW5jZS5zaXplKCk7
Ci0gICAgICAgICAgICBBU1NFUlQocHJvcGVydGllc0luc3RhbmNlU2l6ZSA9PSBzaXplKTsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVydGllc0luc3RhbmNlU2l6ZTsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUpCi0gICAgICAgICAgICAgICAgICAgIHBy
b3BlcnRpZXNJbnN0YW5jZVtpXS0+YW5pbWF0aW9uU3RhcnRlZCh0eXBlKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNJbnN0YW5jZVtpXS0+YW5p
bWF0aW9uRW5kZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjphbmltYXRpb25TdGFydGVkKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mIHByb3BlcnRpZXMsIGNvbnN0IFZlY3RvcjxTVkdHZW5lcmljQW5p
bWF0ZWRUeXBlKj4mIHR5cGVzKQotewotICAgIC8vIElmIHByb3BlcnRpZXMgY29udGFpbnMgbW9y
ZSB0aGFuIG9uZSBlbnRyeSwgbXVsdGlwbGUgU1ZHIERPTSBwcm9wZXJ0aWVzIG1hcCB0byBvbmUg
WE1MIGRvbSBhdHRyaWJ1dGUuCi0gICAgLy8gZWcuIHN0ZERldmlhdGlvblgvc3RkRGV2aWF0aW9u
WSBib3RoIG1hcCB0byBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ci4KLSAgICBub3RpZnlBbmlt
YXRlZFByb3BlcnR5QWJvdXRBbmltYXRpb25CZWdpbkVuZChwcm9wZXJ0aWVzLCB0eXBlcywgdGFy
Z2V0RWxlbWVudCgpLCBhdHRyaWJ1dGVOYW1lKCkpOwotfQotCi12b2lkIFNWR0FuaW1hdGlvbkVs
ZW1lbnQ6OmFuaW1hdGlvbkVuZGVkKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4m
IHByb3BlcnRpZXMpCi17Ci0gICAgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqPiBlbXB0
eVR5cGVzOwotICAgIG5vdGlmeUFuaW1hdGVkUHJvcGVydHlBYm91dEFuaW1hdGlvbkJlZ2luRW5k
KHByb3BlcnRpZXMsIGVtcHR5VHlwZXMsIHRhcmdldEVsZW1lbnQoKSwgYXR0cmlidXRlTmFtZSgp
KTsKLX0KLQotVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiBTVkdBbmltYXRpb25FbGVtZW50
OjphbmltYXRlZFByb3BlcnRpZXNGb3JUeXBlKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUpCi17
Ci0gICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsK
LSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gdGhpcy0+YXR0cmlidXRl
TmFtZSgpOwotICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gc2hvdWxkQXBw
bHlBbmltYXRpb24odGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0gICAgaWYgKHNob3Vs
ZEFwcGx5ID09IEFwcGx5WE1MQW5pbWF0aW9uKQotICAgICAgICByZXR1cm4gZmluZE1hdGNoaW5n
QW5pbWF0ZWRQcm9wZXJ0aWVzKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIHR5cGUpOwot
ICAgIHJldHVybiBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+KCk7Ci19Ci0KIFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OlNob3VsZEFwcGx5QW5pbWF0aW9uIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnNo
b3VsZEFwcGx5QW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5
cGUoKSB8fCAhdGFyZ2V0RWxlbWVudCB8fCBhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAppbmRleCBjMWQ2NWQzYjBiNzky
Y2U1MTBkMTU4NjViMjgxNmU3NWU2MmNmNGEwLi5kMjFhOGY4NmJlYzk5MDA1YjI4MjM3ZjJiYzJm
ODA5MzgxYmVhZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgK
QEAgLTgyLDYgKzgyLDE0IEBAIHB1YmxpYzoKICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1v
ZGUoKSBjb25zdDsKICAgICBDYWxjTW9kZSBjYWxjTW9kZSgpIGNvbnN0OwogCisgICAgZW51bSBT
aG91bGRBcHBseUFuaW1hdGlvbiB7CisgICAgICAgIERvbnRBcHBseUFuaW1hdGlvbiwKKyAgICAg
ICAgQXBwbHlDU1NBbmltYXRpb24sCisgICAgICAgIEFwcGx5WE1MQW5pbWF0aW9uCisgICAgfTsK
KworICAgIFNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5QW5pbWF0aW9uKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIApAQCAtMTAyLDEwICsxMTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBT
dHJpbmcgdGFyZ2V0QXR0cmlidXRlQmFzZVZhbHVlKCk7CiAgICAgdm9pZCBzZXRUYXJnZXRBdHRy
aWJ1dGVBbmltYXRlZFZhbHVlKFNWR0FuaW1hdGVkVHlwZSopOwotICAgIFZlY3RvcjxTVkdBbmlt
YXRlZFByb3BlcnR5Kj4gYW5pbWF0ZWRQcm9wZXJ0aWVzRm9yVHlwZShBbmltYXRlZFByb3BlcnR5
VHlwZSk7Ci0KLSAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgVmVjdG9yPFNWR0FuaW1h
dGVkUHJvcGVydHkqPiYgcHJvcGVydGllcywgY29uc3QgVmVjdG9yPFNWR0dlbmVyaWNBbmltYXRl
ZFR5cGUqPiYgdHlwZXMpOwotICAgIHZvaWQgYW5pbWF0aW9uRW5kZWQoY29uc3QgVmVjdG9yPFNW
R0FuaW1hdGVkUHJvcGVydHkqPiYgcHJvcGVydGllcyk7CiAKICAgICAvLyBmcm9tIFNWR1NNSUxF
bGVtZW50CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpOwpAQCAtMTI4
LDEzICsxMzIsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JGcm9t
VG8oZmxvYXQgcGVyY2VudCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2FsY3VsYXRlS2V5VGltZXNJ
bmRleChmbG9hdCBwZXJjZW50KSBjb25zdDsKIAotICAgIGVudW0gU2hvdWxkQXBwbHlBbmltYXRp
b24gewotICAgICAgICBEb250QXBwbHlBbmltYXRpb24sCi0gICAgICAgIEFwcGx5Q1NTQW5pbWF0
aW9uLAotICAgICAgICBBcHBseVhNTEFuaW1hdGlvbgotICAgIH07Ci0KLSAgICBTaG91bGRBcHBs
eUFuaW1hdGlvbiBzaG91bGRBcHBseUFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKICAgICB2b2lkIGFwcGx5QW5p
bWF0ZWRWYWx1ZShTaG91bGRBcHBseUFuaW1hdGlvbiwgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRUeXBlKik7
CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQW5pbWF0aW9uRWxl
bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKaW5kZXggYjQx
NDAwZDMzZWQ2Y2RkZmZhYzI5MjcyMDgxNzFlZWU3MzA2YzU4Mi4uNTFiMTdlNmYzZTBhZDc0MjI5
MWE3MDY4ZWM0NzNjYTE3NDY0YTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1
ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbnN0YW5j
ZUxpc3QuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAKQEAgLTEyMiw4ICsxMjMsMTgg
QEAgdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1l
bnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3Rh
bmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2V0LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBBU1NFUlQoKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCkpOwogICAgICAgICBB
U1NFUlQoKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkp
OworICAgICAgICBBU1NFUlQoKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCktPmNvcnJlc3BvbmRp
bmdFbGVtZW50KCkgPT0gKCppdCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpOwogICAgICAgICBB
U1NFUlQoKCppdCktPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gZWxlbWVudCk7CiAgICAgICAg
ICgqaXQpLT5zaGFkb3dUcmVlRWxlbWVudCgpLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudCgwKTsK
KworICAgICAgICAvLyBUaGUgc2hhZG93IHRyZWUsIHdoaWNoIGlzIGV2ZW50dWFsbHkgYW5pbWF0
ZWQsIGlzIG11dGF0ZWQuIEluIG9yZGVyIHRvIGtlZXAgdGhlIGFuaW1WYWwKKyAgICAgICAgLy8g
bG9naWMgY29ycmVjdCwgd2UgaGF2ZSB0byBzdG9wIHRoZSBhbmltYXRpb24sIGFuZCByZXN0YXJ0
IGl0IG9uY2UgdGhlIHNoYWRvdyB0cmVlIGhhcworICAgICAgICAvLyByZWNsb25lZC4gT3RoZXJ3
aXNlIHdlIG1pc3MgdG8gY2FsbCBzdG9wQW5pbVZhbEFuaW1hdGlvbigpIG9uIHRoZSBvbGQgc2hh
ZG93IHRyZWUgZWxlbWVudAorICAgICAgICAvLyB3aGljaCBsZWFkcyB0byBhbiBhc3NlcnRpb24g
b25jZSBnYXJiYWdlIGlzIGNvbGxlY3RlZCwgaWYgdGhlIGFuaW1WYWwgYmluZGluZ3MgaGF2ZSBi
ZWVuCisgICAgICAgIC8vIGFjY2Vzc2VkIGZyb20gSlMuIEl0IHdvdWxkIGFsc28gYXNzZXJ0IG9u
IHRoZSBuZXh0IHVwZGF0ZUFuaW1hdGlvbnMoKSBjYWxsIGFzIHRoZSBuZXcKKyAgICAgICAgLy8g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSBvYmplY3QgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0ICh1
c2luZyBzdGFydEFuaW1WYWxBbmltYXRpb24pLgorICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgp
LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRh
cmdldChlbGVtZW50KTsKKwogICAgICAgICBpZiAoU1ZHVXNlRWxlbWVudCogZWxlbWVudCA9ICgq
aXQpLT5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZWxl
bWVudC0+aW5Eb2N1bWVudCgpKTsKICAgICAgICAgICAgIGVsZW1lbnQtPmludmFsaWRhdGVTaGFk
b3dUcmVlKCk7CkBAIC0xODMsNiArMTk0LDE5IEBAIEV2ZW50VGFyZ2V0RGF0YSogU1ZHRWxlbWVu
dEluc3RhbmNlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQogICAgIHJldHVybiAwOwogfQogCitT
VkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlcjo6SW5zdGFuY2VVcGRhdGVC
bG9ja2VyKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpCisgICAgOiBtX3RhcmdldEVsZW1lbnQo
dGFyZ2V0RWxlbWVudC0+aXNTdHlsZWQoKSA/IHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQq
Pih0YXJnZXRFbGVtZW50KSA6IDApCit7CisgICAgaWYgKG1fdGFyZ2V0RWxlbWVudCkKKyAgICAg
ICAgbV90YXJnZXRFbGVtZW50LT5zZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKHRydWUpOworfQor
CitTVkdFbGVtZW50SW5zdGFuY2U6Okluc3RhbmNlVXBkYXRlQmxvY2tlcjo6fkluc3RhbmNlVXBk
YXRlQmxvY2tlcigpCit7CisgICAgaWYgKG1fdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgbV90YXJn
ZXRFbGVtZW50LT5zZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGZhbHNlKTsKK30KKyAgIAogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCBhOWFl
NzRiNmNiNmQ5MjA2N2JiMzJiZDhkMzU3ZWNiYzc1ZjJmYTQ4Li4wYmQ1OTRlZGExNDJjYTBjZDI2
ZjdmY2YwOGJmMDg4NWRjNmRkN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5oCkBAIC0zNSw2ICszNSw3IEBAIHZvaWQgYWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1
ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpCiAKIGNsYXNz
IFNWR1VzZUVsZW1lbnQ7CiBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2VMaXN0OworY2xhc3MgU1ZH
U3R5bGVkRWxlbWVudDsKIAogLy8gU1ZHRWxlbWVudEluc3RhbmNlIG1pbWljcyBOb2RlLCBidXQg
d2l0aG91dCBwcm92aWRpbmcgYWxsIGl0cyBmdW5jdGlvbmFsaXR5CiBjbGFzcyBTVkdFbGVtZW50
SW5zdGFuY2UgOiBwdWJsaWMgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+LApAQCAtODMs
NiArODQsMTYgQEAgcHVibGljOgogICAgICAgICBTVkdFbGVtZW50KiBtX2VsZW1lbnQ7CiAgICAg
fTsKIAorICAgIGNsYXNzIEluc3RhbmNlVXBkYXRlQmxvY2tlciB7CisgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3RhbmNlVXBkYXRlQmxvY2tlcik7CisgICAgcHVibGljOgorICAgICAg
ICBJbnN0YW5jZVVwZGF0ZUJsb2NrZXIoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCk7CisgICAg
ICAgIH5JbnN0YW5jZVVwZGF0ZUJsb2NrZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQqIG1fdGFyZ2V0RWxlbWVudDsKKyAgICB9OworICAgIAogICAgIHN0YXRp
YyB2b2lkIGludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAg
ICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRl
YXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZi5oCmluZGV4IDBkOWZhOTFmNjEwZGNiYjllODhiNDY2MmJlOTc3NzU5N2M0
NjY4N2UuLjFjOWM1NWE2NTQ2ZjhhNzQ2MmM0YzkyOGY3ZTMyNTU2YWIyZWY4ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC03NCwyMCArNzQsMTkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYW5pbVZhbCgpLT52YWx1ZXMoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFNWR0dl
bmVyaWNBbmltYXRlZFR5cGUqIGN1cnJlbnRCYXNlVmFsdWVWYXJpYW50KCkgY29uc3QKKyAgICBj
b25zdCBQcm9wZXJ0eVR5cGUmIGN1cnJlbnRCYXNlVmFsdWUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSo+KCZtX3Zh
bHVlcyk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlczsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYW5pbWF0aW9uU3RhcnRlZChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUp
CisgICAgdm9pZCBhbmltYXRpb25TdGFydGVkKFByb3BlcnR5VHlwZSogbmV3QW5pbVZhbCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0FuaW1hdGluZyk7Ci0gICAgICAgIEFTU0VSVChhbmlt
YXRlZFR5cGUpOworICAgICAgICBBU1NFUlQobmV3QW5pbVZhbCk7CiAgICAgICAgIEFTU0VSVCht
X3ZhbHVlcy5zaXplKCkgPT0gbV93cmFwcGVycy5zaXplKCkpOwogICAgICAgICBBU1NFUlQobV9h
bmltYXRlZFdyYXBwZXJzLmlzRW1wdHkoKSk7CiAKICAgICAgICAgLy8gU3dpdGNoIHRvIG5ldyBw
YXNzZWQgaW4gdmFsdWUgdHlwZSAmIG5ldyB3cmFwcGVycyBsaXN0LiBUaGUgbmV3IHdyYXBwZXJz
IGxpc3QgbXVzdCBiZSBjcmVhdGVkIGZvciB0aGUgbmV3IHZhbHVlLgotICAgICAgICBQcm9wZXJ0
eVR5cGUqIG5ld0FuaW1WYWwgPSByZWludGVycHJldF9jYXN0PFByb3BlcnR5VHlwZSo+KGFuaW1h
dGVkVHlwZSk7CiAgICAgICAgIGlmICghbmV3QW5pbVZhbC0+aXNFbXB0eSgpKQogICAgICAgICAg
ICAgbV9hbmltYXRlZFdyYXBwZXJzLmZpbGwoMCwgbmV3QW5pbVZhbC0+c2l6ZSgpKTsKIApAQCAt
OTcsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faXNBbmltYXRpbmcgPSB0cnVlOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25FbmRlZCgpCisgICAgdm9pZCBhbmltYXRp
b25FbmRlZCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9pc0FuaW1hdGluZyk7CiAgICAgICAg
IEFTU0VSVChtX2FuaW1WYWwpOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKGFuaW1WYWwoKS0+d3JhcHBlcnMoKS5zaXplKCkgPT0gbV9hbmltYXRlZFdyYXBwZXJz
LnNpemUoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblZhbHVlV2lsbENo
YW5nZSgpCisgICAgdm9pZCBhbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2UoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1faXNBbmltYXRpbmcpOwogICAgICAgICBBU1NFUlQobV9hbmltVmFsKTsKQEAg
LTEzNyw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN5bmNocm9uaXplV3JhcHBlcnNJZk5l
ZWRlZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25WYWx1ZURpZENoYW5n
ZSgpCisgICAgdm9pZCBhbmltYXRpb25WYWx1ZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9pc0FuaW1hdGluZyk7CiAgICAgICAgIEFTU0VSVChtX2FuaW1WYWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCmlu
ZGV4IGIwZGIxOTZlNmZhYjZlMmQ3OTlkYzFhMjg3MTA5MTkyNWQwYTNlNDYuLjcxNGVmMTY5ODM2
ZTk0NjdkYWQ2ZTliZmQ0NGI3NmI5MzMzYWNkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmgKQEAgLTI5LDcgKzI5LDYgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR0dlbmVy
aWNBbmltYXRlZFR5cGU7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHkgOiBwdWJsaWMgUmVm
Q291bnRlZDxTVkdBbmltYXRlZFByb3BlcnR5PiB7CiBwdWJsaWM6CkBAIC00NywxMiArNDYsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExpc3RUZWFyT2ZmKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25TdGFydGVk
KFNWR0dlbmVyaWNBbmltYXRlZFR5cGUqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGlv
bkVuZGVkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25WYWx1ZVdpbGxDaGFuZ2Uo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKCkgPSAwOwot
ICAgIHZpcnR1YWwgU1ZHR2VuZXJpY0FuaW1hdGVkVHlwZSogY3VycmVudEJhc2VWYWx1ZVZhcmlh
bnQoKSBjb25zdCA9IDA7Ci0KICAgICAvLyBDYWNoaW5nIGZhY2lsaXRpZXMuCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiwgUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+LCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoLCBTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoVHJhaXRzPiBDYWNoZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFy
T2ZmLmgKaW5kZXggNGRiNzUwMWE2MDQzMjg0NzBhYWNmN2EwZjQzZWNmYTQzOWZjYzI4YS4uMzFj
OWI5MGQzY2M4ZmNjNjNmZjRmNGEyYmIyY2JjZjA1N2Q2YjBiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oCkBAIC01OCwyMCArNTgsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9hbmltVmFs
LT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgU1ZHR2VuZXJpY0Fu
aW1hdGVkVHlwZSogY3VycmVudEJhc2VWYWx1ZVZhcmlhbnQoKSBjb25zdAorICAgIGNvbnN0IFBy
b3BlcnR5VHlwZSYgY3VycmVudEJhc2VWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4oJm1fcHJvcGVydHkp
OworICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0aW9uU3RhcnRlZChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUpCisg
ICAgdm9pZCBhbmltYXRpb25TdGFydGVkKFByb3BlcnR5VHlwZSogbmV3QW5pbVZhbCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCghbV9pc0FuaW1hdGluZyk7Ci0gICAgICAgIEFTU0VSVChhbmltYXRl
ZFR5cGUpOwotICAgICAgICBhbmltVmFsKCktPnNldFZhbHVlKCpyZWludGVycHJldF9jYXN0PFBy
b3BlcnR5VHlwZSo+KGFuaW1hdGVkVHlwZSkpOworICAgICAgICBBU1NFUlQobmV3QW5pbVZhbCk7
CisgICAgICAgIGFuaW1WYWwoKS0+c2V0VmFsdWUoKm5ld0FuaW1WYWwpOwogICAgICAgICBtX2lz
QW5pbWF0aW5nID0gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRW5k
ZWQoKQorICAgIHZvaWQgYW5pbWF0aW9uRW5kZWQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
aXNBbmltYXRpbmcpOwogICAgICAgICBBU1NFUlQobV9hbmltVmFsKTsKQEAgLTg1LDE0ICs4NSwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIGVsZW1lbnQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmli
dXRlTmFtZSgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVmFsdWVXaWxs
Q2hhbmdlKCkKKyAgICB2b2lkIGFuaW1hdGlvblZhbHVlV2lsbENoYW5nZSgpCiAgICAgewogICAg
ICAgICAvLyBuby1vcCBmb3Igbm9uIGxpc3QgdHlwZXMuCiAgICAgICAgIEFTU0VSVChtX2lzQW5p
bWF0aW5nKTsKICAgICAgICAgQVNTRVJUKG1fYW5pbVZhbCk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKCkKKyAgICB2b2lkIGFuaW1hdGlvblZhbHVl
RGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzQW5pbWF0aW5nKTsKICAgICAg
ICAgQVNTRVJUKG1fYW5pbVZhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaAppbmRl
eCA5ODQ0NTQ1ODgzY2I2YTYwZjAyM2U2MjY2NzIxZjdkODA5ZDM5NDJhLi43NGM3NThkZmE4YTgx
NDdkOGE0YWM5NWNmOWY2NTMyNTEzYjAxNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFy
T2ZmLmgKQEAgLTU5LDIxICs1OSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9hbmlt
YXRlZFByb3BlcnR5OwogICAgIH0KIAotICAgIHZpcnR1YWwgU1ZHR2VuZXJpY0FuaW1hdGVkVHlw
ZSogY3VycmVudEJhc2VWYWx1ZVZhcmlhbnQoKSBjb25zdAorICAgIGNvbnN0IFByb3BlcnR5VHlw
ZSYgY3VycmVudEJhc2VWYWx1ZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKj4oJm1fcHJvcGVydHkpOworICAgICAg
ICByZXR1cm4gbV9wcm9wZXJ0eTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9u
U3RhcnRlZChTVkdHZW5lcmljQW5pbWF0ZWRUeXBlKiBhbmltYXRlZFR5cGUpCisgICAgdm9pZCBh
bmltYXRpb25TdGFydGVkKFByb3BlcnR5VHlwZSogbmV3QW5pbVZhbCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghbV9pc0FuaW1hdGluZyk7CiAgICAgICAgIEFTU0VSVCghbV9hbmltYXRlZFByb3Bl
cnR5KTsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkVHlwZSk7Ci0gICAgICAgIG1fYW5pbWF0ZWRQ
cm9wZXJ0eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJvcGVydHlUeXBlKj4oYW5pbWF0ZWRUeXBlKTsK
KyAgICAgICAgQVNTRVJUKG5ld0FuaW1WYWwpOworICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHkg
PSBuZXdBbmltVmFsOwogICAgICAgICBtX2lzQW5pbWF0aW5nID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRW5kZWQoKQorICAgIHZvaWQgYW5pbWF0aW9uRW5kZWQo
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1faXNBbmltYXRpbmcpOwogICAgICAgICBBU1NFUlQo
bV9hbmltYXRlZFByb3BlcnR5KTsKQEAgLTg3LDE0ICs4NywxNCBAQCBwdWJsaWM6CiAgICAgICAg
IGVsZW1lbnQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFtZSgpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uVmFsdWVXaWxsQ2hhbmdlKCkKKyAgICB2b2lkIGFu
aW1hdGlvblZhbHVlV2lsbENoYW5nZSgpCiAgICAgewogICAgICAgICAvLyBuby1vcCBmb3Igbm9u
IGxpc3QgdHlwZXMuCiAgICAgICAgIEFTU0VSVChtX2lzQW5pbWF0aW5nKTsKICAgICAgICAgQVNT
RVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1h
dGlvblZhbHVlRGlkQ2hhbmdlKCkKKyAgICB2b2lkIGFuaW1hdGlvblZhbHVlRGlkQ2hhbmdlKCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtX2lzQW5pbWF0aW5nKTsKICAgICAgICAgQVNTRVJUKG1f
YW5pbWF0ZWRQcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmQ5YTA4YzJhOWI4NDBmYzdjNWI5MjA3YjhhM2Mx
NzJjZWFlOTQxMS4uNWMyYjJkMzVmOGM3NTk4ZDdhNjY4MWRmYTg3ZjgxOWFmYzg0ZmFjMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTIwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemlt
bWVybWFubkByaW0uY29tPgorCisgICAgICAgIE1ha2UgYW5pbVZhbCBzdXBwb3J0IHR5cGUtc2Fm
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2NDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBu
ZXcgdGVzdCB3aGljaCBmb3JjZXMgcmVjcmVhdGlvbiBvZiBhIDx1c2U+IHNoYWRvdyB0cmVlIHdo
aWxlIGFuaW1hdGlvbiBpcyBydW5uaW5nLgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvZm9y
Y2UtdXNlLXNoYWRvdy10cmVlLXJlY3JlYXRpb24td2hpbGUtYW5pbWF0aW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvZm9yY2UtdXNlLXNoYWRvdy10cmVl
LXJlY3JlYXRpb24td2hpbGUtYW5pbWF0aW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9h
bmltYXRpb25zL3Jlc291cmNlcy9mb3JjZS11c2Utc2hhZG93LXRyZWUtcmVjcmVhdGlvbi13aGls
ZS1hbmltYXRpbmcuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3JpcHQt
dGVzdHMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3JlYXRpb24td2hpbGUtYW5pbWF0aW5nLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAg
IChmb3JjZVVzZVNoYWRvd1RyZWVSZWNyZWF0aW9uKToKKyAgICAgICAgKHNhbXBsZTMpOgorICAg
ICAgICAoZXhlY3V0ZVRlc3QpOgorCiAyMDEyLTAzLTIwICBTemlsYXJkIExlZGFuICA8c3psZWRh
bkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBHYXJkZW5pbmcsIHNraXAgZmFpbGlu
ZyB0ZXN0cywgYWRkIHBsYXRmb3JtIHNwZWNpZmljIGV4cGVjdGVkIGZpbGVzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3Jl
YXRpb24td2hpbGUtYW5pbWF0aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL2ZvcmNlLXVzZS1zaGFkb3ctdHJlZS1yZWNyZWF0aW9uLXdoaWxlLWFuaW1hdGluZy1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1NDJiZTM2MmM4ZDViM2Q4NjAxZDU3YThiN2E1YmQ4
ZmZmMTM0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2Zv
cmNlLXVzZS1zaGFkb3ctdHJlZS1yZWNyZWF0aW9uLXdoaWxlLWFuaW1hdGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMiBAQAorU1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0cworCisK
K1RoaXMgdGVzdCBmb3JjZXMgdXNlIHNoYWRvdyB0cmVlIHJlY3JlYXRpb24gd2hpbGUgYW4gYW5p
bWF0aW5nIGlzIHJ1bm5pbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
cmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIDEwCitQQVNTIHJlY3Qud2lkdGguYmFzZVZhbC52
YWx1ZSBpcyAxMAorUEFTUyByZWN0LndpZHRoLmFuaW1WYWwudmFsdWUgaXMgNTUKK1BBU1MgcmVj
dC53aWR0aC5iYXNlVmFsLnZhbHVlIGlzIDEwCitQQVNTIHJlY3Qud2lkdGguYW5pbVZhbC52YWx1
ZSBpcyA1NQorUEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUgaXMgMTAKK1BBU1MgcmVjdC53
aWR0aC5hbmltVmFsLnZhbHVlIGlzIDEwMAorUEFTUyByZWN0LndpZHRoLmJhc2VWYWwudmFsdWUg
aXMgMTAKK1BBU1MgcmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIGlzIDEwMAorUEFTUyByZWN0Lndp
ZHRoLmJhc2VWYWwudmFsdWUgaXMgMTAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9mb3JjZS11c2Utc2hhZG93LXRyZWUtcmVjcmVhdGlvbi13aGlsZS1hbmltYXRpbmcuaHRtbCBi
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL2ZvcmNlLXVzZS1zaGFkb3ctdHJlZS1yZWNyZWF0
aW9uLXdoaWxlLWFuaW1hdGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZWUxYzBjZmQ5MWYwZjBkY2Vi
MDk4YzFhZTYzYjQ1MjE4Y2M1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9mb3JjZS11c2Utc2hhZG93LXRyZWUtcmVjcmVhdGlvbi13aGlsZS1hbmltYXRp
bmcuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9k
eW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5TTUlMVGVzdCgpIj4KKzxoMT5TVkcgMS4xIGR5bmFtaWMg
YW5pbWF0aW9uIHRlc3RzPC9oMT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZvcmNlLXVzZS1zaGFk
b3ctdHJlZS1yZWNyZWF0aW9uLXdoaWxlLWFuaW1hdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9yZXNvdXJj
ZXMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3JlYXRpb24td2hpbGUtYW5pbWF0aW5nLnN2ZyBi
L0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Jlc291cmNlcy9mb3JjZS11c2Utc2hhZG93LXRy
ZWUtcmVjcmVhdGlvbi13aGlsZS1hbmltYXRpbmcuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3NTg4OWUzYzQ0
NjI1ZWZmZjljNzE2MzkyNjczNzQzOTJiNzhiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9yZXNvdXJjZXMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3Jl
YXRpb24td2hpbGUtYW5pbWF0aW5nLnN2ZwpAQCAtMCwwICsxLDEzIEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8v
RFREIFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4x
L0RURC9zdmcxMS10aW55LmR0ZCI+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorCis8ZGVm
cz4KKyAgICA8cmVjdCBpZD0icmVjdCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwMCIgZmlsbD0icmVk
Ij4KKyAgICAgICAgPGFuaW1hdGUgaWQ9ImFuMSIgYXR0cmlidXRlTmFtZT0id2lkdGgiIGZpbGw9
ImZyZWV6ZSIgZnJvbT0iMTAiIHRvPSIxMDAiIGJlZ2luPSIwcyIgZHVyPSI0cyIvPgorICAgIDwv
cmVjdD4KKzwvZGVmcz4KKworPHVzZSB4bGluazpocmVmPSIjcmVjdCIvPgorCis8L3N2Zz4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9mb3JjZS11
c2Utc2hhZG93LXRyZWUtcmVjcmVhdGlvbi13aGlsZS1hbmltYXRpbmcuanMgYi9MYXlvdXRUZXN0
cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3Jl
YXRpb24td2hpbGUtYW5pbWF0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMDA0NTViMDg1ZDQ3ZWZjZWUy
ZjhjOWNiYmNiOGFlN2M4MWExMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvZm9yY2UtdXNlLXNoYWRvdy10cmVlLXJlY3JlYXRpb24t
d2hpbGUtYW5pbWF0aW5nLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRl
c3QgZm9yY2VzIHVzZSBzaGFkb3cgdHJlZSByZWNyZWF0aW9uIHdoaWxlIGFuIGFuaW1hdGluZyBp
cyBydW5uaW5nIik7CitlbWJlZFNWR1Rlc3RDYXNlKCJyZXNvdXJjZXMvZm9yY2UtdXNlLXNoYWRv
dy10cmVlLXJlY3JlYXRpb24td2hpbGUtYW5pbWF0aW5nLnN2ZyIpOworCisvLyBTZXR1cCBhbmlt
YXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgpIHsKKyAgICBzaG91bGRCZUNsb3NlRW5vdWdo
KCJyZWN0LndpZHRoLmFuaW1WYWwudmFsdWUiLCAiMTAiKTsKKyAgICBzaG91bGRCZSgicmVjdC53
aWR0aC5iYXNlVmFsLnZhbHVlIiwgIjEwIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIoKSB7Cisg
ICAgc2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjU1Iik7
CisgICAgc2hvdWxkQmUoInJlY3Qud2lkdGguYmFzZVZhbC52YWx1ZSIsICIxMCIpOworfQorCitm
dW5jdGlvbiBmb3JjZVVzZVNoYWRvd1RyZWVSZWNyZWF0aW9uKCkgeworICAgIHJlY3Quc2V0QXR0
cmlidXRlKCJmaWxsIiwgImdyZWVuIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTMoKSB7CisgICAg
c2hvdWxkQmVDbG9zZUVub3VnaCgicmVjdC53aWR0aC5hbmltVmFsLnZhbHVlIiwgIjEwMCIpOwor
ICAgIHNob3VsZEJlKCJyZWN0LndpZHRoLmJhc2VWYWwudmFsdWUiLCAiMTAiKTsKK30KKworZnVu
Y3Rpb24gZXhlY3V0ZVRlc3QoKSB7CisgICAgcmVjdCA9IHJvb3RTVkdFbGVtZW50Lm93bmVyRG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInJlY3QiKVswXTsKKworICAgIGNvbnN0IGV4cGVj
dGVkVmFsdWVzID0gWworICAgICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIHNhbXBsZUNhbGxi
YWNrXQorICAgICAgICBbImFuMSIsIDAuMCwgICBzYW1wbGUxXSwKKyAgICAgICAgWyJhbjEiLCAx
Ljk5OSwgc2FtcGxlMl0sCisgICAgICAgIFsiYW4xIiwgMi4wLCAgIGZvcmNlVXNlU2hhZG93VHJl
ZVJlY3JlYXRpb25dLAorICAgICAgICBbImFuMSIsIDIuMDAxLCBzYW1wbGUyXSwKKyAgICAgICAg
WyJhbjEiLCA0LjAsICAgc2FtcGxlM10sCisgICAgICAgIFsiYW4xIiwgNjAuMCwgIHNhbXBsZTNd
LAorICAgIF07CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKwor
d2luZG93LmFuaW1hdGlvblN0YXJ0c0ltbWVkaWF0ZWx5ID0gdHJ1ZTsKK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="136548"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>