<?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>84832</bug_id>
          
          <creation_ts>2012-04-25 02:51:01 -0700</creation_ts>
          <short_desc>Share single calculateFromToValues/calculateFromByValues between all SVGAnimatedTypeAnimators</short_desc>
          <delta_ts>2012-04-25 03:04:34 -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>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>609597</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-25 02:51:01 -0700</bug_when>
    <thetext>Share single calculateFromToValues/calculateFromByValues between all SVGAnimatedTypeAnimators.
Length mechanic patch following.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609599</commentid>
    <comment_count>1</comment_count>
      <attachid>138771</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-25 02:59:57 -0700</bug_when>
    <thetext>Created attachment 138771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609601</commentid>
    <comment_count>2</comment_count>
      <attachid>138771</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-25 03:01:52 -0700</bug_when>
    <thetext>Comment on attachment 138771
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609602</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-04-25 03:04:34 -0700</bug_when>
    <thetext>Committed r115178: &lt;http://trac.webkit.org/changeset/115178&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138771</attachid>
            <date>2012-04-25 02:59:57 -0700</date>
            <delta_ts>2012-04-25 03:01:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84832-20120425115954.patch</filename>
            <type>text/plain</type>
            <size>64366</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFlMmFmMjc1OTM4ZTYx
YTkxOTJhNDY0NzI2MWVhNzFmNWU0ZGMzNy4uMmJjMDNmMGM5YWVlNGQ3ZTNiZmE4MzliOWRkNjI4
NDMwNzlhNGZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMi0wNC0yNSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBTaGFyZSBz
aW5nbGUgY2FsY3VsYXRlRnJvbVRvVmFsdWVzL2NhbGN1bGF0ZUZyb21CeVZhbHVlcyBiZXR3ZWVu
IGFsbCBTVkdBbmltYXRlZFR5cGVBbmltYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg0ODMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzIC8gY2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzIGRvbid0IG5lZWQgdG8gYmUgc3ByZWFkIGFjcm9zcyBhbGwgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3JzLgorICAgICAgICBDZW50cmFsaXplIHRoZXNlIG5ldyBpbXBsZW1l
bnRhdGlvbnMgaW4gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaC4gUmVmYWN0b3JlZCBhZGRBbmlt
YXRlZFR5cGVzKCkgZnJvbSBjb25zdHJ1Y3RGcm9tQW5kQnlWYWx1ZXMuCisKKyAgICAgICAgY2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzOgorICAgICAgICAgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21T
dHJpbmcoZnJvbVN0cmluZykKKyAgICAgICAgICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0
b1N0cmluZykKKyAgICAgICAgCisgICAgICAgIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlczoKKyAg
ICAgICAgICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpCisgICAgICAg
ICAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpCisgICAgICAgICAgICBhZGRB
bmltYXRlZFR5cGVzKGZyb20sIHRvKQorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0IGFueSB0ZXN0
cywganVzdCByZWZhY3RvcnMgY29kZS4KKworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJv
bUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6YWRkQW5pbWF0
ZWRUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaDoKKyAgICAgICAgKFNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVh
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oOgorICAg
ICAgICAoU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZENvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQ29sb3JBbmltYXRv
cjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaDoK
KyAgICAgICAgKFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkRW51bWVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1h
dG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmg6CisgICAgICAgIChTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFs
SW50ZWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJPcHRpb25h
bEludGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjph
ZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaDoKKyAg
ICAgICAgKFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZExlbmd0aExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZExlbmd0aExpc3QuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmg6CisgICAgICAgIChTVkdBbmltYXRlZE51bWJlckFuaW1h
dG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVz
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0Lmg6CisgICAgICAgIChTVkdB
bmltYXRlZE51bWJlckxpc3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oOgorICAgICAgICAoU1ZHQW5pbWF0
ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpj
b25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFu
aW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQYXRo
Lmg6CisgICAgICAgIChTVkdBbmltYXRlZFBhdGhBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9p
bnRMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFBvaW50TGlzdC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcik6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6YWRk
QW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpby5oOgorICAgICAgICAoU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3Ip
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZFJlY3QuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmg6CisgICAgICAgIChTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RBbmltYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Qu
aDoKKyAgICAgICAgKFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDoKKyAgICAgICAgKFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpj
YWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6c2V0Q29udGV4dEVsZW1lbnQpOgorCiAyMDEyLTA0
LTI1ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBTaHJpbmsg
UmVuZGVyVGV4dCBieSA4IGJ5dGVzIG9uIDY0LWJpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZUVsZW1lbnQuY3BwCmluZGV4IDI0N2M2MTZhODEwYTU2NzAxN2QxNWE3ZGY1NjA0ZGNjMDlk
MzRjYWYuLmQ4NWI0MGZkZTQ1MzQxODIwMmE2ZDc2YzJkOWM5NDBlYTM4N2NhZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcApAQCAtMjA5LDYgKzIwOSw3IEBAIGJv
b2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmlu
ZywgdG9TdHJpbmcpOyAKICAgICBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMobV9mcm9tVHlwZSwgbV90b1R5cGUsIGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICBB
U1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBtX2FuaW1hdG9yLT50eXBlKCkpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMjIyLDYgKzIyMyw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6
OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
CiAKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpOwogCisgICAgZGV0
ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsgCiAgICAgZW5z
dXJlQW5pbWF0b3IoKS0+Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKG1fZnJvbVR5cGUsIG1fdG9U
eXBlLCBmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUgPT0gbV9hbmltYXRvci0+dHlwZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAppbmRleCAwZjI3Y2U4OTA4NDZjOWI1Y2M3ZGVh
ZWExYWU0MjIyODE4Y2NhOWJhLi5mODQ4MTI0NzE5M2MzOWY1YWJmNzA2ZGQ0OGI2Mzg2YTZiY2Zj
ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCkBAIC03OSwyNiAr
NzksMTAgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2Uo
Y29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkKICAgICBhbmltVmFsRGlkQ2hhbmdlRm9y
VHlwZXM8U1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4ocHJvcGVydGll
cyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKQordm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZH
QW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQogewotICAgIEFTU0VSVCht
X2NvbnRleHRFbGVtZW50KTsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBT
VkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1h
dGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBhbmltYXRpb25FbGVtZW50LT5k
ZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOwotCi0gICAg
ZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1
Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0
b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJv
bSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQp
OwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50
KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2Fu
aW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5
VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0
cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5n
KGJ5U3RyaW5nKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQW5nbGUpOwor
ICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKICAgICBwYWlyPFNWR0Fu
Z2xlLCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRF
bnVtZXJhdGlvbigpOwogICAgIHBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BbmdsZUFuZEVu
dW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRBbmdsZS5oCmluZGV4IDI3MGM1ZTQzMDkxODg0MzAwYmRjZDA0Mzc1ZDE1YjI3NjA1
ZTVhNmYuLjc0Njg1YWFiOGU3MmE1NDlkN2U5MDYzNjRjOGNiNWI4ZDA1Yzc2ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaApAQCAtNTEsOCArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRl
ZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9t
QW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZH
QW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKICAgICB2aXJ0dWFsIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCmlu
ZGV4IDE2OGU0YjA3NzgzNWI4NGYwNzcyMGRhMTIxOGJiZmNjNGU0NDI5NGUuLjUxMzlhY2VkYmVk
YzQ3YjUyYzE4MDU4ZTY1Y2RjN2U5YjliMDdkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEJvb2xlYW4uY3BwCkBAIC02NCwyMyArNjQsMTAgQEAgdm9pZCBTVkdBbmltYXRlZEJv
b2xlYW5BbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQ
cm9wZXIKICAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZEJvb2xlYW4+KHBy
b3BlcnRpZXMpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKQordm9pZCBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6YWRkQW5pbWF0
ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0g
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1l
bnQpOwotICAgIAotICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwot
ICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7Ci19Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCi17Ci0gICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAg
IAotICAgIC8vIE5vdCBzcGVjaWZpZWQgd2hhdCB0byBkbyBvbiAnYnknLWFuaW1hdGlvbnMgd2l0
aCBib29sZWFuLiBGYWxsYmFjayB0byAndG8nLWFuaW1hdGlvbiByaWdodCBub3cuIAotICAgIGZy
b20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwotICAgIHRvID0gY29uc3RydWN0
RnJvbVN0cmluZyhieVN0cmluZyk7CisgICAgQVNTRVJUX1VOVVNFRChmcm9tLCBmcm9tLT50eXBl
KCkgPT0gQW5pbWF0ZWRCb29sZWFuKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRvLCBmcm9tLT50eXBl
KCkgPT0gdG8tPnR5cGUoKSk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgKaW5kZXggYWIyYzFlNDQzZDU1Y2RhMmJj
MTE5OWQ4ODdmNjFkNGMzZDNiYzI5Yi4uZjdiN2ExODJiYzU5ZDYzYWY3M2Y0MGM3ZWUxYzFjZDYz
MGExM2RmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVh
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaApAQCAtNDks
OCArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lk
IGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVl
KTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHAKaW5kZXggNzc0MjY0ZDczMGJiNmQ2MDQyMGQ1MjQ5NGZlZjg1ZGNiYTE1
OTQxYy4uM2NjYzI3YTZkNTliMzFmYWFkNWQ5NWNhYjdmZGQwMmE3ZDU5Y2NiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcApAQCAtNDAsMjcgKzQwLDEyIEBAIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNvbnN0cnVj
dEZyb21TdHJpbmcoY29uc3QKICAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOwogfQog
Ci12b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVz
KE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKK3Zv
aWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0
ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVu
dCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5l
UHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKLQotICAgIGZyb20gPSBj
b25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwotICAgIHRvID0gY29uc3RydWN0RnJvbVN0
cmluZyh0b1N0cmluZyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJ5U3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBB
U1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0
aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25F
bGVtZW50KTsKLSAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlw
ZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOwotCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJp
bmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsK
KyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkQ29sb3IpOworICAgIEFTU0VSVChm
cm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiAKKyAgICAvLyBGSVhNRTogV2UgY2xhbXAgdG9v
IGVhcmx5LgogICAgIHRvLT5jb2xvcigpID0gQ29sb3JEaXN0YW5jZTo6YWRkQ29sb3JzQW5kQ2xh
bXAoZnJvbS0+Y29sb3IoKSwgdG8tPmNvbG9yKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuaAppbmRleCA5ZWY2MzdlMmY3MWY0N2Y2NTE1MDc1YWVjYjRmOWI0YzY3ZGE1
MGVlLi43YzAyZjMwMmI3ODYzMDgxMGVlY2UzODJkNmQ2NDEyNzU5MzQwZTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmgKQEAgLTM5LDggKzM5LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSo+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3Qg
VmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CiAgICAgdmlydHVhbCBm
bG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgdG9TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkRW51bWVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVy
YXRpb24uY3BwCmluZGV4IGQ3ODc1NWJjODY3MDE4ZTRiMjc2ZTFiYjY5YjdjMTQ0NDVkYTdiYjcu
LjE2ZDlhMjgzZTgyNmRjZDFjYTMzODliY2Y1YzE0YWZiODkzYjU4YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAKQEAgLTE0MCwyMyArMTQwLDEw
IEBAIHZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdl
KGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByCiAgICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGU8
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4ocHJvcGVydGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQordm9pZCBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQogewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLQotICAgIGZyb20gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwotICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmlu
Zyh0b1N0cmluZyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpj
YWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJ5U3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAg
ICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICAKLSAgICAvLyBOb3Qgc3BlY2lmaWVk
IHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdpdGggZW51bXMuIEZhbGxiYWNrIHRvICd0
byctYW5pbWF0aW9uIHJpZ2h0IG5vdy4gCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmco
ZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZyb20sIGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZEVudW1lcmF0aW9u
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHRvLCBmcm9tLT50eXBlKCkgPT0gdG8tPnR5cGUoKSk7CiB9
CiAKIHZvaWQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEVudW1lcmF0aW9uLmgKaW5kZXggNzlmMDQwMjVhMDMzNjdjMDI5YzEzZWQxMTAz
ODA4NDA3ZDk3ZTRjZi4uYWE3N2VkNmIwODM4MDRlZmJjM2JhYTNlN2RkNzdlYzRhYjEwYzViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oCkBAIC00OCw4
ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29u
c3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBhbmlt
VmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0gICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
ZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUp
OwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlci5jcHAKaW5kZXggMTkxYmM3MzdmNzc2ZTUyYzhjYTA4NmE3NTQ0YjYwOWZk
Y2JjYmIyNy4uMWUxNTZhNWM5MjdhYjRhNDU2MTQ3MjJhYWM4ZDE5ODRkZDUyYmUyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAKQEAgLTY1LDI3ICs2NSwxMSBA
QCB2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0
IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcgogICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNW
R0FuaW1hdGVkSW50ZWdlcj4ocHJvcGVydGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRJbnRl
Z2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdl
ckFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5p
bWF0ZWRUeXBlKiB0bykKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlv
bkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxl
bWVudCk7Ci0gICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVz
KGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKLSAgICAKLSAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0
cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcodG9TdHJpbmcp
OwotfQorICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICBB
U1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi12b2lkIFNWR0FuaW1hdGVkSW50
ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRl
eHRFbGVtZW50KTsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBTVkdBbmlt
YXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVt
ZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1p
bmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOwotICAgIAotICAgIGZy
b20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwotICAgIHRvID0gY29uc3RydWN0
RnJvbVN0cmluZyhieVN0cmluZyk7Ci0gICAgCiAgICAgdG8tPmludGVnZXIoKSArPSBmcm9tLT5p
bnRlZ2VyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAppbmRl
eCA5NWNjZWI5ZDhlNWQyYTc2ZTM4ZjUxNmY1OTI4YTQyMmEzZmI2ZTkzLi42OGFkOTg4ZGMxZmU0
ZTE1ZDRiMTU2ZmQ2NWYyYjUzY2JjNDU4ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5oCkBAIC00Miw3ICs0Miw2IEBAIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShB
bmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIsIE93bmVyVHlwZSwgRE9NQXR0cmlidXRlCiBj
bGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCiBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7Ci0gICAgCiBwdWJsaWM6CiAg
ICAgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0Vs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZEludGVnZXJBbmltYXRvcigpIHsgfQpA
QCAtNTYsOCArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hh
bmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVh
bCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRl
ZFZhbHVlKTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCmlu
ZGV4IDBkMzc1YTU0MWNkNmViYjA3ZWFhM2I3ZGNmN2ZmMTBiNDJiM2I4MDEuLjA3MDU0OGFjYjAw
NDU4MjE2Y2YzYjhkMDJlNTA5MmIyYzgwYjczYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuY3BwCkBAIC03NCwz
MCArNzQsMTQgQEAgdm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRv
cjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1YKICAgICBhbmltVmFsRGlkQ2hhbmdl
Rm9yVHlwZXM8U1ZHQW5pbWF0ZWRJbnRlZ2VyLCBTVkdBbmltYXRlZEludGVnZXI+KHByb3BlcnRp
ZXMpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlckFuaW1hdG9y
OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20s
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKQordm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbElu
dGVnZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNW
R0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmlt
YXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlv
bkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVU
eXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZy
b21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3Ry
aW5nKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXJBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7
Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5p
bWF0aW9uRWxlbWVudCk7Ci0gICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlW
YWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKLSAgICAKLSAgICBmcm9tID0gY29uc3Ry
dWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmco
YnlTdHJpbmcpOworICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRJbnRlZ2VyT3B0
aW9uYWxJbnRlZ2VyKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwog
CiAgICAgcGFpcjxpbnQsIGludD4mIGZyb21OdW1iZXJQYWlyID0gZnJvbS0+aW50ZWdlck9wdGlv
bmFsSW50ZWdlcigpOwogICAgIHBhaXI8aW50LCBpbnQ+JiB0b051bWJlclBhaXIgPSB0by0+aW50
ZWdlck9wdGlvbmFsSW50ZWdlcigpOwotICAgIAorCiAgICAgdG9OdW1iZXJQYWlyLmZpcnN0ICs9
IGZyb21OdW1iZXJQYWlyLmZpcnN0OwogICAgIHRvTnVtYmVyUGFpci5zZWNvbmQgKz0gZnJvbU51
bWJlclBhaXIuc2Vjb25kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oCmluZGV4IDU0NDU2NWRhY2Y3YzQ0ODA0ZmM1
OTc1ODgyN2I4YzI2MTYwM2VlMjEuLmRjYTVmMWQyMjA4YjYyOTliNTc4MWMxYmE2YTUzYjMwODg3
YzdiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRl
Z2VyT3B0aW9uYWxJbnRlZ2VyLmgKQEAgLTM5LDggKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eSo+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNW
R0FuaW1hdGVkUHJvcGVydHkqPiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21B
bmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFs
dWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxh
dGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJp
bmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKaW5kZXggNzlhYzQx
MGQxNzkyNjkwZTUzZjMzMThlOTM1YjY3NDFhZDAyOWI2NS4uN2E5N2Y0ZWYwODYwOWZhYjk4M2Ix
OTc3YzI1NDA0NzFmYjdiZDZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGguY3BwCkBAIC03MiwzMCArNzIsMTUgQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9y
OjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnQKICAgICBh
bmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZExlbmd0aD4ocHJvcGVydGllcyk7CiB9
CiAKLXZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFs
dWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykK
K3ZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmlt
YXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0gICAgQVNTRVJUKG1fY29u
dGV4dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0Fu
aW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVs
ZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Ci0gICAgCi0gICAg
ZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1
Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwog
Ci12b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCi17
Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVs
ZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1h
dGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0
cmluZyk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7
Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKLSAgICAKICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQobV9jb250ZXh0RWxlbWVudCk7CiAgICAgU1ZHTGVu
Z3RoJiBmcm9tTGVuZ3RoID0gZnJvbS0+bGVuZ3RoKCk7CiAgICAgU1ZHTGVuZ3RoJiB0b0xlbmd0
aCA9IHRvLT5sZW5ndGgoKTsKKwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHRvTGVu
Z3RoLnNldFZhbHVlKHRvTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbUxlbmd0aC52
YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCwgZWMpOwogICAgIEFTU0VSVCghZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAppbmRleCAyYzEzNmM2MDkzOWM0
NWUyN2MxNTkwMGM3MTdhZjhkM2Q2YTNiZGY1Li44MmE4MGQwOTIzMmQzMWJjNmVkMDI0ZDgxODY0
YzU5MWNhZjAyNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaApAQCAt
MzksNyArMzksNiBAQCBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRMZW5ndGgsIE93
bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01BdHRyaWJ1dGUubAogY2xhc3MgU1ZHQW5pbWF0aW9u
RWxlbWVudDsKIAogY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciA6IHB1YmxpYyBTVkdB
bmltYXRlZFR5cGVBbmltYXRvciB7Ci0KIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZExlbmd0aEFu
aW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcigpIHsgfQpAQCAtNTEsOCArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmlt
YXRlZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25z
dCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMo
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKICAgICB2aXJ0dWFsIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwCmluZGV4IGU5Y2FlNGJiNTc5OTNlZjEzY2UwMjg1YzI0MGU2ODZmMjAxYTdiMDYuLjNm
ODdhOTVmOGE0Mzk4ZTIwOGVjYzU3MzgxMzZlZmU2YjY0YjM3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuY3BwCkBAIC02NSwyNyArNjUsMTEgQEAgdm9p
ZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YW5pbVZhbERpZENoYW5nZShjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm8KICAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxTVkdBbmlt
YXRlZExlbmd0aExpc3Q+KHByb3BlcnRpZXMpOwogfQogCi12b2lkIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQordm9pZCBTVkdBbmltYXRlZExlbmd0
aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNW
R0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmlt
YXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlv
bkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVU
eXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZy
b21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3Ry
aW5nKTsKLX0KKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkTGVuZ3RoTGlzdCk7
CisgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotdm9pZCBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAgICBBU1NF
UlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0g
ICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdB
bmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgYW5pbWF0aW9uRWxlbWVu
dC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKLSAg
ICAKLSAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9
IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOwotICAgIAogICAgIFNWR0xlbmd0aExpc3Qm
IGZyb21MZW5ndGhMaXN0ID0gZnJvbS0+bGVuZ3RoTGlzdCgpOwogICAgIFNWR0xlbmd0aExpc3Qm
IHRvTGVuZ3RoTGlzdCA9IHRvLT5sZW5ndGhMaXN0KCk7CiAgICAgdW5zaWduZWQgaXRlbXNDb3Vu
dCA9IGZyb21MZW5ndGhMaXN0LnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZExlbmd0aExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZExlbmd0aExpc3QuaAppbmRleCA2NjgzYTI5NTRkNGU5YWQzN2JlMWYzMzBlNGE2NDA1MTIzYjM2
MTNiLi44MTJmMWZmNjc0ZDAyYTA3NmQwYzkxZGZkZTY3YTllYmY4ZGZjY2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oCkBAIC0zOSw3ICszOSw2IEBAIERF
RklORV9BTklNQVRFRF9QUk9QRVJUWShBbmltYXRlZExlbmd0aExpc3QsIE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBET01BdHRyaWJ1CiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCiBjbGFz
cyBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVB
bmltYXRvciB7Ci0gICAgCiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0
b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdB
bmltYXRlZExlbmd0aExpc3RBbmltYXRvcigpIHsgfQpAQCAtNTEsOCArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmlt
YXRlZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25z
dCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMo
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKICAgICB2aXJ0dWFsIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWROdW1iZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcApp
bmRleCA1ZGFhZDZmMzMyYjcxYzU3OWMxYjgwNjljOTRjOWRhMTkzNWNjNWEzLi4wMWJiMmI3YjMy
NTI0ZTljYTQ1NjdhNjhjN2NiY2IxOGFjMGFmMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZE51bWJlci5jcHAKQEAgLTY4LDI2ICs2OCwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkTnVt
YmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydAogICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkTnVtYmVyPihwcm9w
ZXJ0aWVzKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKQordm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsKLSAgICBB
U1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7
Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgYW5pbWF0aW9uRWxl
bWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsK
LSAgICAKLSAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0
byA9IGNvbnN0cnVjdEZyb21TdHJpbmcodG9TdHJpbmcpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fY29u
dGV4dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0Fu
aW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVs
ZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7Ci0gICAgCi0gICAg
ZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1h
dGVkTnVtYmVyKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCiAg
ICAgdG8tPm51bWJlcigpICs9IGZyb20tPm51bWJlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWROdW1iZXIuaAppbmRleCA4YWU5YjhmYzMxNzJhNWZjMjlkZTFjYTIxMjBlOGQ4MTk3
YzFhNWFhLi5jZmFiNThjYmZlZjQ4Mjk2YTdiNzRmNTA4ZjE4Mjc4YzRlMGVlYzRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaApAQCAtNDIsNyArNDIsNiBAQCBERUZJTkVf
QU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwgT3duZXJUeXBl
LCBET01BdHRyaWJ1dGUsCiBjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwogCiBjbGFzcyBTVkdB
bmltYXRlZE51bWJlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsK
LQogcHVibGljOgogICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZE51bWJlckFuaW1h
dG9yKCkgeyB9CkBAIC01Niw4ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYW5p
bVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOwogICAg
IHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3BlcnR5Kj4mKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMo
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9W
YWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkVmFsdWUpOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKaW5kZXggMjU3YTA5ZmU1
MjY4M2ZmZjQ2NWViODU2Y2QxZGY4OGRmZjEyOGZmMC4uOGFiM2NiN2FjODAyZGRjMTNjNjM5YmQ4
ZjY0YmQ0YzJiNTgyNWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyTGlzdC5jcHAKQEAgLTY0LDIzICs2NCwxMSBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlz
dEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBybwog
ICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4ocHJvcGVy
dGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0
ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdG9TdHJpbmcpCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjphZGRBbmlt
YXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsK
LSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxl
bWVudCk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7
Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KKyAgICBBU1NFUlQo
ZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgQVNTRVJUKGZyb20tPnR5
cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotdm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7
Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgCi0gICAgZnJvbSA9IGNvbnN0
cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5n
KGJ5U3RyaW5nKTsKLSAgICAKICAgICBTVkdOdW1iZXJMaXN0JiBmcm9tTnVtYmVyTGlzdCA9IGZy
b20tPm51bWJlckxpc3QoKTsKICAgICBTVkdOdW1iZXJMaXN0JiB0b051bWJlckxpc3QgPSB0by0+
bnVtYmVyTGlzdCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oCmluZGV4IDM1ZDkxZWMxZTg5MTgwNjgzY2FjODZiMDIyMmVmMzMwMTE1ZTdlYTguLjY2
OGQzOGZjNGJhZGZjNzRlODdhNDlhNjc1Yjg5NWY2YzU0NzBhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKQEAgLTM5LDcgKzM5LDYgQEAgREVGSU5FX0FO
SU1BVEVEX1BST1BFUlRZKEFuaW1hdGVkTnVtYmVyTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1
dGUsIERPTUF0dHJpYnUKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0Fu
aW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
IHsKLSAgICAKIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcihTVkdB
bmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVk
TnVtYmVyTGlzdEFuaW1hdG9yKCkgeyB9CkBAIC01MSw4ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3Rv
cjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRC
eVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmlt
YXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOwogICAgIHZpcnR1YWwgZmxvYXQgY2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLmNwcAppbmRleCBjNDZjNzkxYjM4ZDNlMmZlZjU3ZjkwMGRiODk1ZDUw
MjE0MmQ0ZTcyLi40Njk3NWIxN2NiNjk5MTMxOThmZGUzZDk5ODFiNzBlZTA0YTVlOTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIuY3BwCkBAIC03MSwyNiArNzEsMTAgQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0EKICAg
ICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZXM8U1ZHQW5pbWF0ZWROdW1iZXIsIFNWR0FuaW1hdGVk
TnVtYmVyPihwcm9wZXJ0aWVzKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFs
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit2b2lkIFNWR0FuaW1hdGVkTnVt
YmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5
cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0gICAgQVNTRVJUKG1fY29udGV4dEVs
ZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVF
bGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQq
PihtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVBy
b3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Ci0gICAgCi0gICAgZnJvbSA9
IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9t
U3RyaW5nKHRvU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fY29udGV4
dEVsZW1lbnQpOwotICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIFNWR0FuaW1h
dGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1l
bnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWlu
ZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7Ci0gICAgCi0gICAgZnJv
bSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RG
cm9tU3RyaW5nKGJ5U3RyaW5nKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gdG8tPnR5
cGUoKSk7CiAKICAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIGZyb21OdW1iZXJQYWlyID0gZnJvbS0+
bnVtYmVyT3B0aW9uYWxOdW1iZXIoKTsKICAgICBwYWlyPGZsb2F0LCBmbG9hdD4mIHRvTnVtYmVy
UGFpciA9IHRvLT5udW1iZXJPcHRpb25hbE51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmgKaW5kZXggZmEyNTgxOWI1
ZWYxMzhlNmE5YTgyNGY3ZDEzNzhlNGRhNmY5ZGRiZC4uZjAyNDUzZDQwNDhmMGIxYzJlOTc5YjM3
NWY5NDkzZjI0MGJiMjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCkBAIC0yOCw3ICsyOCw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdGVk
TnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmlt
YXRvciB7Ci0gICAgCiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJl
ckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yKCkgeyB9CkBAIC00Miwx
MiArNDEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShj
b25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1
ZSk7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwogfTsKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUGF0aC5jcHAKaW5kZXggZjFiN2Y5ZjJhODk5N2YxZDk4YzIxMDcyOWNiNmQ2MDE3YzFhNWRl
OC4uZGU5ZGJjODdlOWEzNzNmMmY3NjczZDE5NWFmMjZmNDY5NzAwNzBjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKQEAgLTM1LDE0ICszNSw4IEBAIFNWR0FuaW1hdGVk
UGF0aEFuaW1hdG9yOjpTVkdBbmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50
KiBhbmltYXRpb25FCiAKIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFBh
dGhBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
LSAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tU3RyaW5n
KHN0cmluZywgcmVzdWx0KTsKLX0KLQotUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0Fu
aW1hdGVkUGF0aEFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sJiByZXN1bHQpCi17CiAgICAgT3duUHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBieXRl
U3RyZWFtID0gU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpOwotICAgIHJlc3VsdCA9IFNWR1Bh
dGhQYXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU3RyaW5n
KHN0cmluZywgYnl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CisgICAgU1ZHUGF0
aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmco
c3RyaW5nLCBieXRlU3RyZWFtLmdldCgpLCBVbmFsdGVyZWRQYXJzaW5nKTsKICAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKGJ5dGVTdHJlYW0ucmVsZWFzZSgpKTsKIH0KIApA
QCAtOTMsMzQgKzg3LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmFuaW1WYWxE
aWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqCiAgICAgYW5pbVZhbERp
ZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4ocHJv
cGVydGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCit2b2lkIFNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVz
KFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsKLSAgICBBU1NF
UlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0K
LSAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBbmltYXRpb25Nb2Rl
IGFuaW1hdGlvbk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCk7Ci0KLSAg
ICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcodG9T
dHJpbmcsIHN1Y2Nlc3MpOworICAgIEFTU0VSVF9VTlVTRUQoZnJvbSwgZnJvbS0+dHlwZSgpID09
IEFuaW1hdGVkUGF0aCk7CisgICAgQVNTRVJUX1VOVVNFRCh0bywgZnJvbS0+dHlwZSgpID09IHRv
LT50eXBlKCkpOwogCi0gICAgLy8gRm9yIHRvLWFuaW1hdGlvbnMgdGhlIGZyb20gbnVtYmVyIGlz
IGNhbGN1bGF0ZWQgbGF0ZXIuCi0gICAgaWYgKCFzdWNjZXNzIHx8IGFuaW1hdGlvbk1vZGUgPT0g
VG9BbmltYXRpb24pIHsKLSAgICAgICAgZnJvbSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0
aChTVkdQYXRoQnl0ZVN0cmVhbTo6Y3JlYXRlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZywgc3VjY2Vzcyk7Ci0g
ICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZyb20gPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZVBhdGgoU1ZHUGF0aEJ5dGVTdHJlYW06OmNyZWF0ZSgpKTsKLX0KLQotdm9p
ZCBTVkdBbmltYXRlZFBhdGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYnksIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAgICAv
LyBGYWxsYmFjayB0byBmcm9tLXRvIGFuaW1hdGlvbiwgc2luY2UgZnJvbS1ieSBhbmltYXRpb24g
ZG9lcyBub3QgbWFrZSBzZW5zZS4KLSAgICBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoZnJvbSwg
YnksIGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKKyAgICAvLyBGSVhNRTogQWRkIGFkZGl0aXZlIHN1
cHBvcnQuCiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBhbmltYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguaAppbmRleCA3
ZTUxYWNiOWY2NjYyYThjNmRkNjk4ODJjZjg1MDAwNmRjODdiOWY2Li4wYWFjYTc2MmQ5ZTBmMTJh
MmU1NDI3Y2U2MGNhMDBhNmYyZDNjM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0
aC5oCkBAIC0zOSwxNCArMzksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFs
V2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAgICAgdmly
dHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVy
dHkqPiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAg
IHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
YW5pbWF0ZWRWYWx1ZSk7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotCi1wcml2YXRl
OgotICAgIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYsIGJvb2wgJnN1Y2Nlc3MpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAKaW5kZXggOGFj
YWJjNDllMzhhN2Y3MDgwN2I4ZjYxNWYxMjY4MmEyOTZhOTJlZi4uMGIyZDMzMjlkZTFlOGJmNjg1
Nzk1Y2Q1NGE3ZGMyOGI2MDY2NmJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQb2ludExpc3QuY3BwCkBAIC02NSwxNyArNjUsMTEgQEAgdm9pZCBTVkdBbmltYXRlZFBvaW50
TGlzdEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFBy
b3AKICAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZFBvaW50TGlzdD4ocHJv
cGVydGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykKK3ZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6YWRkQW5p
bWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCiB7
Ci0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBj
b25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgp
ID09IEFuaW1hdGVkUG9pbnRzKTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBl
KCkpOwogCi12b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21B
bmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlT
dHJpbmcpCi17ICAgIAotICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcp
OwotICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyhieVN0cmluZyk7Ci0gICAgCiAgICAgU1ZH
UG9pbnRMaXN0JiBmcm9tUG9pbnRMaXN0ID0gZnJvbS0+cG9pbnRMaXN0KCk7CiAgICAgU1ZHUG9p
bnRMaXN0JiB0b1BvaW50TGlzdCA9IHRvLT5wb2ludExpc3QoKTsKICAgICB1bnNpZ25lZCBpdGVt
Q291bnQgPSBmcm9tUG9pbnRMaXN0LnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUG9pbnRMaXN0LmgKaW5kZXggYTk1MWRmNTBiNWQyN2ViNmIxMjU2MmIwZDQ5MzVkMzljMjYw
MGUxZi4uNzhhNzk0YjNjMjBjNjdlNjYzZWFjYTc1ODJjODViYmNlYjlhOTc5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKQEAgLTQzLDEyICs0MywxMiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxT
VkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5n
ZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVk
VHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVw
ZWF0Q291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKICAgICB2aXJ0
dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiB0b1N0cmluZyk7CiB9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAppbmRleCA5MDc3Yzc5ODQ1NWFkZDQ1YmMxMmZj
ZWE2MWQ1MjFlOGU4NmRlMWJmLi40ZGNmMThkMmY2MmJkNzEwZGFiMjY0OTg5ZGQ4OTc2YTMwOTdl
ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmNwcApAQCAtNjMsMjMgKzYzLDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNW
R0FuCiAgICAgYW5pbVZhbERpZENoYW5nZUZvclR5cGU8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvPihwcm9wZXJ0aWVzKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW9BbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKK3ZvaWQgU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQogewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICAKLSAgICBmcm9tID0g
Y29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21T
dHJpbmcodG9TdHJpbmcpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
b0FuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRleHRF
bGVtZW50KTsKLSAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICAKLSAgICAvLyBO
b3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdpdGggU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby4gRmFsbGJhY2sgdG8gJ3RvJy1hbmltYXRpb24gcmlnaHQgbm93LiAKLSAg
ICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0
cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIEFTU0VSVF9VTlVTRUQoZnJvbSwgZnJvbS0+
dHlwZSgpID09IEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgQVNTRVJUX1VOVVNF
RCh0bywgZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCmluZGV4IGY1YTc1MmJmZWI1MmE0OGNlYzk0NjM1
M2IxYThkNjdmNWQ2YmMwYzYuLmRlNzExZTU1MDNhNmFjZjRhNzM5YWViODI5ZjJiZjJjZWI5ZWM1
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmgKQEAgLTM5LDcgKzM5LDYgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIEQKIGNs
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpb0FuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLSAgICAK
IHB1YmxpYzoKICAgICBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcihTVkdB
bmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yKCkgeyB9CkBAIC01MSw4ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0Fu
aW1hdGVkUHJvcGVydHkqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNv
bnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4mKTsKIAotICAgIHZpcnR1YWwgdm9pZCBj
YWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1
ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1
ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOwogICAgIHZpcnR1YWwg
ZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRvU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKaW5k
ZXggMjBhNTk2Yzc5OTRmY2IwYjk4ZTU3ZmE5NmU4NzY3NDgyNTk5ZmY4ZC4uZjliYWViNTllODYz
YmFjMTFiYjFkMmJjMDE1ODMwNDAyMTVkMzZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUmVjdC5jcHAKQEAgLTY0LDE4ICs2NCwxMCBAQCB2b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1h
dG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kgog
ICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkUmVjdD4ocHJvcGVydGllcyk7
CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
Cit2b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1h
dGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsKLSAgICBmcm9tID0gY29uc3Ry
dWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmco
dG9TdHJpbmcpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGJ5U3RyaW5nKQotewotICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICAKLSAgICBm
cm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVj
dEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0
ZWRSZWN0KTsKKyAgICBBU1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCiAgICAg
dG8tPnJlY3QoKSArPSBmcm9tLT5yZWN0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRS
ZWN0LmgKaW5kZXggYjliNzM0MDkzYWRmNjc3NjcwNzJhYmE4MDEyMmQ4NjUyN2I0Mzk3Ny4uZmMw
Nzc3MzU1Y2QwMzdjNzk1YTk2ZDhjMWRjZTNkMTI3ZjNkMWNlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFJlY3QuaApAQCAtNTEsOCArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3BlcnR5Kj4m
KTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eSo+Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRv
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdG9TdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMo
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0
cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcAppbmRleCBmOTEzNzcxZDJi
MjAxNTU0OGQ2ZTMwZTc5Nzc4Nzk2ZmUzZGYyMDBmLi4xYmU2ZDExMTdhMjU4ZTBjNTFiOWVlZmIy
MjJkNGM5M2U1OTRmZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5j
cHAKQEAgLTYzLDIzICs2MywxMCBAQCB2b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmFu
aW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydAogICAgIGFuaW1W
YWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkU3RyaW5nPihwcm9wZXJ0aWVzKTsKIH0KIAot
dm9pZCBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMo
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQordm9p
ZCBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKIHsKLSAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0KLSAgICBmcm9tID0g
Y29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0cnVjdEZyb21T
dHJpbmcodG9TdHJpbmcpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNh
bGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgYnlTdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAg
IEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwotICAgIAotICAgIC8vIE5vdCBzcGVjaWZpZWQg
d2hhdCB0byBkbyBvbiAnYnknLWFuaW1hdGlvbnMgd2l0aCBzdHJpbmcuIEZhbGxiYWNrIHRvICd0
byctYW5pbWF0aW9uIHJpZ2h0IG5vdy4gCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmco
ZnJvbVN0cmluZyk7Ci0gICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGZyb20sIGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZFN0cmluZyk7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0bywgZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogfQogCiB2
b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5oCmluZGV4IGIwN2Q0YmU0ZTk3ZDEwNjJiMzg1N2M1M2Q4ZTFjZmJiMDBmNWY3YzIuLjQyZWNm
OTQ5NjkwOWVhYzVlMWM5N2Y2ZjQ1OGYwNDk4NWRmZjFlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZFN0cmluZy5oCkBAIC01MCw4ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJvcGVydHkq
PiYpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFZlY3RvcjxTVkdB
bmltYXRlZFByb3BlcnR5Kj4mKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZyk7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5
U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
ZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOwogICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRl
RGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAK
aW5kZXggYThhYmRlN2Y2ZDE2NjVmMzA1NmFjMGJmOWVmNzA3ZDNkYWFkYjZiNC4uZTk3YjcxNjY4
ZjhhZWU5NDA3MmFlNmY5YmE3YzQ3YzAyZDM1MDkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9u
RWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiAgICAgOiBTVkdBbmltYXRlZFR5
cGVBbmltYXRvcihBbmltYXRlZFRyYW5zZm9ybUxpc3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KQorICAgICwgbV90cmFuc2Zvcm1UeXBlU3RyaW5nKFNWR1RyYW5zZm9ybTo6dHJh
bnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQqPihhbmltYXRpb25FbGVtZW50KS0+dHJhbnNmb3JtVHlwZSgpKSkKIHsKICAgICAv
LyBPbmx5IDxhbmltYXRlVHJhbnNmb3JtPiB1c2VzIHRoaXMgYW5pbWF0b3IsIGFzIDxhbmltYXRl
PiBkb2Vzbid0IGFsbG93IHRvIGFuaW1hdGUgdHJhbnNmb3JtIGxpc3RzIGRpcmVjdGx5LgogICAg
IEFTU0VSVChhbmltYXRpb25FbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJh
bnNmb3JtVGFnKSk7CkBAIC00Myw3ICs0NCw3IEBAIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjpTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcihTVkdBbmltYXRpb25FCiBQ
YXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0
b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVh
dGVUcmFuc2Zvcm1MaXN0KG5ldyBTVkdUcmFuc2Zvcm1MaXN0KTsKLSAgICBhbmltYXRlZFR5cGUt
PnRyYW5zZm9ybUxpc3QoKS5wYXJzZShzdHJpbmcpOworICAgIGFuaW1hdGVkVHlwZS0+dHJhbnNm
b3JtTGlzdCgpLnBhcnNlKG1fdHJhbnNmb3JtVHlwZVN0cmluZyArIHN0cmluZyArICcpJyk7CiAg
ICAgQVNTRVJUKGFuaW1hdGVkVHlwZS0+dHJhbnNmb3JtTGlzdCgpLnNpemUoKSA8PSAxKTsKICAg
ICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKIH0KQEAgLTU4LDEyICs1OSw2IEBAIHZv
aWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OnN0b3BBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFZlY3RvcjxTVkdBbmltCiAgICAgc3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlPFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4ocHJvcGVydGllcyk7CiB9CiAKLWlubGluZSBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNv
bnN0cnVjdEZyb21TdHJpbmcoU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBBU1NFUlQoYW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQpOwotICAgIHJldHVybiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
bmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhTVkdUcmFuc2Zvcm06OnRyYW5zZm9ybVR5cGVQ
cmVmaXhGb3JQYXJzaW5nKGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LT50cmFuc2Zvcm1UeXBlKCkp
ICsgc3RyaW5nICsgJyknKTsKLX0KLQogdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmlt
YXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFZlY3RvcjxTVkdBbmltYXRlZFByb3Bl
cnR5Kj4mIHByb3BlcnRpZXMsIFNWR0FuaW1hdGVkVHlwZSogdHlwZSkKIHsKICAgICByZXNldEZy
b21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Pihwcm9wZXJ0aWVzLCB0eXBlLCAm
U1ZHQW5pbWF0ZWRUeXBlOjp0cmFuc2Zvcm1MaXN0KTsKQEAgLTc5LDIyICs3NCwxMCBAQCB2b2lk
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0
IFZlY3RvcjxTVkdBbmltYXRlZAogICAgIGFuaW1WYWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdD4ocHJvcGVydGllcyk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCi17Ci0gICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJp
bmcoYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGZyb21TdHJpbmcpOwotICAgIHRvID0gY29uc3Ry
dWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudCwgdG9TdHJpbmcpOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlW
YWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5n
KQordm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8pCiB7Ci0gICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQq
IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOwotCi0gICAgZnJvbSA9IGNvbnN0cnVjdEZy
b21TdHJpbmcoYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQsIGZyb21TdHJpbmcpOwotICAgIHRvID0g
Y29uc3RydWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudCwgYnlTdHJpbmcpOwor
ICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBB
U1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCiAgICAgU1ZHVHJhbnNmb3JtTGlz
dCYgZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT50cmFuc2Zvcm1MaXN0KCk7CiAgICAgU1ZHVHJh
bnNmb3JtTGlzdCYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPnRyYW5zZm9ybUxpc3QoKTsKQEAgLTE0
NSwxMiArMTI4LDExIEBAIHZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwKIGZsb2F0IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqIGFuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQqPiht
X2FuaW1hdGlvbkVsZW1lbnQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3Qg
aW4gYWxsIGNhc2VzLiBUaGUgc3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5z
bGF0ZSB4IGFuZCB5IGZvciBleGFtcGxlKQogICAgIC8vIGlzIHBhY2VkIHNlcGFyYXRlbHkuIFRv
IGltcGxlbWVudCB0aGlzIHdlIG5lZWQgdG8gdHJlYXQgZWFjaCBjb21wb25lbnQgYXMgaW5kaXZp
ZHVhbCBhbmltYXRpb24gZXZlcnl3aGVyZS4KLSAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBm
cm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhhbmltYXRlVHJhbnNmb3JtRWxlbWVudCwgZnJvbVN0
cmluZyk7Ci0gICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gdG8gPSBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LCB0b1N0cmluZyk7CisgICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5n
KTsKIAogICAgIFNWR1RyYW5zZm9ybUxpc3QmIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJvbS0+dHJh
bnNmb3JtTGlzdCgpOwogICAgIFNWR1RyYW5zZm9ybUxpc3QmIHRvVHJhbnNmb3JtTGlzdCA9IHRv
LT50cmFuc2Zvcm1MaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmgKaW5kZXggMzA3OWE5NzZlNGVkODM3ODM5NmQ4OTQwZDVjOGNiMzA1Y2UyNDY0
OC4uYThhNGY4MDViZjk4YjQ2NzBlZjg2MzdmMzk3YjMxYWJiZDY0ZWY5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaApAQCAtMzYsNyArMzYsNiBA
QCBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LCBTVkdUcmFuc2Zvcm1MaXN0LCBVcHBlcgogREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKEFuaW1h
dGVkVHJhbnNmb3JtTGlzdCwgT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0ZS5s
b2NhbE5hbWUoKSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKIAogY2xhc3MgU1ZHQW5p
bWF0aW9uRWxlbWVudDsKLWNsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OwogCiBjbGFz
cyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5
cGVBbmltYXRvciB7CiBwdWJsaWM6CkBAIC01MCwxNCArNDksMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBWZWN0b3I8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eSo+Jik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgVmVjdG9y
PFNWR0FuaW1hdGVkUHJvcGVydHkqPiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZy
b21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5
VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYnlTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopOwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CiAgICAgdmlydHVhbCBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpOwogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KiwgY29uc3QgU3RyaW5n
Jik7CisgICAgY29uc3QgU3RyaW5nJiBtX3RyYW5zZm9ybVR5cGVTdHJpbmc7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oCmluZGV4IDg3M2JhZjQ2ZmZhNDE0ZTQ3ZThhNjY2ZWExNDljYjFlYWM5NDBkNWQu
LjE0MTk4ZmM4Mzk1NWJhMWFhYmFkMTI0MGRiYTBmNmExODAxZTc2ZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCkBAIC00MSwxNCArNDEsMjUgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgVmVj
dG9yPFNWR0FuaW1hdGVkUHJvcGVydHkqPiYsIFNWR0FuaW1hdGVkVHlwZSopID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgVmVjdG9yPFNWR0FuaW1hdGVkUHJv
cGVydHkqPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBW
ZWN0b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRl
ZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpID0gMDsK
ICAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwogCi0gICAgdm9pZCBzZXRDb250ZXh0
RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0g
Y29udGV4dEVsZW1lbnQ7IH0KKyAgICB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCisgICAgewor
ICAgICAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICAgICAg
dG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKKyAgICB9CiAKKyAgICB2b2lkIGNh
bGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgYnlTdHJpbmcpCisgICAgeworICAgICAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0
cmluZyhmcm9tU3RyaW5nKTsKKyAgICAgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3Ry
aW5nKTsKKyAgICAgICAgYWRkQW5pbWF0ZWRUeXBlcyhmcm9tLmdldCgpLCB0by5nZXQoKSk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0RWxlbWVudChTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCkgeyBtX2NvbnRleHRFbGVtZW50ID0gY29udGV4dEVsZW1lbnQ7IH0KICAgICBBbmltYXRl
ZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBWZWN0
b3I8U1ZHQW5pbWF0ZWRQcm9wZXJ0eSo+IGZpbmRBbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1
dGVOYW1lKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCg==
</data>
<flag name="review"
          id="144213"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>