<?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>180491</bug_id>
          
          <creation_ts>2017-12-06 11:14:36 -0800</creation_ts>
          <short_desc>Update ANGLE&apos;s changes.diff</short_desc>
          <delta_ts>2017-12-06 16:21:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378705</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-06 11:14:36 -0800</bug_when>
    <thetext>Update ANGLE&apos;s changes.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378706</commentid>
    <comment_count>1</comment_count>
      <attachid>328598</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-06 11:16:05 -0800</bug_when>
    <thetext>Created attachment 328598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378707</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-06 11:18:25 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See http://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378721</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-06 11:46:18 -0800</bug_when>
    <thetext>Committed r225585: &lt;https://trac.webkit.org/changeset/225585&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378876</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 16:21:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/35895818&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328598</attachid>
            <date>2017-12-06 11:16:05 -0800</date>
            <delta_ts>2017-12-06 11:38:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180491-20171206111604.patch</filename>
            <type>text/plain</type>
            <size>365447</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYWMxZmZmYjU2MmNiOGJmNWU0MTk5OGVkNjIzZDhmZGUwZTZjOGUzZS4uODVjMjg0ZmU4Njg3
ZTY0OTY0M2ExZTkyNGQxYTkyYWI3MmE3ODVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEyLTA2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUncyBjaGFuZ2VzLmRpZmYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ5MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhlcmUgaXMgdGhlIGxpc3Qgb2Yg
dGhpbmdzIHdlJ3ZlIGNoYW5nZWQgZnJvbSB0aGUKKyAgICAgICAgQU5HTEUgY29tbWl0IHRoYXQg
d2UgbWVyZ2VkIGluLgorCisgICAgICAgICogY2hhbmdlcy5kaWZmOgorCiAyMDE3LTEyLTA2ICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIGlPUyB0ZXN0cyBm
YWlsaW5nIGFmdGVyIEFOR0xFIHVwZGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvY2hhbmdlcy5kaWZmIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5kaWZm
CmluZGV4IGI3YWUwNmRkNDJmY2ZiYmU3ZTBjZWVhNWIwNTVkZThmY2VhMzY1OTEuLmE1ODIwZDc4
MWJmOThjMzc0OGEwMTNmYjU1YWQwNDEzM2Y4YWFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2NoYW5nZXMuZGlmZgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9j
aGFuZ2VzLmRpZmYKQEAgLTEsMTI0ICsxLDggQEAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL0VHTC9l
Z2wuaCBiL2luY2x1ZGUvRUdML2VnbC5oCi1pbmRleCA5ZjllMDIxLi44YWRhMDUxIDEwMDY0NAot
LS0tIGEvaW5jbHVkZS9FR0wvZWdsLmgKLSsrKyBiL2luY2x1ZGUvRUdML2VnbC5oCi1AQCAtMzgs
NiArMzgsMTIgQEAgZXh0ZXJuICJDIiB7Ci0gCi0gI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5o
PgotIAotKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdMRV9XRUJLSVRfV0lO
KQotKyNkZWZpbmUgRUdMX1NPRlRfTElOS0lORyAxCi0rI2Vsc2UKLSsjZGVmaW5lIEVHTF9TT0ZU
X0xJTktJTkcgMAotKyNlbmRpZgotKwotIC8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwNjIzICov
Ci0gCi0gLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKLUBAIC0xMTgsNiArMTI0LDcgQEAgdHlw
ZWRlZiB2b2lkICgqX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSkodm9p
ZCk7Ci0gI2RlZmluZSBFR0xfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgMHgzMDU0Ci0g
I2RlZmluZSBFR0xfV0lEVEggICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDU3Ci0gI2RlZmlu
ZSBFR0xfV0lORE9XX0JJVCAgICAgICAgICAgICAgICAgICAgMHgwMDA0Ci0rI2lmICFFR0xfU09G
VF9MSU5LSU5HCi0gRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsQ2hvb3NlQ29uZmln
IChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpj
b25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZyk7Ci0gRUdMQVBJ
IEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsQ29weUJ1ZmZlcnMgKEVHTERpc3BsYXkgZHB5LCBF
R0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KTsKLSBFR0xBUEkg
RUdMQ29udGV4dCBFR0xBUElFTlRSWSBlZ2xDcmVhdGVDb250ZXh0IChFR0xEaXNwbGF5IGRweSwg
RUdMQ29uZmlnIGNvbmZpZywgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LCBjb25zdCBFR0xpbnQg
KmF0dHJpYl9saXN0KTsKLUBAIC0xNDIsNiArMTQ5LDcgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZh
Y2UKLSBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xUZXJtaW5hdGUgKEVHTERpc3Bs
YXkgZHB5KTsKLSBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xXYWl0R0wgKHZvaWQp
OwotIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXROYXRpdmUgKEVHTGludCBl
bmdpbmUpOwotKyNlbmRpZgotICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzAgKi8KLSAKLSAjaWZu
ZGVmIEVHTF9WRVJTSU9OXzFfMQotQEAgLTE2MCwxMCArMTY4LDEyIEBAIEVHTEFQSSBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXROYXRpdmUgKEVHTGludCBlbmdpbmUpOwotICNkZWZpbmUg
RUdMX1RFWFRVUkVfUkdCICAgICAgICAgICAgICAgICAgIDB4MzA1RAotICNkZWZpbmUgRUdMX1RF
WFRVUkVfUkdCQSAgICAgICAgICAgICAgICAgIDB4MzA1RQotICNkZWZpbmUgRUdMX1RFWFRVUkVf
VEFSR0VUICAgICAgICAgICAgICAgIDB4MzA4MQotKyNpZiAhRUdMX1NPRlRfTElOS0lORwotIEVH
TEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEJpbmRUZXhJbWFnZSAoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcik7Ci0gRUdMQVBJIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsUmVsZWFzZVRleEltYWdlIChFR0xEaXNwbGF5IGRweSwgRUdMU3Vy
ZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVmZmVyKTsKLSBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBlZ2xTdXJmYWNlQXR0cmliIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNl
LCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgdmFsdWUpOwotIEVHTEFQSSBFR0xCb29sZWFuIEVH
TEFQSUVOVFJZIGVnbFN3YXBJbnRlcnZhbCAoRUdMRGlzcGxheSBkcHksIEVHTGludCBpbnRlcnZh
bCk7Ci0rI2VuZGlmCi0gI2VuZGlmIC8qIEVHTF9WRVJTSU9OXzFfMSAqLwotIAotICNpZm5kZWYg
RUdMX1ZFUlNJT05fMV8yCi1AQCAtMTk5LDExICsyMDksMTMgQEAgdHlwZWRlZiB2b2lkICpFR0xD
bGllbnRCdWZmZXI7Ci0gI2RlZmluZSBFR0xfU1dBUF9CRUhBVklPUiAgICAgICAgICAgICAgICAg
MHgzMDkzCi0gI2RlZmluZSBFR0xfVU5LTk9XTiAgICAgICAgICAgICAgICAgICAgICAgKChFR0xp
bnQpLTEpCi0gI2RlZmluZSBFR0xfVkVSVElDQUxfUkVTT0xVVElPTiAgICAgICAgICAgMHgzMDkx
Ci0rI2lmICFFR0xfU09GVF9MSU5LSU5HCi0gRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkg
ZWdsQmluZEFQSSAoRUdMZW51bSBhcGkpOwotIEVHTEFQSSBFR0xlbnVtIEVHTEFQSUVOVFJZIGVn
bFF1ZXJ5QVBJICh2b2lkKTsKLSBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVh
dGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gYnVmdHlw
ZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCk7Ci0gRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUmVsZWFz
ZVRocmVhZCAodm9pZCk7Ci0gRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdENs
aWVudCAodm9pZCk7Ci0rI2VuZGlmCi0gI2VuZGlmIC8qIEVHTF9WRVJTSU9OXzFfMiAqLwotIAot
ICNpZm5kZWYgRUdMX1ZFUlNJT05fMV8zCi1AQCAtMjMyLDcgKzI0NCw5IEBAIEVHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXRDbGllbnQgKHZvaWQpOwotICNkZWZpbmUgRUdMX09Q
RU5HTF9BUEkgICAgICAgICAgICAgICAgICAgIDB4MzBBMgotICNkZWZpbmUgRUdMX09QRU5HTF9C
SVQgICAgICAgICAgICAgICAgICAgIDB4MDAwOAotICNkZWZpbmUgRUdMX1NXQVBfQkVIQVZJT1Jf
UFJFU0VSVkVEX0JJVCAgIDB4MDQwMAotKyNpZiAhRUdMX1NPRlRfTElOS0lORwotIEVHTEFQSSBF
R0xDb250ZXh0IEVHTEFQSUVOVFJZIGVnbEdldEN1cnJlbnRDb250ZXh0ICh2b2lkKTsKLSsjZW5k
aWYKLSAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV80ICovCi0gCi0gI2lmbmRlZiBFR0xfVkVSU0lP
Tl8xXzUKLUBAIC0yODQsNiArMjk4LDcgQEAgdHlwZWRlZiB2b2lkICpFR0xJbWFnZTsKLSAjZGVm
aW5lIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogMHgzMEI4Ci0gI2RlZmluZSBF
R0xfSU1BR0VfUFJFU0VSVkVEICAgICAgICAgICAgICAgMHgzMEQyCi0gI2RlZmluZSBFR0xfTk9f
SU1BR0UgICAgICAgICAgICAgICAgICAgICAgKChFR0xJbWFnZSkwKQotKyNpZiAhRUdMX1NPRlRf
TElOS0lORwotIEVHTEFQSSBFR0xTeW5jIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVN5bmMgKEVHTERp
c3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwot
IEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbERlc3Ryb3lTeW5jIChFR0xEaXNwbGF5
IGRweSwgRUdMU3luYyBzeW5jKTsKLSBFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbENsaWVu
dFdhaXRTeW5jIChFR0xEaXNwbGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MsIEVH
TFRpbWUgdGltZW91dCk7Ci1AQCAtMjk0LDggKzMwOSwxMyBAQCBFR0xBUEkgRUdMRGlzcGxheSBF
R0xBUElFTlRSWSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQg
Km5hdAotIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBsYXRmb3JtV2lu
ZG93U3VyZmFjZSAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIHZvaWQgKm5hdGl2
ZV93aW5kb3csIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwotIEVHTEFQSSBFR0xTdXJm
YWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZSAoRUdMRGlzcGxh
eSBkcHksIEVHTENvbmZpZyBjb25maWcsIHZvaWQgKm5hdGl2ZV9waXhtYXAsIGNvbnN0IEVHTEF0
dHJpYiAqYXR0cmliX2xpc3QpOwotIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdh
aXRTeW5jIChFR0xEaXNwbGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MpOwotKyNl
bmRpZgotICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzUgKi8KLSAKLSsjaWYgRUdMX1NPRlRfTElO
S0lORwotKyNpbmNsdWRlIDxFR0wvZWdsc29mdGxpbmtpbmcuaD4KLSsjZW5kaWYKLSsKLSAjaWZk
ZWYgX19jcGx1c3BsdXMKLSB9Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9HTEVTMi9n
bDIuaCBiL2luY2x1ZGUvR0xFUzIvZ2wyLmgKLWluZGV4IDAyN2UxZjcuLjRkNzEwYzIgMTAwNjQ0
Ci0tLS0gYS9pbmNsdWRlL0dMRVMyL2dsMi5oCi0rKysgYi9pbmNsdWRlL0dMRVMyL2dsMi5oCi1A
QCAtNTIwLDYgKzUyMCwxMSBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRF
WEFUVFJJQjRGUFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTAotIHR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCNEZWUFJPQykgKEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdik7Ci0gdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJU
RVhBVFRSSUJQT0lOVEVSUFJPQykgKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9p
bnRlcik7Ci0gdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWSUVXUE9SVFBST0MpIChH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci0rCi0rI2lm
IGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKEFOR0xFX1dFQktJVF9XSU4pCi0rI2luY2x1
ZGUgPEdMRVMyL2dsMnNvZnRsaW5raW5nLmg+Ci0rI2Vsc2UKLSsKLSAjaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUwotIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEFjdGl2ZVRleHR1cmUg
KEdMZW51bSB0ZXh0dXJlKTsKLSBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xBdHRhY2hT
aGFkZXIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKLUBAIC02NjQsNiArNjY5LDcg
QEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliNGZ2IChHTHVpbnQg
aW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwotIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFZlcnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9p
bnRlcik7Ci0gR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmlld3BvcnQgKEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLSAjZW5kaWYKLSsjZW5k
aWYKLSAjZW5kaWYgLyogR0xfRVNfVkVSU0lPTl8yXzAgKi8KLSAKLSAjaWZkZWYgX19jcGx1c3Bs
dXMKIGRpZmYgLS1naXQgYS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oIGIvaW5jbHVkZS9H
TFNMQU5HL1NoYWRlckxhbmcuaAotaW5kZXggOTY1ZjdhYi4uZjdiMGVmNyAxMDA2NDQKK2luZGV4
IDE0NjhiYjE0Ni4uMjg3NWMwMmFiIDEwMDY0NAogLS0tIGEvaW5jbHVkZS9HTFNMQU5HL1NoYWRl
ckxhbmcuaAogKysrIGIvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAotQEAgLTI1LDcgKzI1
LDcgQEAKK0BAIC04LDcgKzgsNyBAQAogIAogICNpbmNsdWRlIDxzdGRkZWYuaD4KICAKQEAgLTEy
Nyw4MyArMTEsMTQ1IEBAIGluZGV4IDk2NWY3YWIuLmY3YjBlZjcgMTAwNjQ0CiAgCiAgI2luY2x1
ZGUgPGFycmF5PgogICNpbmNsdWRlIDxtYXA+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9hbmds
ZXV0aWxzLmNwcCBiL3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAKLWluZGV4IDcwOTljMjEuLjQ2
NDE5MjggMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCi0rKysgYi9zcmMv
Y29tbW9uL2FuZ2xldXRpbHMuY3BwCi1AQCAtMzYsNyArMzYsMTAgQEAgc2l6ZV90IEZvcm1hdFN0
cmluZ0ludG9WZWN0b3IoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFyZywgc3RkOjp2ZWN0
b3I8Y2hhcj4KLSAKLSBzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29uc3QgY2hhciAqZm10LCB2
YV9saXN0IHZhcmFyZykKK2RpZmYgLS1naXQgYS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5o
IGIvaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMuaAoraW5kZXggNzA5NDI4YWViLi5hY2Q5YzM1
OGYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oCisrKysgYi9pbmNs
dWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oCitAQCAtMjgxLDEwICsyODEsMTcgQEAgc3RydWN0IFdv
cmtHcm91cFNpemUKICB7CisgICAgIC8vIE11c3QgaGF2ZSBhIHRyaXZpYWwgZGVmYXVsdCBjb25z
dHJ1Y3RvciBzaW5jZSBpdCBpcyB1c2VkIGluIFlZU1RZUEUuCisgICAgIFdvcmtHcm91cFNpemUo
KSA9IGRlZmF1bHQ7CisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQogKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10
aW1lLWRlc3RydWN0b3JzIgotICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDUx
Mik7CisrI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1icmFjZXMi
CisrI2VuZGlmCisgICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBXb3JrR3JvdXBTaXplKGludCBpbml0
aWFsU2l6ZSkKKyAgICAgICAgIDogbG9jYWxTaXplUXVhbGlmaWVyc3tpbml0aWFsU2l6ZSwgaW5p
dGlhbFNpemUsIGluaXRpYWxTaXplfQorICAgICB7CisgICAgIH0KKysjaWYgZGVmaW5lZChfX2Ns
YW5nX18pCiArI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorKyNlbmRpZgogIAotICAgICBz
aXplX3QgbGVuID0gRm9ybWF0U3RyaW5nSW50b1ZlY3RvcihmbXQsIHZhcmFyZywgYnVmZmVyKTsK
LSAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCZidWZmZXJbMF0sIGxlbik7Ci1kaWZmIC0tZ2l0IGEv
c3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAotaW5kZXgg
ZjVlZjdiZC4uNGNiNTU2YyAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCi0r
KysgYi9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAotQEAgLTExNiw3ICsxMTYsMTAgQEAgaW5saW5l
IGJvb2wgSXNNYXNrRmxhZ1NldChUIG1hc2ssIFQgZmxhZykKKyAgICAgdm9pZCBmaWxsKGludCBm
aWxsVmFsdWUpOworICAgICB2b2lkIHNldExvY2FsU2l6ZShpbnQgbG9jYWxTaXplWCwgaW50IGxv
Y2FsU2l6ZVksIGludCBsb2NhbFNpemVaKTsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL0tIUi9raHJw
bGF0Zm9ybS5oIGIvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaAorb2xkIG1vZGUgMTAwNzU1Citu
ZXcgbW9kZSAxMDA2NDQKK2luZGV4IDY4ZmNhNDgyNy4uMDdiNjFiOWJkCistLS0gYS9pbmNsdWRl
L0tIUi9raHJwbGF0Zm9ybS5oCisrKysgYi9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCitAQCAt
MjgyLDQgKzI4Miw0IEBAIHR5cGVkZWYgZW51bSB7CisgICAgIEtIUk9OT1NfQk9PTEVBTl9FTlVN
X0ZPUkNFX1NJWkUgPSBLSFJPTk9TX01BWF9FTlVNCisgfSBraHJvbm9zX2Jvb2xlYW5fZW51bV90
OwogIAotIGlubGluZSBjb25zdCBjaGFyKiBNYWtlU3RhdGljU3RyaW5nKGNvbnN0IHN0ZDo6c3Ry
aW5nICZzdHIpCi0geworLSNlbmRpZiAvKiBfX2tocnBsYXRmb3JtX2hfICovCitcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKysjZW5kaWYgLyogX19raHJwbGF0Zm9ybV9oXyAqLworZGlmZiAt
LWdpdCBhL3NyYy9jb21tb24vdGhpcmRfcGFydHkvc21oYXNoZXIvc3JjL1BNdXJIYXNoLmNwcCBi
L3NyYy9jb21tb24vdGhpcmRfcGFydHkvc21oYXNoZXIvc3JjL1BNdXJIYXNoLmNwcAoraW5kZXgg
MDcxYmMzMTUzLi4yZDYwOGU5N2QgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL3RoaXJkX3BhcnR5
L3NtaGFzaGVyL3NyYy9QTXVySGFzaC5jcHAKKysrKyBiL3NyYy9jb21tb24vdGhpcmRfcGFydHkv
c21oYXNoZXIvc3JjL1BNdXJIYXNoLmNwcAorQEAgLTc0LDYgKzc0LDEyIEBAIG9uIGJpZyBlbmRp
YW4gbWFjaGluZXMsIG9yIGEgYnl0ZS1ieS1ieXRlIHJlYWQgaWYgdGhlIGVuZGlhbmVzcyBpcyB1
bmtub3duLgorICAqIFJPVEwzMih4LHIpICAgICAgUm90YXRlIHggbGVmdCBieSByIGJpdHMKKyAg
Ki8KKyAKKysjaWYgIWRlZmluZWQoX19CWVRFX09SREVSKSAmJiBkZWZpbmVkKF9fR05VQ19fKQor
KyAgI2RlZmluZSBfX0JJR19FTkRJQU4gX19PUkRFUl9CSUdfRU5ESUFOX18KKysgICNkZWZpbmUg
X19MSVRUTEVfRU5ESUFOIF9fT1JERVJfTElUVExFX0VORElBTl9fCisrICAjZGVmaW5lIF9fQllU
RV9PUkRFUiBfX0JZVEVfT1JERVJfXworKyNlbmRpZgorKworIC8qIENvbnZlbnRpb24gaXMgdG8g
ZGVmaW5lIF9fQllURV9PUkRFUiA9PSB0byBvbmUgb2YgdGhlc2UgdmFsdWVzICovCisgI2lmICFk
ZWZpbmVkKF9fQklHX0VORElBTikKKyAgICNkZWZpbmUgX19CSUdfRU5ESUFOIDQzMjEKK0BAIC04
NCw3ICs5MCw5IEBAIG9uIGJpZyBlbmRpYW4gbWFjaGluZXMsIG9yIGEgYnl0ZS1ieS1ieXRlIHJl
YWQgaWYgdGhlIGVuZGlhbmVzcyBpcyB1bmtub3duLgorIAorIC8qIEkzODYgKi8KKyAjaWYgZGVm
aW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikgfHwg
ZGVmaW5lZChpMzg2KQorLSAgI2RlZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOCisr
ICAjaWYgIWRlZmluZWQoX19CWVRFX09SREVSKQorKyAgICAjZGVmaW5lIF9fQllURV9PUkRFUiBf
X0xJVFRMRV9FTkRJQU4KKysgICNlbmRpZgorICAgI2RlZmluZSBVTkFMSUdORURfU0FGRQorICNl
bmRpZgorIAorQEAgLTExMSw3ICsxMTksMTQgQEAgb24gYmlnIGVuZGlhbiBtYWNoaW5lcywgb3Ig
YSBieXRlLWJ5LWJ5dGUgcmVhZCBpZiB0aGUgZW5kaWFuZXNzIGlzIHVua25vd24uCisgLyogTm93
IGZpbmQgYmVzdCB3YXkgd2UgY2FuIHRvIFJFQURfVUlOVDMyICovCisgI2lmIF9fQllURV9PUkRF
Uj09X19MSVRUTEVfRU5ESUFOCisgICAvKiBDUFUgZW5kaWFuIG1hdGNoZXMgbXVybXVyaGFzaCBh
bGdvcml0aG0sIHNvIHJlYWQgMzItYml0IHdvcmQgZGlyZWN0bHkgKi8KKysjaWYgZGVmaW5lZChf
X2NsYW5nX18pCiArI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgIHN0YXRp
YyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gc3RyaW5nczsKKysjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdjYXN0LWFsaWduIgorKyNlbmRpZgorICAgI2RlZmluZSBSRUFEX1VJTlQz
MihwdHIpICAgKCooKHVpbnQzMl90KikocHRyKSkpCisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQog
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+
OjppdGVyYXRvciBpdCA9IHN0cmluZ3MuZmluZChzdHIpOwotICAgICBpZiAoaXQgIT0gc3RyaW5n
cy5lbmQoKSkKLSAgICAgewotZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vZGVidWcuY3BwIGIvc3Jj
L2NvbW1vbi9kZWJ1Zy5jcHAKLWluZGV4IDc0NmRhNWUuLjQ3ZTE1NjUgMTAwNjQ0Ci0tLS0gYS9z
cmMvY29tbW9uL2RlYnVnLmNwcAotKysrIGIvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKLUBAIC02OSw3
ICs2OSwxMCBAQCB2b2lkIG91dHB1dChib29sIHRyYWNlSW5EZWJ1Z09ubHksIE1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBEZWJ1Z1RyYWNlT3V0cHV0VHlwZQotIHsKLSAgICAgaWYgKERlYnVnQW5u
b3RhdGlvbnNBY3RpdmUoKSkKLSAgICAgeworKyNlbmRpZgorICNlbGlmIF9fQllURV9PUkRFUj09
X19CSUdfRU5ESUFOCisgICAvKiBUT0RPOiBBZGQgYWRkaXRpb25hbCBjYXNlcyBiZWxvdyB3aGVy
ZSBhIGNvbXBpbGVyIHByb3ZpZGVkIGJzd2FwMzIgaXMgYXZhaWxhYmxlICovCisgICAjaWYgZGVm
aW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPjQgfHwgKF9fR05VQ19fPT00ICYmIF9fR05VQ19N
SU5PUl9fPj0zKSkKK0BAIC0yMTgsMTQgKzIzMywyOCBAQCB2b2lkIFBNdXJIYXNoMzJfUHJvY2Vz
cyh1aW50MzJfdCAqcGgxLCB1aW50MzJfdCAqcGNhcnJ5LCBjb25zdCB2b2lkICprZXksIGludCBs
ZQorICAgc3dpdGNoKG4pIHsgLyogaG93IG1hbnkgYnl0ZXMgaW4gYyAqLworICAgY2FzZSAwOiAv
KiBjPVstLS0tXSAgdz1bMzIxMF0gIGI9WzMyMTBdPXcgICAgICAgICAgICBjJz1bLS0tLV0gKi8K
KyAgICAgZm9yKCA7IHB0ciA8IGVuZCA7IHB0cis9NCkgeworKyNpZiBkZWZpbmVkKF9fY2xhbmdf
XykKICsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKLSAgICAgICAgIHN0YXRpYyBz
dGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKKysjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdjYXN0LWFsaWduIgorKyNlbmRpZgorICAgICAgIHVpbnQzMl90IGsxID0gUkVB
RF9VSU5UMzIocHRyKTsKKysjaWYgZGVmaW5lZChfX2NsYW5nX18pCiArI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgICAgICAgc2l6ZV90IGxlbiA9IEZvcm1hdFN0cmluZ0ludG9WZWN0
b3IoZm9ybWF0LCB2YXJhcmcsIGJ1ZmZlcik7Ci0gICAgICAgICBzdGQ6OndzdHJpbmcgZm9ybWF0
dGVkV2lkZU1lc3NhZ2UoYnVmZmVyLmJlZ2luKCksIGJ1ZmZlci5iZWdpbigpICsgbGVuKTsKLSAK
LWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcCBiL3NyYy9jb21tb24vbWF0aHV0
aWwuY3BwCi1pbmRleCBhY2JjYmRmLi5iYTZkYTUyIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9t
YXRodXRpbC5jcHAKLSsrKyBiL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwCi1AQCAtMzEsOSArMzEs
MTIgQEAgc3RhdGljIGNvbnN0IGludCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMgPSA5OwotIC8v
IEVtYXggaXMgdGhlIG1heGltdW0gYWxsb3dlZCBiaWFzZWQgZXhwb25lbnQgdmFsdWUgKDMxKQot
IHN0YXRpYyBjb25zdCBpbnQgZ19zaGFyZWRleHBfbWF4ZXhwb25lbnQgPSAzMTsKLSAKKysjZW5k
aWYKKyAgICAgICBET0JMT0NLKGgxLCBrMSk7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNl
IDE6IC8qIGM9WzAtLS1dICB3PVs0MzIxXSAgYj1bMzIxMF09Yz4+MjR8dzw8OCAgIGMnPVs0LS0t
XSAqLworICAgICBmb3IoIDsgcHRyIDwgZW5kIDsgcHRyKz00KSB7CisgICAgICAgdWludDMyX3Qg
azEgPSBjPj4yNDsKKysjaWYgZGVmaW5lZChfX2NsYW5nX18pCiArI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdnbG9iYWwt
Y29uc3RydWN0b3JzIgotIHN0YXRpYyBjb25zdCBmbG9hdCBnX3NoYXJlZGV4cF9tYXggPSAoKHBv
dygyLjBmLCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMpIC0gMSkgLwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvdygyLjBmLCBnX3NoYXJlZGV4cF9tYW50aXNzYWJp
dHMpKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdygyLjBmLCBn
X3NoYXJlZGV4cF9tYXhleHBvbmVudCAtIGdfc2hhcmVkZXhwX2JpYXMpOworKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtYWxpZ24iCisrI2VuZGlmCisgICAgICAgYyA9
IFJFQURfVUlOVDMyKHB0cik7CisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQogKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKLSAKLSB1bnNpZ25lZCBpbnQgY29udmVydFJHQkZsb2F0c1RvOTk5
RTUoZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSkKLSB7Ci1kaWZmIC0tZ2l0IGEv
c3JjL2NvbW1vbi92ZXJzaW9uLmggYi9zcmMvY29tbW9uL3ZlcnNpb24uaAotaW5kZXggZTdmZmE3
Yy4uYjY1M2FlMyAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb24vdmVyc2lvbi5oCi0rKysgYi9zcmMv
Y29tbW9uL3ZlcnNpb24uaAotQEAgLTcsNyArNyw3IEBACi0gI2lmbmRlZiBDT01NT05fVkVSU0lP
Tl9IXwotICNkZWZpbmUgQ09NTU9OX1ZFUlNJT05fSF8KLSAKLS0jaW5jbHVkZSAiaWQvY29tbWl0
LmgiCi0rI2luY2x1ZGUgImNvbW1pdC5oIgotIAotICNkZWZpbmUgQU5HTEVfTUFKT1JfVkVSU0lP
TiAyCi0gI2RlZmluZSBBTkdMRV9NSU5PUl9WRVJTSU9OIDEKKysjZW5kaWYKKyAgICAgICBrMSB8
PSBjPDw4OworICAgICAgIERPQkxPQ0soaDEsIGsxKTsKKyAgICAgfQorQEAgLTIzMyw3ICsyNjIs
MTQgQEAgdm9pZCBQTXVySGFzaDMyX1Byb2Nlc3ModWludDMyX3QgKnBoMSwgdWludDMyX3QgKnBj
YXJyeSwgY29uc3Qgdm9pZCAqa2V5LCBpbnQgbGUKKyAgIGNhc2UgMjogLyogYz1bMTAtLV0gIHc9
WzU0MzJdICBiPVszMjEwXT1jPj4xNnx3PDwxNiAgYyc9WzU0LS1dICovCisgICAgIGZvciggOyBw
dHIgPCBlbmQgOyBwdHIrPTQpIHsKKyAgICAgICB1aW50MzJfdCBrMSA9IGM+PjE2OworKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfXykKKysjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Nhc3QtYWxpZ24iCisrI2VuZGlmCisgICAg
ICAgYyA9IFJFQURfVUlOVDMyKHB0cik7CisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQorKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKysjZW5kaWYKKyAgICAgICBrMSB8PSBjPDwxNjsKKyAg
ICAgICBET0JMT0NLKGgxLCBrMSk7CisgICAgIH0KK0BAIC0yNDEsNyArMjc3LDE0IEBAIHZvaWQg
UE11ckhhc2gzMl9Qcm9jZXNzKHVpbnQzMl90ICpwaDEsIHVpbnQzMl90ICpwY2FycnksIGNvbnN0
IHZvaWQgKmtleSwgaW50IGxlCisgICBjYXNlIDM6IC8qIGM9WzIxMC1dICB3PVs2NTQzXSAgYj1b
MzIxMF09Yz4+OHx3PDwyNCAgIGMnPVs2NTQtXSAqLworICAgICBmb3IoIDsgcHRyIDwgZW5kIDsg
cHRyKz00KSB7CisgICAgICAgdWludDMyX3QgazEgPSBjPj44OworKyNpZiBkZWZpbmVkKF9fY2xh
bmdfXykKKysjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2Nhc3QtYWxpZ24iCisrI2VuZGlmCisgICAgICAgYyA9IFJFQURf
VUlOVDMyKHB0cik7CisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQorKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKKysjZW5kaWYKKyAgICAgICBrMSB8PSBjPDwyNDsKKyAgICAgICBET0JMT0NL
KGgxLCBrMSk7CisgICAgIH0KIGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L0V4cHJlc3Npb25QYXJzZXIuY3BwIGIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLmNwcAotaW5kZXggZjczN2EyZS4uYThkZjIzNSAxMDA2NDQKK2luZGV4IGVkZTMz
NDYxOS4uYzBmOGI5Yzk3IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9F
eHByZXNzaW9uUGFyc2VyLmNwcAogKysrIGIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHBy
ZXNzaW9uUGFyc2VyLmNwcAogQEAgLTEsNSArMSw3IEBACkBAIC0yMTUsMTU1ICsxNjEsNTkgQEAg
aW5kZXggZjczN2EyZS4uYThkZjIzNSAxMDA2NDQKICAKICAgICBDb3B5cmlnaHQgKEMpIDE5ODQs
IDE5ODktMTk5MCwgMjAwMC0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogZGlm
ZiAtLWdpdCBhL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcCBiL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmNwcAotaW5kZXggNDBlOTEwZS4uZmVlMjBj
NiAxMDA2NDQKK2luZGV4IGQ4YTliOWExMi4uZDdmYWQ2OGYxIDEwMDY0NAogLS0tIGEvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuaXplci5jcHAKLUBAIC05NjksNyArOTY5LDcgQEAgc3RhdGljIHZvaWQg
eXlfZmxleF9zdHJuY3B5IChjaGFyICoseXljb25zdCBjaGFyICosaW50ICx5eXNjYW5fdCB5eXNj
YW5uZXIpOwotIHN0YXRpYyBpbnQgeXlfZmxleF9zdHJsZW4gKHl5Y29uc3QgY2hhciAqICx5eXNj
YW5fdCB5eXNjYW5uZXIpOworQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRpYyB2b2lkIHl5X2Zs
ZXhfc3RybmNweSAoIGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQgLCB5eXNjYW5fdCB5eXNjYW5u
ZXIpOworIHN0YXRpYyBpbnQgeXlfZmxleF9zdHJsZW4gKCBjb25zdCBjaGFyICogLCB5eXNjYW5f
dCB5eXNjYW5uZXIpOwogICNlbmRpZgogIAogLSNpZm5kZWYgWVlfTk9fSU5QVVQKLSsjaWYgMAot
IAorKyNpZiAwIC8vICNpZm5kZWYgWVlfTk9fSU5QVVQKICAjaWZkZWYgX19jcGx1c3BsdXMKLSBz
dGF0aWMgaW50IHl5aW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwotQEAgLTE4NTgsNyArMTg1
OCw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIp
Cisgc3RhdGljIGludCB5eWlucHV0ICggeXlzY2FuX3QgeXlzY2FubmVyICk7CisgI2Vsc2UKK0BA
IC0yMDQ5LDcgKzIwNDksNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2Fu
X3QgeXlzY2FubmVyKQogIAogICNlbmRpZgogIAogLSNpZm5kZWYgWVlfTk9fSU5QVVQKLSsjaWYg
MAorKyNpZiAwIC8vICNpZm5kZWYgWVlfTk9fSU5QVVQKICAjaWZkZWYgX19jcGx1c3BsdXMKICAg
ICAgc3RhdGljIGludCB5eWlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAgI2Vsc2UKLUBAIC0x
ODgzLDcgKzE4ODMsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3Qg
eXlzY2FubmVyKQotIAotIAkJZWxzZQotIAkJCXsgLyogbmVlZCBtb3JlIGlucHV0ICovCi0tCQkJ
aW50IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKLSsJCQlhdXRv
IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKLSAJCQkrK3l5Zy0+
eXlfY19idWZfcDsKLSAKLSAJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5l
ciApICkKLUBAIC0yMDE0LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBwcF9sb2FkX2J1ZmZlcl9z
dGF0ZSAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKLSAJaWYgKCAhIGIgKQotIAkJWVlfRkFUQUxfRVJS
T1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBfY3JlYXRlX2J1ZmZlcigpIiApOwotIAot
LQliLT55eV9idWZfc2l6ZSA9ICh5eV9zaXplX3Qpc2l6ZTsKLSsJYi0+eXlfYnVmX3NpemUgPSBz
aXplOwotIAotIAkvKiB5eV9jaF9idWYgaGFzIHRvIGJlIDIgY2hhcmFjdGVycyBsb25nZXIgdGhh
biB0aGUgc2l6ZSBnaXZlbiBiZWNhdXNlCi0gCSAqIHdlIG5lZWQgdG8gcHV0IGluIDIgZW5kLW9m
LWJ1ZmZlciBjaGFyYWN0ZXJzLgotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L09wZXJhdG9yLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAotaW5k
ZXggNTc4NzhiOS4uMGI2OTNlMiAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L09wZXJhdG9yLmNwcAotKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3Bw
Ci1AQCAtMjI0LDQgKzIyNCw0IEBAIGJvb2wgSXNBc3NpZ25tZW50KFRPcGVyYXRvciBvcCkKLSAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBh
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAgYi9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCitpbmRleCBjOTdmOTFkNzguLmQwYTRmNmFlYiAx
MDA2NDQKKy0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKKysr
KyBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKK0BAIC0zMjQwLDgg
KzMyNDAsMTEgQEAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpUUGFyc2VDb250ZXh0OjphZGRG
dW5jdGlvblByb3RvdHlwZURlY2xhcmF0aW9uKAogICAgICB9Ci0tfQotXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCi0rfQotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091
dHB1dEhMU0wuaCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuaAotaW5kZXgg
ZGI3ODg1OS4uZjI5NmRkOSAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091
dHB1dEhMU0wuaAotKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCi1A
QCAtNTYsMjEgKzU2LDIxIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlcgotICAgICB2b2lkIGhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICpidWlsdEluRnVuY3Rpb25FbXVsYXRvcik7Ci0gCi0gICAgIC8vIFZp
c2l0IEFTVCBub2RlcyBhbmQgb3V0cHV0IHRoZWlyIGNvZGUgdG8gdGhlIGJvZHkgc3RyZWFtCi0t
ICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopOwotLSAgICB2b2lkIHZpc2l0UmF3
KFRJbnRlcm1SYXcqKTsKLS0gICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0
YW50VW5pb24qKTsKLSsgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikgb3ZlcnJp
ZGU7Ci0rICAgIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyopIG92ZXJyaWRlOwotKyAgICB2b2lk
IHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiopIG92ZXJyaWRlOwotICAg
ICBib29sIHZpc2l0U3dpenpsZShWaXNpdCB2aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUpIG92
ZXJyaWRlOwotLSAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5
Kik7Ci0tICAgIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5Kik7Ci0t
ICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKTsKLS0g
ICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqKTsKLS0gICAg
Ym9vbCB2aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAqKTsKLS0gICAgYm9v
bCB2aXNpdENhc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1DYXNlICopOwotKyAgICBib29sIHZpc2l0
QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5Kikgb3ZlcnJpZGU7Ci0rICAgIGJvb2wg
dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5Kikgb3ZlcnJpZGU7Ci0rICAgIGJv
b2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKSBvdmVycmlkZTsK
LSsgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqKSBvdmVy
cmlkZTsKLSsgICAgYm9vbCB2aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAq
KSBvdmVycmlkZTsKLSsgICAgYm9vbCB2aXNpdENhc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1DYXNl
ICopIG92ZXJyaWRlOwotICAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZp
c2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKLS0gICAgYm9v
bCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSopOwotLSAgICBi
b29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSk7Ci0tICAgIGJv
b2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCopOwotLSAgICBib29sIHZpc2l0
QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKik7Ci0rICAgIGJvb2wgdmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKSBvdmVycmlkZTsKLSsgICAgYm9v
bCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIG92ZXJyaWRlOwot
KyAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AqKSBvdmVycmlkZTsK
LSsgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopIG92ZXJy
aWRlOwotIAotICAgICBib29sIGlzU2luZ2xlU3RhdGVtZW50KFRJbnRlcm1Ob2RlICpub2RlKTsK
LSAgICAgYm9vbCBoYW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVy
bUxvb3AgKm5vZGUpOwotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3Jp
dGVUZXhlbEZldGNoT2Zmc2V0LmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVU
ZXhlbEZldGNoT2Zmc2V0LmNwcAotaW5kZXggNDg3YzkwOS4uNmQwYzg2NiAxMDA2NDQKLS0tLSBh
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAotKysr
IGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCi1A
QCAtMTY3LDQgKzE2Nyw0IEBAIHZvaWQgUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQoVEludGVybU5v
ZGUgKnJvb3QsCi0gICAgIFRyYXZlcnNlcjo6QXBwbHkocm9vdCwgc3ltYm9sVGFibGUsIHNoYWRl
clZlcnNpb24pOwotIH0KLSAKLS19ICAvLyBuYW1lc3BhY2Ugc2gKLVwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQotK30gIC8vIG5hbWVzcGFjZSBzaAotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmggYi9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCi1pbmRleCA0MjE4ZjBiLi5jNmRiNjY0
IDEwMDY0NAotLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hP
ZmZzZXQuaAotKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hP
ZmZzZXQuaAotQEAgLTI3LDQgKzI3LDQgQEAgdm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChU
SW50ZXJtTm9kZSAqcm9vdCwKLSAKLSB9ICAvLyBuYW1lc3BhY2Ugc2gKLSAKLS0jZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURV9URVhFTEZFVENIT0ZGU0VUX0hfCi1cIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKLSsjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVX
UklURV9URVhFTEZFVENIT0ZGU0VUX0hfCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgYi9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAotaW5kZXggZWY3MDhjYi4u
ZDIwNTgwNSAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JJbnQuY3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcAotQEAgLTEwOSw0ICsxMDksNCBAQCB2b2lkIFJl
d3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpCi0gICAgIFRyYXZl
cnNlcjo6QXBwbHkocm9vdCk7Ci0gfQorICAgICBmdW5jdGlvbi0+c2V0SGFzUHJvdG90eXBlRGVj
bGFyYXRpb24oKTsKICAKLS19ICAvLyBuYW1lc3BhY2Ugc2gKLVwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQotK30gIC8vIG5hbWVzcGFjZSBzaAotZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCBiL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaAotaW5kZXggNTBmMGM0NC4u
ODAyZWQ1NyAxMDA2NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JJbnQuaAotKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCi1AQCAtMTcsNCArMTcsNCBAQCB2b2lkIFJld3JpdGVV
bmFyeU1pbnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpOworKyAgICAvLyBXZWJLaXQg
bm90ZTogV2UgY3VycmVudGx5IHBhc3MgdHJ1ZSBpbnN0ZWFkIG9mIGZhbHNlIGZvciB0aGUgbGFz
dCBwYXJhbWV0ZXIKKysgICAgLy8gaGVyZSBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIGhhdmUgYW4g
aXNzdWUgd2l0aCBuYW1lbGVzcyBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9uCisrICAgIC8vIGRlY2xh
cmF0aW9ucy4KKyAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpwcm90b3R5cGUgPQorLSAg
ICAgICAgY3JlYXRlUHJvdG90eXBlTm9kZUZyb21GdW5jdGlvbigqZnVuY3Rpb24sIGxvY2F0aW9u
LCBmYWxzZSk7CisrICAgICAgICBjcmVhdGVQcm90b3R5cGVOb2RlRnJvbUZ1bmN0aW9uKCpmdW5j
dGlvbiwgbG9jYXRpb24sIHRydWUpOwogIAotIH0gIC8vIG5hbWVzcGFjZSBzaAorICAgICBzeW1i
b2xUYWJsZS5wb3AoKTsKICAKLS0jZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklU
RVVOQVJZTUlOVVNPUEVSQVRPUklOVF9IXwotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0r
I2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJ
TlRfSF8KIGRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExT
TC5oIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaAotaW5kZXggMjEz
ZDg2MC4uZDJhZGQxNCAxMDA2NDQKK2luZGV4IGQ3MDA1YTYwMy4uZTg0MzZlOThlIDEwMDY0NAog
LS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaAogKysrIGIvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaAotQEAgLTEzLDcgKzEzLDkgQEAg
Y2xhc3MgVHJhbnNsYXRvckhMU0wgOiBwdWJsaWMgVENvbXBpbGVyCitAQCAtMTYsNyArMTYsNyBA
QCBjbGFzcyBUcmFuc2xhdG9ySExTTCA6IHB1YmxpYyBUQ29tcGlsZXIKICB7CiAgICBwdWJsaWM6
CiAgICAgIFRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMs
IFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7Ci0rI2lmZGVmIEFOR0xFX0VOQUJMRV9ITFNMCi0gICAg
IFRyYW5zbGF0b3JITFNMICpnZXRBc1RyYW5zbGF0b3JITFNMKCkgb3ZlcnJpZGUgeyByZXR1cm4g
dGhpczsgfQotKyNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAorLSAgICBUcmFuc2xhdG9ySExT
TCAqZ2V0QXNUcmFuc2xhdG9ySExTTCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKysgICAg
VHJhbnNsYXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSB7IHJldHVybiB0aGlzOyB9CiAg
Ci0gICAgIGJvb2wgaGFzSW50ZXJmYWNlQmxvY2soY29uc3Qgc3RkOjpzdHJpbmcgJmludGVyZmFj
ZUJsb2NrTmFtZSkgY29uc3Q7Ci0gICAgIHVuc2lnbmVkIGludCBnZXRJbnRlcmZhY2VCbG9ja1Jl
Z2lzdGVyKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9ja05hbWUpIGNvbnN0OworICAg
ICBib29sIGhhc1VuaWZvcm1CbG9jayhjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tO
YW1lKSBjb25zdDsKKyAgICAgdW5zaWduZWQgaW50IGdldFVuaWZvcm1CbG9ja1JlZ2lzdGVyKGNv
bnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9ja05hbWUpIGNvbnN0OwogZGlmZiAtLWdpdCBh
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcCBiL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcAotaW5kZXggZDliOGFkYS4uM2U1MGZiYyAxMDA2NDQK
K2luZGV4IGNlNGFhY2Y0MC4uMTRjZDUzNjBjIDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZ190YWIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX3RhYi5jcHAKIEBAIC0xLDUgKzEsNyBAQApAQCAtMzc1LDcgKzIyNSw3IEBAIGluZGV4
IGQ5YjhhZGEuLjNlNTBmYmMgMTAwNjQ0CiAgCiAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5
LTE5OTAsIDIwMDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIGRpZmYgLS1n
aXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAotaW5kZXggZDBlNjkxZC4uNzRhNTZkYSAxMDA2NDQK
K2luZGV4IDFmNTMwODU1MS4uY2I0M2E0NmRmIDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZ190YWIuaAogKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xz
bGFuZ190YWIuaAogQEAgLTEsNSArMSw3IEBACkBAIC0zODYsMjE2ICsyMzYsNzgzMyBAQCBpbmRl
eCBkMGU2OTFkLi43NGE1NmRhIDEwMDY0NAogIC8qIEJpc29uIGludGVyZmFjZSBmb3IgWWFjYy1s
aWtlIHBhcnNlcnMgaW4gQwogIAogICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAy
MDAwLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1kaWZmIC0tZ2l0IGEvc3Jj
L2xpYkFOR0xFL0NhcHMuY3BwIGIvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCi1pbmRleCA0N2UxY2Yw
Li4wZjRkNjlkIDEwMDY0NAotLS0tIGEvc3JjL2xpYkFOR0xFL0NhcHMuY3BwCi0rKysgYi9zcmMv
bGliQU5HTEUvQ2Fwcy5jcHAKLUBAIC03Nyw3ICs3NywxMCBAQCB2b2lkIFRleHR1cmVDYXBzTWFw
OjpjbGVhcigpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL01lbW9yeVByb2dyYW1DYWNoZS5j
cHAgYi9zcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hlLmNwcAoraW5kZXggOWVlYzEyZTNl
Li4yYTljNjgzNmEgMTAwNjQ0CistLS0gYS9zcmMvbGliQU5HTEUvTWVtb3J5UHJvZ3JhbUNhY2hl
LmNwcAorKysrIGIvc3JjL2xpYkFOR0xFL01lbW9yeVByb2dyYW1DYWNoZS5jcHAKK0BAIC0yMzQs
NyArMjM0LDEwIEBAIExpbmtSZXN1bHQgTWVtb3J5UHJvZ3JhbUNhY2hlOjpEZXNlcmlhbGl6ZShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAogIAotIGNvbnN0IFRleHR1cmVDYXBzICZUZXh0dXJlQ2Fw
c01hcDo6Z2V0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3QKLSB7CisgICAgIHN0YXRpY19h
c3NlcnQoTUFYX1ZFUlRFWF9BVFRSSUJTIDw9IHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgsCisg
ICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IHZlcnRleCBhdHRyaWJzIGZvciBtYXNrIik7CiAr
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgIHN0YXRpYyBUZXh0dXJlQ2Fw
cyBkZWZhdWx0VW5zdXBwb3J0ZWRUZXh0dXJlOworKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2NvbnZlcnNpb24iCisgICAgIHN0YXRlLT5tQWN0aXZlQXR0cmliTG9jYXRpb25z
TWFzayA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGxvbmc+KCk7CiArI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgICBJbnRlcm5hbEZvcm1hdFRvQ2Fwc01hcDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IG1DYXBzTWFwLmZpbmQoaW50ZXJuYWxGb3JtYXQpOwotICAgICByZXR1cm4gKGl0
ZXIgIT0gbUNhcHNNYXAuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogZGVmYXVsdFVuc3VwcG9ydGVk
VGV4dHVyZTsKLSB9Ci1AQCAtNTk0LDcgKzU5NywxMCBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFw
ICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKLSAgICAgICAgIHJldHVybiBtYXA7Ci0gICAgIH07CiAg
CisgICAgIHVuc2lnbmVkIGludCBhdHRyaWJDb3VudCA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVk
IGludD4oKTsKKyAgICAgQVNTRVJUKHN0YXRlLT5tQXR0cmlidXRlcy5lbXB0eSgpKTsKK0BAIC00
MDgsNyArNDExLDEwIEBAIExpbmtSZXN1bHQgTWVtb3J5UHJvZ3JhbUNhY2hlOjpEZXNlcmlhbGl6
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICBzdGF0ZS0+bUF0b21pY0NvdW50ZXJVbmlm
b3JtUmFuZ2UgICA9IFJhbmdlVUkoYXRvbWljQ291bnRlclJhbmdlTG93LCBhdG9taWNDb3VudGVy
UmFuZ2VIaWdoKTsKKyAKKyAgICAgc3RhdGljX2Fzc2VydChTSEFERVJfVFlQRV9NQVggPD0gc2l6
ZW9mKHVuc2lnbmVkIGxvbmcpICogOCwgIlRvbyBtYW55IHNoYWRlciB0eXBlcyIpOwogKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgotICAgICBzdGF0aWMgY29uc3QgRXh0ZW5zaW9u
SW5mb01hcCBleHRlbnNpb25JbmZvID0gYnVpbGRFeHRlbnNpb25JbmZvTWFwKCk7CisrI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XY29udmVyc2lvbiIKKyAgICAgc3RhdGUtPm1M
aW5rZWRTaGFkZXJTdGFnZXMgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBsb25nPigpOwogKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgcmV0dXJuIGV4dGVuc2lvbkluZm87Ci0g
fQogIAotZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwIGIvc3JjL2xpYkFOR0xF
L0RldmljZS5jcHAKLWluZGV4IGViMzBiMjAuLmE5NGQ1MDAgMTAwNjQ0Ci0tLS0gYS9zcmMvbGli
QU5HTEUvRGV2aWNlLmNwcAotKysrIGIvc3JjL2xpYkFOR0xFL0RldmljZS5jcHAKLUBAIC0zOCw3
ICszOCwxMCBAQCBzdGF0aWMgc3RkOjpzdHJpbmcgR2VuZXJhdGVFeHRlbnNpb25zU3RyaW5nKGNv
bnN0IFQgJmV4dGVuc2lvbnMpCi0gdHlwZWRlZiBzdGQ6OnNldDxlZ2w6OkRldmljZSAqPiBEZXZp
Y2VTZXQ7Ci0gc3RhdGljIERldmljZVNldCAqR2V0RGV2aWNlU2V0KCkKKyAgICAgcmV0dXJuIHBy
b2dyYW0tPmdldEltcGxlbWVudGF0aW9uKCktPmxvYWQoY29udGV4dCwgaW5mb0xvZywgJnN0cmVh
bSk7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9QbGF0Zm9ybS5jcHAgYi9zcmMvbGli
QU5HTEUvUGxhdGZvcm0uY3BwCitpbmRleCA3MDIwOTE2MjQuLmM1MTI4OTQyMyAxMDA2NDQKKy0t
LSBhL3NyYy9saWJBTkdMRS9QbGF0Zm9ybS5jcHAKKysrKyBiL3NyYy9saWJBTkdMRS9QbGF0Zm9y
bS5jcHAKK0BAIC0xNSw3ICsxNSwxNCBAQAorIG5hbWVzcGFjZQogIHsKKyAvLyBUT0RPKGptYWRp
bGwpOiBNYWtlIG1ldGhvZHMgb3duZWQgYnkgZWdsOjpEaXNwbGF5LgorLWFuZ2xlOjpQbGF0Zm9y
bU1ldGhvZHMgZ19wbGF0Zm9ybU1ldGhvZHM7CisrI2lmIGRlZmluZWQoX19jbGFuZ19fKQogKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgotICAgICBzdGF0aWMgRGV2aWNlU2V0IGRl
dmljZXM7CisrI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZ2xvYmFsLWNvbnN0
cnVjdG9ycyIKKysjZW5kaWYKKysgICAgYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyBnX3BsYXRmb3Jt
TWV0aG9kczsKKysjaWYgZGVmaW5lZChfX2NsYW5nX18pCiArI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAotICAgICByZXR1cm4gJmRldmljZXM7CisrI2VuZGlmCisgfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQorIAorIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHM6OlBsYXRmb3JtTWV0aG9kcygp
CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRl
cl90ZXN0LmNwcCBiL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJf
dGVzdC5jcHAKK2luZGV4IGMwMjQ5ZGJiOS4uYzgyYWNmZmQ3IDEwMDY0NAorLS0tIGEvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcAorKysrIGIvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcAorQEAgLTQy
OSw3ICs0MjksNyBAQCBURVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyRnJhZ21lbnRTaGFkZXJUZXN0
LCBJbnZhbGlkRnVuY3Rpb25QYXJhbWV0ZXJzSW52YXJpYW50KQorICAgICAgICAgIn1cbiIKKyAg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgIntcbiIKKy0gICAgICAgICIJZ2xfRnJh
Z0NvbG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisrICAgICAgICAiICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAgICAifVxuIjsKKyAKKyAgICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKK0BAIC00NDksNyArNDQ5LDcgQEAgVEVTVF9GKFF1YWxpZmlj
YXRpb25PcmRlckZyYWdtZW50U2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1ldGVyc0F0
dHJpYnV0ZSkKKyAgICAgICAgICJ9XG4iCisgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAg
ICAgICJ7XG4iCistICAgICAgICAiCWdsX0ZyYWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xu
IgorKyAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgorICAg
ICAgICAgIn1cbiI7CisgCisgICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCitAQCAtNDY5
LDcgKzQ2OSw3IEBAIFRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJGcmFnbWVudFNoYWRlclRlc3Qs
IEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNWYXJ5aW5nKQorICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgorICAgICAgICAgIntcbiIKKy0gICAgICAgICIJZ2xfRnJhZ0Nv
bG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisrICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChmb28wKHZhbHVlKSk7XG4iCisgICAgICAgICAifVxuIjsKKyAKKyAgICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKK0BAIC00OTEsNyArNDkxLDcgQEAgVEVTVF9GKFF1YWxpZmljYXRp
b25PcmRlckZyYWdtZW50U2hhZGVyVGVzdCwgSW52YWxpZEZ1bmN0aW9uUGFyYW1ldGVyc0xheW91
dCkKKyAgICAgICAgICJvdXQgdmVjNCBjb2xvck9VVDtcbiIKKyAgICAgICAgICJ2b2lkIG1haW4o
KVxuIgorICAgICAgICAgIntcbiIKKy0gICAgICAgICIJY29sb3JPVVQgPSB2ZWM0KGZvbzAodmFs
dWUpKTtcbiIKKysgICAgICAgICIgICBjb2xvck9VVCA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgor
ICAgICAgICAgIn1cbiI7CisgCisgICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCitAQCAt
NTEzLDcgKzUxMyw3IEBAIFRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJGcmFnbWVudFNoYWRlclRl
c3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNDZW50cm9pZEluCisgICAgICAgICAib3V0IHZl
YzQgY29sb3JPVVQ7XG4iCisgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICJ7XG4i
CistICAgICAgICAiCWNvbG9yT1VUID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCisrICAgICAgICAi
ICAgY29sb3JPVVQgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKKyAgICAgICAgICJ9XG4iOworIAor
ICAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQorQEAgLTUzNSw3ICs1MzUsNyBAQCBURVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyRnJhZ21lbnRTaGFkZXJUZXN0LCBJbnZhbGlkRnVuY3Rpb25Q
YXJhbWV0ZXJzRmxhdEluKQorICAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VUO1xuIgorICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCisgICAgICAgICAie1xuIgorLSAgICAgICAgIgljb2xvck9VVCA9
IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgorKyAgICAgICAgIiAgIGNvbG9yT1VUID0gdmVjNChmb28w
KHZhbHVlKSk7XG4iCisgICAgICAgICAifVxuIjsKKyAKKyAgICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKK2RpZmYgLS1naXQgYS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2VzMmZTaGFkZXJN
YXRyaXhUZXN0cy5jcHAgYi9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2VzMmZTaGFkZXJNYXRyaXhU
ZXN0cy5jcHAKK2luZGV4IDlmZWI0ZGNmYS4uNTRkODQ3NGZkIDEwMDY0NAorLS0tIGEvc3JjL3Rl
c3RzL2RlcXBfc3VwcG9ydC9lczJmU2hhZGVyTWF0cml4VGVzdHMuY3BwCisrKysgYi9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0L2VzMmZTaGFkZXJNYXRyaXhUZXN0cy5jcHAKK0BAIC02OSw3NyArNjks
NzcgQEAgdXNpbmcgdGN1OjpNYXQ0OworIC8vIFVuaWZvcm0gLyBjb25zdGFudCB2YWx1ZXMgZm9y
IHRlc3RzLgorIC8vIFxub3RlIElucHV0MSBzaG91bGQgbm90IGNvbnRhaW4gMCBjb21wb25lbnRz
IGFzIGl0IGlzIHVzZWQgYXMgZGl2aXNvciBpbiBkaXYgY2FzZXMuCisgLy8gXHRvZG8gWzIwMTIt
MDItMTQgcHlyeV0gTWFrZSB0aGVzZSBkeW5hbWljLgorLXN0YXRpYyBjb25zdCBmbG9hdAlzX2Nv
bnN0SW5GbG9hdFsyXQk9IHsgMC41ZiwgLTAuMmYgfTsKKy1zdGF0aWMgY29uc3QgVmVjMglzX2Nv
bnN0SW5WZWMyWzJdCT0geyBWZWMyKDEuMmYsIDAuNWYpLCBWZWMyKDAuNWYsIDEuMGYpIH07Cist
c3RhdGljIGNvbnN0IFZlYzMJc19jb25zdEluVmVjM1syXQk9IHsgVmVjMygxLjFmLCAwLjFmLCAw
LjVmKSwgVmVjMygtMC4yZiwgMC41ZiwgMC44ZikgfTsKKy1zdGF0aWMgY29uc3QgVmVjNAlzX2Nv
bnN0SW5WZWM0WzJdCT0geyBWZWM0KDEuNGYsIDAuMmYsIC0wLjVmLCAwLjdmKSwgVmVjNCgwLjJm
LCAtMS4wZiwgMC41ZiwgMC44ZikgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgIHNfY29uc3RJbkZs
b2F0WzJdICAgPSB7IDAuNWYsIC0wLjJmIH07Cisrc3RhdGljIGNvbnN0IFZlYzIgICBzX2NvbnN0
SW5WZWMyWzJdICAgID0geyBWZWMyKDEuMmYsIDAuNWYpLCBWZWMyKDAuNWYsIDEuMGYpIH07Cisr
c3RhdGljIGNvbnN0IFZlYzMgICBzX2NvbnN0SW5WZWMzWzJdICAgID0geyBWZWMzKDEuMWYsIDAu
MWYsIDAuNWYpLCBWZWMzKC0wLjJmLCAwLjVmLCAwLjhmKSB9OworK3N0YXRpYyBjb25zdCBWZWM0
ICAgc19jb25zdEluVmVjNFsyXSAgICA9IHsgVmVjNCgxLjRmLCAwLjJmLCAtMC41ZiwgMC43Ziks
IFZlYzQoMC4yZiwgLTEuMGYsIDAuNWYsIDAuOGYpIH07CisgCisgc3RhdGljIGNvbnN0IGZsb2F0
IHNfY29uc3RJbk1hdDIwW10gPSB7IDAuNmYsIC0xLjBmLCAwLjdmLCAwLjRmIH07Cisgc3RhdGlj
IGNvbnN0IGZsb2F0IHNfY29uc3RJbk1hdDIxW10gPSB7IC0wLjVmLCAtMC40ZiwgMC43ZiwgLTAu
OGYgfTsKKyAKKyBzdGF0aWMgY29uc3QgZmxvYXQgc19jb25zdEluTWF0MzFbXSA9CisgeworLQkx
LjJmLCAgMC4xZiwgLTAuMWYsCistCTAuMWYsICAwLjlmLCAgMC4yZiwKKy0JMC4yZiwgLTAuMWYs
ICAwLjdmCisrICAgIDEuMmYsICAwLjFmLCAtMC4xZiwKKysgICAgMC4xZiwgIDAuOWYsICAwLjJm
LAorKyAgICAwLjJmLCAtMC4xZiwgIDAuN2YKKyB9OworIHN0YXRpYyBjb25zdCBmbG9hdCBzX2Nv
bnN0SW5NYXQ0MVtdID0KKyB7CistCSAxLjJmLCAtMC4yZiwgIDAuNGYsICAwLjFmLAorLQkgMC4x
ZiwgIDAuOGYsIC0wLjFmLCAtMC4yZiwKKy0JLTAuMmYsICAwLjFmLCAtMS4xZiwgIDAuM2YsCist
CSAwLjFmLCAgMC4yZiwgIDAuM2YsICAwLjlmCisrICAgICAxLjJmLCAtMC4yZiwgIDAuNGYsICAw
LjFmLAorKyAgICAgMC4xZiwgIDAuOGYsIC0wLjFmLCAtMC4yZiwKKysgICAgLTAuMmYsICAwLjFm
LCAtMS4xZiwgIDAuM2YsCisrICAgICAwLjFmLCAgMC4yZiwgIDAuM2YsICAwLjlmCisgfTsKKyAK
Ky1zdGF0aWMgY29uc3QgTWF0MglzX2NvbnN0SW5NYXQyWzJdCT0geyB0Y3U6Ok1hdDIoc19jb25z
dEluTWF0MjApLCB0Y3U6Ok1hdDIoc19jb25zdEluTWF0MjEpIH07Cistc3RhdGljIGNvbnN0IE1h
dDMJc19jb25zdEluTWF0M1syXQk9IHsgdGN1Ojp0cmFuc2xhdGlvbk1hdHJpeCh0Y3U6OlZlYzIo
MC4yZiwgLTAuM2YpKSwgdGN1OjpNYXQzKHNfY29uc3RJbk1hdDMxKSB9OworLXN0YXRpYyBjb25z
dCBNYXQ0CXNfY29uc3RJbk1hdDRbMl0JPSB7IHRjdTo6dHJhbnNsYXRpb25NYXRyaXgodGN1OjpW
ZWMzKDAuMmYsIC0wLjNmLCAwLjE1ZikpLCB0Y3U6Ok1hdDQoc19jb25zdEluTWF0NDEpIH07Cisr
c3RhdGljIGNvbnN0IE1hdDIgICBzX2NvbnN0SW5NYXQyWzJdICAgID0geyB0Y3U6Ok1hdDIoc19j
b25zdEluTWF0MjApLCB0Y3U6Ok1hdDIoc19jb25zdEluTWF0MjEpIH07Cisrc3RhdGljIGNvbnN0
IE1hdDMgICBzX2NvbnN0SW5NYXQzWzJdICAgID0geyB0Y3U6OnRyYW5zbGF0aW9uTWF0cml4KHRj
dTo6VmVjMigwLjJmLCAtMC4zZikpLCB0Y3U6Ok1hdDMoc19jb25zdEluTWF0MzEpIH07Cisrc3Rh
dGljIGNvbnN0IE1hdDQgICBzX2NvbnN0SW5NYXQ0WzJdICAgID0geyB0Y3U6OnRyYW5zbGF0aW9u
TWF0cml4KHRjdTo6VmVjMygwLjJmLCAtMC4zZiwgMC4xNWYpKSwgdGN1OjpNYXQ0KHNfY29uc3RJ
bk1hdDQxKSB9OworIAorIG5hbWVzcGFjZSBNYXRyaXhDYXNlVXRpbHMKKyB7CisgCisgZW51bSBJ
bnB1dFR5cGUKKyB7CistCUlOUFVUVFlQRV9DT05TVCA9IDAsCistCUlOUFVUVFlQRV9VTklGT1JN
LAorLQlJTlBVVFRZUEVfRFlOQU1JQywKKysgICAgSU5QVVRUWVBFX0NPTlNUID0gMCwKKysgICAg
SU5QVVRUWVBFX1VOSUZPUk0sCisrICAgIElOUFVUVFlQRV9EWU5BTUlDLAorIAorLQlJTlBVVFRZ
UEVfTEFTVAorKyAgICBJTlBVVFRZUEVfTEFTVAorIH07CisgCisgc3RydWN0IFNoYWRlcklucHV0
CisgeworLQlTaGFkZXJJbnB1dCAoSW5wdXRUeXBlIGlucHV0VHlwZV8sIERhdGFUeXBlIGRhdGFU
eXBlXywgUHJlY2lzaW9uIHByZWNpc2lvbl8pCistCQk6IGlucHV0VHlwZQkoaW5wdXRUeXBlXykK
Ky0JCSwgZGF0YVR5cGUJKGRhdGFUeXBlXykKKy0JCSwgcHJlY2lzaW9uCShwcmVjaXNpb25fKQor
LQl7CistCX0KKy0KKy0JSW5wdXRUeXBlCQlpbnB1dFR5cGU7CistCURhdGFUeXBlCQlkYXRhVHlw
ZTsKKy0JUHJlY2lzaW9uCQlwcmVjaXNpb247CisrICAgIFNoYWRlcklucHV0IChJbnB1dFR5cGUg
aW5wdXRUeXBlXywgRGF0YVR5cGUgZGF0YVR5cGVfLCBQcmVjaXNpb24gcHJlY2lzaW9uXykKKysg
ICAgICAgIDogaW5wdXRUeXBlIChpbnB1dFR5cGVfKQorKyAgICAgICAgLCBkYXRhVHlwZSAgKGRh
dGFUeXBlXykKKysgICAgICAgICwgcHJlY2lzaW9uIChwcmVjaXNpb25fKQorKyAgICB7CisrICAg
IH0KKysKKysgICAgSW5wdXRUeXBlICAgICAgIGlucHV0VHlwZTsKKysgICAgRGF0YVR5cGUgICAg
ICAgIGRhdGFUeXBlOworKyAgICBQcmVjaXNpb24gICAgICAgcHJlY2lzaW9uOworIH07CisgCisg
ZW51bSBNYXRyaXhPcAorIHsKKy0JT1BfQUREID0gMCwKKy0JT1BfU1VCLAorLQlPUF9NVUwsCist
CU9QX0RJViwKKy0JT1BfQ09NUF9NVUwsCistCU9QX1VOQVJZX1BMVVMsCistCU9QX05FR0FUSU9O
LAorLQlPUF9QUkVfSU5DUkVNRU5ULAorLQlPUF9QUkVfREVDUkVNRU5ULAorLQlPUF9QT1NUX0lO
Q1JFTUVOVCwKKy0JT1BfUE9TVF9ERUNSRU1FTlQsCistCU9QX0FERF9JTlRPLAorLQlPUF9TVUJU
UkFDVF9GUk9NLAorLQlPUF9NVUxUSVBMWV9JTlRPLAorLQlPUF9ESVZJREVfSU5UTywKKy0KKy0J
T1BfTEFTVAorKyAgICBPUF9BREQgPSAwLAorKyAgICBPUF9TVUIsCisrICAgIE9QX01VTCwKKysg
ICAgT1BfRElWLAorKyAgICBPUF9DT01QX01VTCwKKysgICAgT1BfVU5BUllfUExVUywKKysgICAg
T1BfTkVHQVRJT04sCisrICAgIE9QX1BSRV9JTkNSRU1FTlQsCisrICAgIE9QX1BSRV9ERUNSRU1F
TlQsCisrICAgIE9QX1BPU1RfSU5DUkVNRU5ULAorKyAgICBPUF9QT1NUX0RFQ1JFTUVOVCwKKysg
ICAgT1BfQUREX0lOVE8sCisrICAgIE9QX1NVQlRSQUNUX0ZST00sCisrICAgIE9QX01VTFRJUExZ
X0lOVE8sCisrICAgIE9QX0RJVklERV9JTlRPLAorKworKyAgICBPUF9MQVNUCisgfTsKKyAKKyAv
LyBUeXBlIHRyYWl0cy4KK0BAIC0xNDcsMTYgKzE0NywxNiBAQCBlbnVtIE1hdHJpeE9wCisgdGVt
cGxhdGUgPGludCBEYXRhVD4KKyBzdHJ1Y3QgVHlwZVRyYWl0czsKKyAKKy0jZGVmaW5lIERFQ0xB
UkVfVFlQRV9UUkFJVChEQVRBVFlQRSwgVFlQRSkJXAorLXRlbXBsYXRlPD4JCQkJCQkJCQlcCist
c3RydWN0IFR5cGVUcmFpdHM8REFUQVRZUEU+IHsJCQkJXAorLQl0eXBlZGVmIFRZUEUgVHlwZTsJ
CQkJCQlcCisrI2RlZmluZSBERUNMQVJFX1RZUEVfVFJBSVQoREFUQVRZUEUsIFRZUEUpICBcCisr
dGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrc3RydWN0IFR5
cGVUcmFpdHM8REFUQVRZUEU+IHsgICAgICAgICAgICAgICBcCisrICAgIHR5cGVkZWYgVFlQRSBU
eXBlOyAgICAgICAgICAgICAgICAgICAgICBcCiAgfQogIAotZGlmZiAtLWdpdCBhL3NyYy9saWJB
TkdMRS9EaXNwbGF5LmNwcCBiL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAotaW5kZXggOTJkN2Rk
YS4uNTcxMTExNyAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcAotKysrIGIv
c3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCi1AQCAtOTAsMjEgKzkwLDMwIEBAIHR5cGVkZWYgc3Rk
OjptYXA8RUdMTmF0aXZlV2luZG93VHlwZSwgU3VyZmFjZSo+IFdpbmRvd1N1cmZhY2VNYXA7Ci0g
Ly8gYXNzb2NpYXRlZCB3aXRoIGl0LgotIHN0YXRpYyBXaW5kb3dTdXJmYWNlTWFwICpHZXRXaW5k
b3dTdXJmYWNlcygpCistREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVQsCQlmbG9hdCk7Cist
REVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfVkVDMiwJdGN1OjpWZWMyKTsKKy1ERUNMQVJF
X1RZUEVfVFJBSVQoVFlQRV9GTE9BVF9WRUMzLAl0Y3U6OlZlYzMpOworLURFQ0xBUkVfVFlQRV9U
UkFJVChUWVBFX0ZMT0FUX1ZFQzQsCXRjdTo6VmVjNCk7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZ
UEVfRkxPQVQsICAgICAgZmxvYXQpOworK0RFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX1ZF
QzIsIHRjdTo6VmVjMik7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfVkVDMywgdGN1
OjpWZWMzKTsKKytERUNMQVJFX1RZUEVfVFJBSVQoVFlQRV9GTE9BVF9WRUM0LCB0Y3U6OlZlYzQp
OworIERFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDIsIHRjdTo6TWF0Mik7CisgREVD
TEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUMywgdGN1OjpNYXQzKTsKKyBERUNMQVJFX1RZ
UEVfVFJBSVQoVFlQRV9GTE9BVF9NQVQ0LCB0Y3U6Ok1hdDQpOworQEAgLTE2NSwxNjkgKzE2NSwx
NjkgQEAgREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUNCwgdGN1OjpNYXQ0KTsKKyAK
KyBlbnVtIE9wZXJhdGlvblR5cGUKICB7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3Rv
cnMiCi0gICAgIHN0YXRpYyBXaW5kb3dTdXJmYWNlTWFwIHdpbmRvd1N1cmZhY2VzOwotKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgcmV0dXJuICZ3aW5kb3dTdXJmYWNlczsKKy0J
T1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1IgPSAwLAorLQlPUEVSQVRJT05UWVBFX0JJTkFS
WV9GVU5DVElPTiwKKy0JT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1IsCistCU9Q
RVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUiwKKy0JT1BFUkFUSU9OVFlQRV9BU1NJ
R05NRU5ULAorKyAgICBPUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVSQVRPUiA9IDAsCisrICAgIE9Q
RVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OLAorKyAgICBPUEVSQVRJT05UWVBFX1VOQVJZX1BS
RUZJWF9PUEVSQVRPUiwKKysgICAgT1BFUkFUSU9OVFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9S
LAorKyAgICBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQsCisgCistCU9QRVJBVElPTlRZUEVfTEFT
VAorKyAgICBPUEVSQVRJT05UWVBFX0xBU1QKKyB9OworIAorIHN0YXRpYyBjb25zdCBjaGFyKiBn
ZXRPcGVyYXRpb25OYW1lIChNYXRyaXhPcCBvcCkKKyB7CistCXN3aXRjaCAob3ApCistCXsKKy0J
CWNhc2UgT1BfQUREOgkJCXJldHVybiAiKyI7CistCQljYXNlIE9QX1NVQjoJCQlyZXR1cm4gIi0i
OworLQkJY2FzZSBPUF9NVUw6CQkJcmV0dXJuICIqIjsKKy0JCWNhc2UgT1BfRElWOgkJCXJldHVy
biAiLyI7CistCQljYXNlIE9QX0NPTVBfTVVMOgkJcmV0dXJuICJtYXRyaXhDb21wTXVsdCI7Cist
CQljYXNlIE9QX1VOQVJZX1BMVVM6CQlyZXR1cm4gIisiOworLQkJY2FzZSBPUF9ORUdBVElPTjoJ
CXJldHVybiAiLSI7CistCQljYXNlIE9QX1BSRV9JTkNSRU1FTlQ6CXJldHVybiAiKysiOworLQkJ
Y2FzZSBPUF9QUkVfREVDUkVNRU5UOglyZXR1cm4gIi0tIjsKKy0JCWNhc2UgT1BfUE9TVF9JTkNS
RU1FTlQ6CXJldHVybiAiKysiOworLQkJY2FzZSBPUF9QT1NUX0RFQ1JFTUVOVDoJcmV0dXJuICIt
LSI7CistCQljYXNlIE9QX0FERF9JTlRPOgkJcmV0dXJuICIrPSI7CistCQljYXNlIE9QX1NVQlRS
QUNUX0ZST006CXJldHVybiAiLT0iOworLQkJY2FzZSBPUF9NVUxUSVBMWV9JTlRPOglyZXR1cm4g
Iio9IjsKKy0JCWNhc2UgT1BfRElWSURFX0lOVE86CXJldHVybiAiLz0iOworLQkJZGVmYXVsdDoK
Ky0JCQlERV9BU1NFUlQoREVfRkFMU0UpOworLQkJCXJldHVybiAiIjsKKy0JfQorKyAgICBzd2l0
Y2ggKG9wKQorKyAgICB7CisrICAgICAgICBjYXNlIE9QX0FERDogICAgICAgICAgICByZXR1cm4g
IisiOworKyAgICAgICAgY2FzZSBPUF9TVUI6ICAgICAgICAgICAgcmV0dXJuICItIjsKKysgICAg
ICAgIGNhc2UgT1BfTVVMOiAgICAgICAgICAgIHJldHVybiAiKiI7CisrICAgICAgICBjYXNlIE9Q
X0RJVjogICAgICAgICAgICByZXR1cm4gIi8iOworKyAgICAgICAgY2FzZSBPUF9DT01QX01VTDog
ICAgICAgcmV0dXJuICJtYXRyaXhDb21wTXVsdCI7CisrICAgICAgICBjYXNlIE9QX1VOQVJZX1BM
VVM6ICAgICByZXR1cm4gIisiOworKyAgICAgICAgY2FzZSBPUF9ORUdBVElPTjogICAgICAgcmV0
dXJuICItIjsKKysgICAgICAgIGNhc2UgT1BfUFJFX0lOQ1JFTUVOVDogIHJldHVybiAiKysiOwor
KyAgICAgICAgY2FzZSBPUF9QUkVfREVDUkVNRU5UOiAgcmV0dXJuICItLSI7CisrICAgICAgICBj
YXNlIE9QX1BPU1RfSU5DUkVNRU5UOiByZXR1cm4gIisrIjsKKysgICAgICAgIGNhc2UgT1BfUE9T
VF9ERUNSRU1FTlQ6IHJldHVybiAiLS0iOworKyAgICAgICAgY2FzZSBPUF9BRERfSU5UTzogICAg
ICAgcmV0dXJuICIrPSI7CisrICAgICAgICBjYXNlIE9QX1NVQlRSQUNUX0ZST006ICByZXR1cm4g
Ii09IjsKKysgICAgICAgIGNhc2UgT1BfTVVMVElQTFlfSU5UTzogIHJldHVybiAiKj0iOworKyAg
ICAgICAgY2FzZSBPUF9ESVZJREVfSU5UTzogICAgcmV0dXJuICIvPSI7CisrICAgICAgICBkZWZh
dWx0OgorKyAgICAgICAgICAgIERFX0FTU0VSVChERV9GQUxTRSk7CisrICAgICAgICAgICAgcmV0
dXJuICIiOworKyAgICB9CiAgfQogIAotIHR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxh
eVR5cGUsIERpc3BsYXkgKj4gQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXA7Ci0gc3RhdGljIEFOR0xF
UGxhdGZvcm1EaXNwbGF5TWFwICpHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpCisgc3RhdGlj
IE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSAoTWF0cml4T3Agb3ApCiAgewotKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgotICAgICBzdGF0aWMgQU5HTEVQbGF0Zm9ybURp
c3BsYXlNYXAgZGlzcGxheXM7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICBy
ZXR1cm4gJmRpc3BsYXlzOworLQlzd2l0Y2ggKG9wKQorLQl7CistCQljYXNlIE9QX0FERDoJCQly
ZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQljYXNlIE9QX1NVQjoJCQly
ZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQljYXNlIE9QX01VTDoJCQly
ZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQljYXNlIE9QX0RJVjoJCQly
ZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQljYXNlIE9QX0NPTVBfTVVM
OgkJcmV0dXJuIE9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOworLQkJY2FzZSBPUF9VTkFS
WV9QTFVTOgkJcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9SOworLQkJ
Y2FzZSBPUF9ORUdBVElPTjoJCXJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVS
QVRPUjsKKy0JCWNhc2UgT1BfUFJFX0lOQ1JFTUVOVDoJcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5B
UllfUFJFRklYX09QRVJBVE9SOworLQkJY2FzZSBPUF9QUkVfREVDUkVNRU5UOglyZXR1cm4gT1BF
UkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1I7CistCQljYXNlIE9QX1BPU1RfSU5DUkVN
RU5UOglyZXR1cm4gT1BFUkFUSU9OVFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9SOworLQkJY2Fz
ZSBPUF9QT1NUX0RFQ1JFTUVOVDoJcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9P
UEVSQVRPUjsKKy0JCWNhc2UgT1BfQUREX0lOVE86CQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9BU1NJ
R05NRU5UOworLQkJY2FzZSBPUF9TVUJUUkFDVF9GUk9NOglyZXR1cm4gT1BFUkFUSU9OVFlQRV9B
U1NJR05NRU5UOworLQkJY2FzZSBPUF9NVUxUSVBMWV9JTlRPOglyZXR1cm4gT1BFUkFUSU9OVFlQ
RV9BU1NJR05NRU5UOworLQkJY2FzZSBPUF9ESVZJREVfSU5UTzoJcmV0dXJuIE9QRVJBVElPTlRZ
UEVfQVNTSUdOTUVOVDsKKy0JCWRlZmF1bHQ6CistCQkJREVfQVNTRVJUKERFX0ZBTFNFKTsKKy0J
CQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9MQVNUOworLQl9CisrICAgIHN3aXRjaCAob3ApCisrICAg
IHsKKysgICAgICAgIGNhc2UgT1BfQUREOiAgICAgICAgICAgIHJldHVybiBPUEVSQVRJT05UWVBF
X0JJTkFSWV9PUEVSQVRPUjsKKysgICAgICAgIGNhc2UgT1BfU1VCOiAgICAgICAgICAgIHJldHVy
biBPUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVSQVRPUjsKKysgICAgICAgIGNhc2UgT1BfTVVMOiAg
ICAgICAgICAgIHJldHVybiBPUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVSQVRPUjsKKysgICAgICAg
IGNhc2UgT1BfRElWOiAgICAgICAgICAgIHJldHVybiBPUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVS
QVRPUjsKKysgICAgICAgIGNhc2UgT1BfQ09NUF9NVUw6ICAgICAgIHJldHVybiBPUEVSQVRJT05U
WVBFX0JJTkFSWV9GVU5DVElPTjsKKysgICAgICAgIGNhc2UgT1BfVU5BUllfUExVUzogICAgIHJl
dHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKysgICAgICAgIGNhc2Ug
T1BfTkVHQVRJT046ICAgICAgIHJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVS
QVRPUjsKKysgICAgICAgIGNhc2UgT1BfUFJFX0lOQ1JFTUVOVDogIHJldHVybiBPUEVSQVRJT05U
WVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKysgICAgICAgIGNhc2UgT1BfUFJFX0RFQ1JFTUVO
VDogIHJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKysgICAgICAg
IGNhc2UgT1BfUE9TVF9JTkNSRU1FTlQ6IHJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BPU1RG
SVhfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9QX1BPU1RfREVDUkVNRU5UOiByZXR1cm4gT1BF
UkFUSU9OVFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9SOworKyAgICAgICAgY2FzZSBPUF9BRERf
SU5UTzogICAgICAgcmV0dXJuIE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVDsKKysgICAgICAgIGNh
c2UgT1BfU1VCVFJBQ1RfRlJPTTogIHJldHVybiBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7Cisr
ICAgICAgICBjYXNlIE9QX01VTFRJUExZX0lOVE86ICByZXR1cm4gT1BFUkFUSU9OVFlQRV9BU1NJ
R05NRU5UOworKyAgICAgICAgY2FzZSBPUF9ESVZJREVfSU5UTzogICAgcmV0dXJuIE9QRVJBVElP
TlRZUEVfQVNTSUdOTUVOVDsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgREVfQVNT
RVJUKERFX0ZBTFNFKTsKKysgICAgICAgICAgICByZXR1cm4gT1BFUkFUSU9OVFlQRV9MQVNUOwor
KyAgICB9CiAgfQogIAotIHR5cGVkZWYgc3RkOjptYXA8RGV2aWNlICosIERpc3BsYXkgKj4gRGV2
aWNlUGxhdGZvcm1EaXNwbGF5TWFwOwotIHN0YXRpYyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAg
KkdldERldmljZVBsYXRmb3JtRGlzcGxheU1hcCgpCisgZW51bSBUZXN0TWF0cml4VHlwZQogIHsK
LSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKLSAgICAgc3RhdGljIERldmljZVBs
YXRmb3JtRGlzcGxheU1hcCBkaXNwbGF5czsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
Ci0gICAgIHJldHVybiAmZGlzcGxheXM7CistCVRFU1RNQVRSSVhUWVBFX0RFRkFVTFQgPSAwLAor
LQlURVNUTUFUUklYVFlQRV9ORUdBVEVELAorLQlURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRCwK
Ky0JVEVTVE1BVFJJWFRZUEVfREVDUkVNRU5URUQsCisrICAgIFRFU1RNQVRSSVhUWVBFX0RFRkFV
TFQgPSAwLAorKyAgICBURVNUTUFUUklYVFlQRV9ORUdBVEVELAorKyAgICBURVNUTUFUUklYVFlQ
RV9JTkNSRU1FTlRFRCwKKysgICAgVEVTVE1BVFJJWFRZUEVfREVDUkVNRU5URUQsCisgCistCVRF
U1RNQVRSSVhUWVBFX0xBU1QKKysgICAgVEVTVE1BVFJJWFRZUEVfTEFTVAorIH07CisgCisgc3Rh
dGljIFRlc3RNYXRyaXhUeXBlIGdldE9wZXJhdGlvblRlc3RNYXRyaXhUeXBlIChNYXRyaXhPcCBv
cCkKKyB7CistCXN3aXRjaChvcCkKKy0JeworLQkJY2FzZSBPUF9BREQ6CQkJcmV0dXJuIFRFU1RN
QVRSSVhUWVBFX0RFRkFVTFQ7CistCQljYXNlIE9QX1NVQjoJCQlyZXR1cm4gVEVTVE1BVFJJWFRZ
UEVfREVGQVVMVDsKKy0JCWNhc2UgT1BfTVVMOgkJCXJldHVybiBURVNUTUFUUklYVFlQRV9ERUZB
VUxUOworLQkJY2FzZSBPUF9ESVY6CQkJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7Cist
CQljYXNlIE9QX0NPTVBfTVVMOgkJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CistCQlj
YXNlIE9QX1VOQVJZX1BMVVM6CQlyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNh
c2UgT1BfTkVHQVRJT046CQlyZXR1cm4gVEVTVE1BVFJJWFRZUEVfTkVHQVRFRDsKKy0JCWNhc2Ug
T1BfUFJFX0lOQ1JFTUVOVDoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ7CistCQljYXNl
IE9QX1BSRV9ERUNSRU1FTlQ6CXJldHVybiBURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRDsKKy0J
CWNhc2UgT1BfUE9TVF9JTkNSRU1FTlQ6CXJldHVybiBURVNUTUFUUklYVFlQRV9ORUdBVEVEOwor
LQkJY2FzZSBPUF9QT1NUX0RFQ1JFTUVOVDoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7
CistCQljYXNlIE9QX0FERF9JTlRPOgkJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVE
OworLQkJY2FzZSBPUF9TVUJUUkFDVF9GUk9NOglyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVM
VDsKKy0JCWNhc2UgT1BfTVVMVElQTFlfSU5UTzoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFV
TFQ7CistCQljYXNlIE9QX0RJVklERV9JTlRPOglyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVM
VDsKKy0KKy0JCWRlZmF1bHQ6CistCQkJREVfQVNTRVJUKERFX0ZBTFNFKTsKKy0JCQlyZXR1cm4g
VEVTVE1BVFJJWFRZUEVfTEFTVDsKKy0JfQorKyAgICBzd2l0Y2gob3ApCisrICAgIHsKKysgICAg
ICAgIGNhc2UgT1BfQUREOiAgICAgICAgICAgIHJldHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxU
OworKyAgICAgICAgY2FzZSBPUF9TVUI6ICAgICAgICAgICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBF
X0RFRkFVTFQ7CisrICAgICAgICBjYXNlIE9QX01VTDogICAgICAgICAgICByZXR1cm4gVEVTVE1B
VFJJWFRZUEVfREVGQVVMVDsKKysgICAgICAgIGNhc2UgT1BfRElWOiAgICAgICAgICAgIHJldHVy
biBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworKyAgICAgICAgY2FzZSBPUF9DT01QX01VTDogICAg
ICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CisrICAgICAgICBjYXNlIE9QX1VOQVJZ
X1BMVVM6ICAgICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKysgICAgICAgIGNhc2Ug
T1BfTkVHQVRJT046ICAgICAgIHJldHVybiBURVNUTUFUUklYVFlQRV9ORUdBVEVEOworKyAgICAg
ICAgY2FzZSBPUF9QUkVfSU5DUkVNRU5UOiAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ7
CisrICAgICAgICBjYXNlIE9QX1BSRV9ERUNSRU1FTlQ6ICByZXR1cm4gVEVTVE1BVFJJWFRZUEVf
SU5DUkVNRU5URUQ7CisrICAgICAgICBjYXNlIE9QX1BPU1RfSU5DUkVNRU5UOiByZXR1cm4gVEVT
VE1BVFJJWFRZUEVfTkVHQVRFRDsKKysgICAgICAgIGNhc2UgT1BfUE9TVF9ERUNSRU1FTlQ6IHJl
dHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworKyAgICAgICAgY2FzZSBPUF9BRERfSU5UTzog
ICAgICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOworKyAgICAgICAgY2FzZSBP
UF9TVUJUUkFDVF9GUk9NOiAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CisrICAgICAg
ICBjYXNlIE9QX01VTFRJUExZX0lOVE86ICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsK
KysgICAgICAgIGNhc2UgT1BfRElWSURFX0lOVE86ICAgIHJldHVybiBURVNUTUFUUklYVFlQRV9E
RUZBVUxUOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBERV9BU1NFUlQoREVf
RkFMU0UpOworKyAgICAgICAgICAgIHJldHVybiBURVNUTUFUUklYVFlQRV9MQVNUOworKyAgICB9
CiAgfQogIAotQEAgLTkyMSw3ICs5MzAsMTAgQEAgY29uc3QgQ2xpZW50RXh0ZW5zaW9ucyAmRGlz
cGxheTo6Z2V0Q2xpZW50RXh0ZW5zaW9ucygpCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25CaW5h
cnkgKE1hdHJpeE9wIG9wKQorIHsKKy0JcmV0dXJuIGdldE9wZXJhdGlvblR5cGUob3ApID09IE9Q
RVJBVElPTlRZUEVfQklOQVJZX09QRVJBVE9SIHx8CistCSAgICAgICBnZXRPcGVyYXRpb25UeXBl
KG9wKSA9PSBPUEVSQVRJT05UWVBFX0JJTkFSWV9GVU5DVElPTiB8fAorLQkgICAgICAgZ2V0T3Bl
cmF0aW9uVHlwZShvcCkgPT0gT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOworKyAgICByZXR1cm4g
Z2V0T3BlcmF0aW9uVHlwZShvcCkgPT0gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1IgfHwK
KysgICAgICAgICAgIGdldE9wZXJhdGlvblR5cGUob3ApID09IE9QRVJBVElPTlRZUEVfQklOQVJZ
X0ZVTkNUSU9OIHx8CisrICAgICAgICAgICBnZXRPcGVyYXRpb25UeXBlKG9wKSA9PSBPUEVSQVRJ
T05UWVBFX0FTU0lHTk1FTlQ7CisgfQogIAotIGNvbnN0IHN0ZDo6c3RyaW5nICZEaXNwbGF5Ojpn
ZXRDbGllbnRFeHRlbnNpb25TdHJpbmcoKQorIHN0YXRpYyBib29sIGlzT3BlcmF0aW9uTWF0cml4
U2NhbGFyIChNYXRyaXhPcCBvcCkKICB7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3Rv
cnMiCi0gICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBjbGllbnRFeHRlbnNpb25zU3RyaW5n
ID0gR2VuZXJhdGVFeHRlbnNpb25zU3RyaW5nKGdldENsaWVudEV4dGVuc2lvbnMoKSk7Ci0rI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICByZXR1cm4gY2xpZW50RXh0ZW5zaW9uc1N0
cmluZzsKKy0JcmV0dXJuIG9wID09IE9QX0FERCB8fCBvcCA9PSBPUF9TVUIgfHwgb3AgPT0gT1Bf
TVVMIHx8IG9wID09IE9QX0RJVjsKKysgICAgcmV0dXJuIG9wID09IE9QX0FERCB8fCBvcCA9PSBP
UF9TVUIgfHwgb3AgPT0gT1BfTVVMIHx8IG9wID09IE9QX0RJVjsKICB9CiAgCi1kaWZmIC0tZ2l0
IGEvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBiL3NyYy9saWJBTkdMRS9I
YW5kbGVSYW5nZUFsbG9jYXRvci5jcHAKLWluZGV4IGYyMTlmOTUuLjM4MzFhY2EgMTAwNjQ0Ci0t
LS0gYS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwCi0rKysgYi9zcmMvbGli
QU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwCi1AQCAtMjIzLDQgKzIyMyw0IEBAIGJvb2wg
SGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmlzVXNlZChHTHVpbnQgaGFuZGxlKSBjb25zdAotICAgICBy
ZXR1cm4gY3VycmVudC0+c2Vjb25kID49IGhhbmRsZTsKKyBzdGF0aWMgYm9vbCBpc09wZXJhdGlv
bk1hdHJpeFZlY3RvciAoTWF0cml4T3Agb3ApCisgeworLQlyZXR1cm4gb3AgPT0gT1BfTVVMOwor
KyAgICByZXR1cm4gb3AgPT0gT1BfTVVMOwogIH0KICAKLS19ICAvLyBuYW1lc3BhY2UgZ2wKLVwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotK30gIC8vIG5hbWVzcGFjZSBnbAotZGlmZiAtLWdp
dCBhL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5oIGIvc3JjL2xpYkFOR0xFL0hh
bmRsZVJhbmdlQWxsb2NhdG9yLmgKLWluZGV4IDIwZjlhMTEuLjEwMjNhODQgMTAwNjQ0Ci0tLS0g
YS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaAotKysrIGIvc3JjL2xpYkFOR0xF
L0hhbmRsZVJhbmdlQWxsb2NhdG9yLmgKLUBAIC01Niw0ICs1Niw0IEBAIGNsYXNzIEhhbmRsZVJh
bmdlQWxsb2NhdG9yIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCisgc3RhdGljIGJvb2wgaXNP
cGVyYXRpb25NYXRyaXhNYXRyaXggKE1hdHJpeE9wIG9wKQorIHsKKy0JcmV0dXJuIG9wID09IE9Q
X0FERCB8fCBvcCA9PSBPUF9TVUIgfHwgb3AgPT0gT1BfTVVMIHx8IG9wID09IE9QX0RJViB8fCBv
cCA9PSBPUF9DT01QX01VTDsKKysgICAgcmV0dXJuIG9wID09IE9QX0FERCB8fCBvcCA9PSBPUF9T
VUIgfHwgb3AgPT0gT1BfTVVMIHx8IG9wID09IE9QX0RJViB8fCBvcCA9PSBPUF9DT01QX01VTDsK
KyB9CiAgCi0gfSAgLy8gbmFtZXNwYWNlIGdsCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25VbmFy
eSAoTWF0cml4T3Agb3ApCisgeworLQlyZXR1cm4gIG9wID09IE9QX1VOQVJZX1BMVVMJCQl8fAor
LQkJCW9wID09IE9QX05FR0FUSU9OCQkJfHwKKy0JCQlvcCA9PSBPUF9QUkVfSU5DUkVNRU5UCQl8
fAorLQkJCW9wID09IE9QX1BSRV9ERUNSRU1FTlQJCXx8CistCQkJb3AgPT0gT1BfUE9TVF9JTkNS
RU1FTlQJCXx8CistCQkJb3AgPT0gT1BfUE9TVF9ERUNSRU1FTlQ7CisrICAgIHJldHVybiAgb3Ag
PT0gT1BfVU5BUllfUExVUyAgICAgICAgIHx8CisrICAgICAgICAgICAgb3AgPT0gT1BfTkVHQVRJ
T04gICAgICAgICAgIHx8CisrICAgICAgICAgICAgb3AgPT0gT1BfUFJFX0lOQ1JFTUVOVCAgICAg
IHx8CisrICAgICAgICAgICAgb3AgPT0gT1BfUFJFX0RFQ1JFTUVOVCAgICAgIHx8CisrICAgICAg
ICAgICAgb3AgPT0gT1BfUE9TVF9JTkNSRU1FTlQgICAgIHx8CisrICAgICAgICAgICAgb3AgPT0g
T1BfUE9TVF9ERUNSRU1FTlQ7CisgfQogIAotLSNlbmRpZiAgLy8gTElCQU5HTEVfSEFORExFUkFO
R0VBTExPQ0FUT1JfSF8KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotKyNlbmRpZiAgLy8g
TElCQU5HTEVfSEFORExFUkFOR0VBTExPQ0FUT1JfSF8KLWRpZmYgLS1naXQgYS9zcmMvbGliQU5H
TEUvUGF0aC5oIGIvc3JjL2xpYkFOR0xFL1BhdGguaAotaW5kZXggYjEwM2M4NC4uODVmNDljMSAx
MDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9QYXRoLmgKLSsrKyBiL3NyYy9saWJBTkdMRS9QYXRo
LmgKLUBAIC02OCw0ICs2OCw0IEBAIGNsYXNzIFBhdGggZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKKyBzdGF0aWMgYm9vbCBpc09wZXJhdGlvblZhbHVlTW9kaWZ5aW5nIChNYXRyaXhPcCBvcCkK
KyB7CistCXJldHVybiAgb3AgPT0gT1BfUFJFX0lOQ1JFTUVOVAkJfHwKKy0JCQlvcCA9PSBPUF9Q
UkVfREVDUkVNRU5UCQl8fAorLQkJCW9wID09IE9QX1BPU1RfSU5DUkVNRU5UCQl8fAorLQkJCW9w
ID09IE9QX1BPU1RfREVDUkVNRU5UOworKyAgICByZXR1cm4gIG9wID09IE9QX1BSRV9JTkNSRU1F
TlQgICAgICB8fAorKyAgICAgICAgICAgIG9wID09IE9QX1BSRV9ERUNSRU1FTlQgICAgICB8fAor
KyAgICAgICAgICAgIG9wID09IE9QX1BPU1RfSU5DUkVNRU5UICAgICB8fAorKyAgICAgICAgICAg
IG9wID09IE9QX1BPU1RfREVDUkVNRU5UOworIH0KICAKLSB9ICAvLyBuYW1lc3BhY2UgZ2wKKyBz
dGF0aWMgYm9vbCBpc09wZXJhdGlvbkFzc2lnbm1lbnQgKE1hdHJpeE9wIG9wKQorIHsKKy0JcmV0
dXJuICBvcCA9PSBPUF9BRERfSU5UTwkJIHx8CistCQkJb3AgPT0gT1BfU1VCVFJBQ1RfRlJPTQkg
fHwKKy0JCQlvcCA9PSBPUF9NVUxUSVBMWV9JTlRPCSB8fAorLQkJCW9wID09IE9QX0RJVklERV9J
TlRPOworKyAgICByZXR1cm4gIG9wID09IE9QX0FERF9JTlRPICAgICAgICB8fAorKyAgICAgICAg
ICAgIG9wID09IE9QX1NVQlRSQUNUX0ZST00gICB8fAorKyAgICAgICAgICAgIG9wID09IE9QX01V
TFRJUExZX0lOVE8gICB8fAorKyAgICAgICAgICAgIG9wID09IE9QX0RJVklERV9JTlRPOworIH0K
ICAKLS0jZW5kaWYgIC8vIExJQkFOR0xFX1BBVEhfSF8KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQotKyNlbmRpZiAgLy8gTElCQU5HTEVfUEFUSF9IXwotZGlmZiAtLWdpdCBhL3NyYy9saWJB
TkdMRS9mb3JtYXR1dGlscy5jcHAgYi9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwCi1pbmRl
eCBmZjI4NWRkLi41NWE1ZmM4IDEwMDY0NAotLS0tIGEvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcAotKysrIGIvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAotQEAgLTYxNSw3ICs2MTUs
MTAgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5m
b01hcCgpCisgLy8gT3BlcmF0aW9uIG5hdHVyZQogIAotIHN0YXRpYyBjb25zdCBJbnRlcm5hbEZv
cm1hdEluZm9NYXAgJkdldEludGVybmFsRm9ybWF0TWFwKCkKKyBlbnVtIE9wZXJhdGlvbk5hdHVy
ZQogIHsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKLSAgICAgc3RhdGljIGNv
bnN0IEludGVybmFsRm9ybWF0SW5mb01hcCBmb3JtYXRNYXAgPSBCdWlsZEludGVybmFsRm9ybWF0
SW5mb01hcCgpOwotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgcmV0dXJuIGZv
cm1hdE1hcDsKKy0JT1BFUkFUSU9OTkFUVVJFX1BVUkUgPSAwLAorLQlPUEVSQVRJT05OQVRVUkVf
TVVUQVRJTkcsCistCU9QRVJBVElPTk5BVFVSRV9BU1NJR05NRU5ULAorKyAgICBPUEVSQVRJT05O
QVRVUkVfUFVSRSA9IDAsCisrICAgIE9QRVJBVElPTk5BVFVSRV9NVVRBVElORywKKysgICAgT1BF
UkFUSU9OTkFUVVJFX0FTU0lHTk1FTlQsCisgCistCU9QRVJBVElPTk5BVFVSRV9MQVNUCisrICAg
IE9QRVJBVElPTk5BVFVSRV9MQVNUCisgfTsKKyAKKyBzdGF0aWMgT3BlcmF0aW9uTmF0dXJlIGdl
dE9wZXJhdGlvbk5hdHVyZSAoTWF0cml4T3Agb3ApCisgeworLQlpZiAoaXNPcGVyYXRpb25Bc3Np
Z25tZW50KG9wKSkKKy0JCXJldHVybiBPUEVSQVRJT05OQVRVUkVfQVNTSUdOTUVOVDsKKysgICAg
aWYgKGlzT3BlcmF0aW9uQXNzaWdubWVudChvcCkpCisrICAgICAgICByZXR1cm4gT1BFUkFUSU9O
TkFUVVJFX0FTU0lHTk1FTlQ7CisgCistCWlmIChpc09wZXJhdGlvblZhbHVlTW9kaWZ5aW5nKG9w
KSkKKy0JCXJldHVybiBPUEVSQVRJT05OQVRVUkVfTVVUQVRJTkc7CisrICAgIGlmIChpc09wZXJh
dGlvblZhbHVlTW9kaWZ5aW5nKG9wKSkKKysgICAgICAgIHJldHVybiBPUEVSQVRJT05OQVRVUkVf
TVVUQVRJTkc7CisgCistCXJldHVybiBPUEVSQVRJT05OQVRVUkVfUFVSRTsKKysgICAgcmV0dXJu
IE9QRVJBVElPTk5BVFVSRV9QVVJFOwogIH0KICAKLUBAIC04NTksNyArODYyLDEwIEBAIEdMZW51
bSBHZXRTaXplZEludGVybmFsRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVtIHR5
cGUpCisgLy8gSW5wdXQgdmFsdWUgbG9hZGVyLgorQEAgLTMzNSw0NyArMzM1LDQ3IEBAIHN0YXRp
YyBPcGVyYXRpb25OYXR1cmUgZ2V0T3BlcmF0aW9uTmF0dXJlIChNYXRyaXhPcCBvcCkKKyB0ZW1w
bGF0ZSA8aW50IElucHV0VCwgaW50IERhdGFUPgorIHR5cGVuYW1lIFR5cGVUcmFpdHM8RGF0YVQ+
OjpUeXBlIGdldElucHV0VmFsdWUgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBp
bnQgaW5wdXROZHgpOworIAorLXRlbXBsYXRlIDw+IGlubGluZSBmbG9hdAkJZ2V0SW5wdXRWYWx1
ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUPgkJCShjb25zdCBTaGFkZXJFdmFsQ29udGV4
dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gc19j
b25zdEluRmxvYXRbaW5wdXROZHhdOwl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjMgln
ZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwJCVRZUEVfRkxPQVRfVkVDMj4JKGNvbnN0IFNo
YWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0
eCk7IHJldHVybiBzX2NvbnN0SW5WZWMyW2lucHV0TmR4XTsJfQorLXRlbXBsYXRlIDw+IGlubGlu
ZSB0Y3U6OlZlYzMJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX1ZF
QzM+CShjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERF
X1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdEluVmVjM1tpbnB1dE5keF07CX0KKy10ZW1w
bGF0ZSA8PiBpbmxpbmUgdGN1OjpWZWM0CWdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJ
VFlQRV9GTE9BVF9WRUM0PgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBp
bnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHNfY29uc3RJblZlYzRbaW5wdXRO
ZHhdOwl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0MglnZXRJbnB1dFZhbHVlPElOUFVU
VFlQRV9DT05TVCwJCVRZUEVfRkxPQVRfTUFUMj4JKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBl
dmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiBzX2NvbnN0
SW5NYXQyW2lucHV0TmR4XTsJfQorLXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDMJZ2V0SW5w
dXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX01BVDM+CShjb25zdCBTaGFkZXJF
dmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyBy
ZXR1cm4gc19jb25zdEluTWF0M1tpbnB1dE5keF07CX0KKy10ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1
OjpNYXQ0CWdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJVFlQRV9GTE9BVF9NQVQ0Pgko
Y29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJF
RihldmFsQ3R4KTsgcmV0dXJuIHNfY29uc3RJbk1hdDRbaW5wdXROZHhdOwl9CisrdGVtcGxhdGUg
PD4gaW5saW5lIGZsb2F0ICAgICAgICBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICAg
ICBUWVBFX0ZMT0FUPiAgICAgICAgIChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwg
aW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdEluRmxvYXRb
aW5wdXROZHhdOyAgfQorK3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6OlZlYzIgICAgZ2V0SW5wdXRW
YWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgICAgVFlQRV9GTE9BVF9WRUMyPiAgICAoY29uc3QgU2hh
ZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4
KTsgcmV0dXJuIHNfY29uc3RJblZlYzJbaW5wdXROZHhdOyAgIH0KKyt0ZW1wbGF0ZSA8PiBpbmxp
bmUgdGN1OjpWZWMzICAgIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgICAgIFRZUEVf
RkxPQVRfVkVDMz4gICAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5w
dXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiBzX2NvbnN0SW5WZWMzW2lucHV0TmR4
XTsgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjNCAgICBnZXRJbnB1dFZhbHVlPElO
UFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FUX1ZFQzQ+ICAgIChjb25zdCBTaGFkZXJFdmFs
Q29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1
cm4gc19jb25zdEluVmVjNFtpbnB1dE5keF07ICAgfQorK3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6
Ok1hdDIgICAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgICAgVFlQRV9GTE9BVF9N
QVQyPiAgICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkg
eyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHNfY29uc3RJbk1hdDJbaW5wdXROZHhdOyAgIH0K
Kyt0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQzICAgIGdldElucHV0VmFsdWU8SU5QVVRUWVBF
X0NPTlNULCAgICAgIFRZUEVfRkxPQVRfTUFUMz4gICAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0
JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiBzX2Nv
bnN0SW5NYXQzW2lucHV0TmR4XTsgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0NCAg
ICBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FUX01BVDQ+ICAg
IChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VO
UkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdEluTWF0NFtpbnB1dE5keF07ICAgfQorIAorLXRl
bXBsYXRlIDw+IGlubGluZSBmbG9hdAkJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywJ
VFlQRV9GTE9BVD4JCQkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1
dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4LmNvb3Jkcy54KCk7CQkJ
CQl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjMglnZXRJbnB1dFZhbHVlPElOUFVUVFlQ
RV9EWU5BTUlDLAlUWVBFX0ZMT0FUX1ZFQzI+CShjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZh
bEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGlucHV0TmR4KTsgcmV0dXJuIGV2YWxDdHgu
Y29vcmRzLnN3aXp6bGUoMCwgMSk7CQkJfQorLXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6OlZlYzMJ
Z2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywJVFlQRV9GTE9BVF9WRUMzPgkoY29uc3Qg
U2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1
dE5keCk7IHJldHVybiBldmFsQ3R4LmNvb3Jkcy5zd2l6emxlKDAsIDEsIDIpOwkJfQorLXRlbXBs
YXRlIDw+IGlubGluZSB0Y3U6OlZlYzQJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywJ
VFlQRV9GTE9BVF9WRUM0PgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBp
bnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4LmNvb3Jkcy5zd2l6
emxlKDAsIDEsIDIsIDMpOwl9CisrdGVtcGxhdGUgPD4gaW5saW5lIGZsb2F0ICAgICAgICBnZXRJ
bnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCAgICBUWVBFX0ZMT0FUPiAgICAgICAgIChjb25z
dCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGlu
cHV0TmR4KTsgcmV0dXJuIGV2YWxDdHguY29vcmRzLngoKTsgICAgICAgICAgICAgICAgICAgfQor
K3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6OlZlYzIgICAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVf
RFlOQU1JQywgICAgVFlQRV9GTE9BVF9WRUMyPiAgICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQm
IGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFs
Q3R4LmNvb3Jkcy5zd2l6emxlKDAsIDEpOyAgICAgICAgIH0KKyt0ZW1wbGF0ZSA8PiBpbmxpbmUg
dGN1OjpWZWMzICAgIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsICAgIFRZUEVfRkxP
QVRfVkVDMz4gICAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXRO
ZHgpIHsgREVfVU5SRUYoaW5wdXROZHgpOyByZXR1cm4gZXZhbEN0eC5jb29yZHMuc3dpenpsZSgw
LCAxLCAyKTsgICAgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjNCAgICBnZXRJbnB1
dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCAgICBUWVBFX0ZMT0FUX1ZFQzQ+ICAgIChjb25zdCBT
aGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGlucHV0
TmR4KTsgcmV0dXJuIGV2YWxDdHguY29vcmRzLnN3aXp6bGUoMCwgMSwgMiwgMyk7ICAgfQogIAot
IGNvbnN0IEZvcm1hdFNldCAmR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKQorIHRlbXBsYXRl
IDw+IGlubGluZSB0Y3U6Ok1hdDIgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgVFlQ
RV9GTE9BVF9NQVQyPiAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1
dE5keCkKICB7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgIHN0YXRp
YyBGb3JtYXRTZXQgZm9ybWF0U2V0ID0gQnVpbGRBbGxTaXplZEludGVybmFsRm9ybWF0U2V0KCk7
Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICByZXR1cm4gZm9ybWF0U2V0Owor
LQlERV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorLQl0Y3U6Ok1hdDIgbTsKKy0JbS5z
ZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkpOworLQltLnNldENvbHVtbigx
LCBldmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CistCXJldHVybiBtOworKyAgICBERV9VTlJF
RihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorKyAgICB0Y3U6Ok1hdDIgbTsKKysgICAgbS5zZXRD
b2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkpOworKyAgICBtLnNldENvbHVtbigx
LCBldmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CisrICAgIHJldHVybiBtOworIH0KKyAKKyB0
ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQzIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFN
SUMsIFRZUEVfRkxPQVRfTUFUMz4gKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBp
bnQgaW5wdXROZHgpCisgeworLQlERV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorLQl0
Y3U6Ok1hdDMgbTsKKy0JbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSwy
KSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0uc3dpenpsZSgwLDEsMikpOworLQlt
LnNldENvbHVtbigyLCBldmFsQ3R4LmluWzJdLnN3aXp6bGUoMCwxLDIpKTsKKy0JcmV0dXJuIG07
CisrICAgIERFX1VOUkVGKGlucHV0TmR4KTsgLy8gTm90IHVzZWQuCisrICAgIHRjdTo6TWF0MyBt
OworKyAgICBtLnNldENvbHVtbigwLCBldmFsQ3R4LmluWzBdLnN3aXp6bGUoMCwxLDIpKTsKKysg
ICAgbS5zZXRDb2x1bW4oMSwgZXZhbEN0eC5pblsxXS5zd2l6emxlKDAsMSwyKSk7CisrICAgIG0u
c2V0Q29sdW1uKDIsIGV2YWxDdHguaW5bMl0uc3dpenpsZSgwLDEsMikpOworKyAgICByZXR1cm4g
bTsKICB9CiAgCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1BhdGhJbXBsLmgg
Yi9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAotaW5kZXggMzYwN2Y2OS4uY2IwM2Vk
NiAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9yZW5kZXJlci9QYXRoSW1wbC5oCi0rKysgYi9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvUGF0aEltcGwuaAotQEAgLTMzLDQgKzMzLDQgQEAgY2xhc3Mg
UGF0aEltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKKyB0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpN
YXQ0IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIFRZUEVfRkxPQVRfTUFUND4gKGNv
bnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpCisgeworLQlERV9V
TlJFRihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorLQl0Y3U6Ok1hdDQgbTsKKy0JbS5zZXRDb2x1
bW4oMCwgZXZhbEN0eC5pblswXSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0pOwor
LQltLnNldENvbHVtbigyLCBldmFsQ3R4LmluWzJdKTsKKy0JbS5zZXRDb2x1bW4oMywgZXZhbEN0
eC5pblszXSk7CistCXJldHVybiBtOworKyAgICBERV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1
c2VkLgorKyAgICB0Y3U6Ok1hdDQgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblsw
XSk7CisrICAgIG0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0pOworKyAgICBtLnNldENvbHVt
bigyLCBldmFsQ3R4LmluWzJdKTsKKysgICAgbS5zZXRDb2x1bW4oMywgZXZhbEN0eC5pblszXSk7
CisrICAgIHJldHVybiBtOworIH0KICAKLSB9ICAvLyBuYW1lc3BhY2UgcngKKyAvLyBSZWR1Y3Rp
b24gZnJvbSBleHByZXNzaW9uIHJlc3VsdCB0byB2ZWMzLgorQEAgLTM5MiwxMyArMzkyLDEzIEBA
IGlubGluZSB0Y3U6OlZlYzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6Ok1hdDQmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5nZXRDb2x1bW4oCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCBSb3dz
LCBpbnQgQ29scz4KKyB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiBtYXRyaXhDb21wTXVsdCAo
Y29uc3QgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4mIGEsIGNvbnN0IHRjdTo6TWF0cml4PFQs
IFJvd3MsIENvbHM+JiBiKQorIHsKKy0JdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4gcmV0VmFs
OworKyAgICB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiByZXRWYWw7CiAgCi0tI2VuZGlmICAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9IXwotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCi0rI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9QQVRISU1QTF9IXwotZGlmZiAtLWdp
dCBhL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNwcCBiL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRVMzLmNwcAotaW5kZXggMmY5MzY1MS4uNDlhYTYwNCAxMDA2NDQKLS0tLSBhL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uRVMzLmNwcAotKysrIGIvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMu
Y3BwCi1AQCAtNTI0LDcgKzUyNCwxMCBAQCBzdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29weVRleElt
YWdlQ29tYmluYXRpb24oY29uc3QgRm9ybWF0ICZ0ZXh0dXJlRm9ybWF0LAotICAgICBjb25zdCBh
dXRvICZ0ZXh0dXJlRm9ybWF0SW5mbyAgICAgPSAqdGV4dHVyZUZvcm1hdC5pbmZvOwotICAgICBj
b25zdCBhdXRvICZmcmFtZWJ1ZmZlckZvcm1hdEluZm8gPSAqZnJhbWVidWZmZXJGb3JtYXQuaW5m
bzsKKy0JZm9yIChpbnQgciA9IDA7IHIgPCBSb3dzOyArK3IpCistCQlmb3IgKGludCBjID0gMDsg
YyA8IENvbHM7ICsrYykKKy0JCQlyZXRWYWwocixjKSA9IGEocixjKSAqIGIociwgYyk7CisrICAg
IGZvciAoaW50IHIgPSAwOyByIDwgUm93czsgKytyKQorKyAgICAgICAgZm9yIChpbnQgYyA9IDA7
IGMgPCBDb2xzOyArK2MpCisrICAgICAgICAgICAgcmV0VmFsKHIsYykgPSBhKHIsYykgKiBiKHIs
IGMpOwogIAotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgotICAgICBzdGF0aWMg
Y29uc3QgQ29weUNvbnZlcnNpb25TZXQgY29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5
VGV4SW1hZ2VDb21iaW5hdGlvbnMoKTsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0g
ICAgIGlmIChjb252ZXJzaW9uU2V0LmZpbmQoQ29weUNvbnZlcnNpb24odGV4dHVyZUZvcm1hdElu
Zm8uZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lYnVmZmVyRm9ybWF0SW5mby5mb3JtYXQpKSAhPSBjb252ZXJzaW9uU2V0LmVuZCgpKQotICAg
ICB7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaCBiL2luY2x1ZGUvRUdM
L2VnbHBsYXRmb3JtLmgKLWluZGV4IDliYjc1OTEwYWMwLi5jY2FmN2U2ZjM0MyAxMDA2NDQKLS0t
LSBhL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKLSsrKyBiL2luY2x1ZGUvRUdML2VnbHBsYXRm
b3JtLmgKLUBAIC04OSw2ICs4OSwxMiBAQCB0eXBlZGVmIGludCAgIEVHTE5hdGl2ZURpc3BsYXlU
eXBlOwotIHR5cGVkZWYgdm9pZCAqRUdMTmF0aXZlV2luZG93VHlwZTsKLSB0eXBlZGVmIHZvaWQg
KkVHTE5hdGl2ZVBpeG1hcFR5cGU7CistCXJldHVybiByZXRWYWw7CisrICAgIHJldHVybiByZXRW
YWw7CisgfQorIAorIC8vIG5lZ2F0ZQorQEAgLTQwNiwxMyArNDA2LDEzIEBAIHRjdTo6TWF0cml4
PFQsIFJvd3MsIENvbHM+IG1hdHJpeENvbXBNdWx0IChjb25zdCB0Y3U6Ok1hdHJpeDxULCBSb3dz
LCBDb2xzPiYgYSwKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IFJvd3MsIGludCBDb2xzPgor
IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IG5lZ2F0ZSAoY29uc3QgdGN1OjpNYXRyaXg8VCwg
Um93cywgQ29scz4mIG1hdCkKKyB7CistCXRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IHJldFZh
bDsKKysgICAgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4gcmV0VmFsOworIAorLQlmb3IgKGlu
dCByID0gMDsgciA8IFJvd3M7ICsrcikKKy0JCWZvciAoaW50IGMgPSAwOyBjIDwgQ29sczsgKytj
KQorLQkJCXJldFZhbChyLGMpID0gLW1hdChyLCBjKTsKKysgICAgZm9yIChpbnQgciA9IDA7IHIg
PCBSb3dzOyArK3IpCisrICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IENvbHM7ICsrYykKKysg
ICAgICAgICAgICByZXRWYWwocixjKSA9IC1tYXQociwgYyk7CisgCistCXJldHVybiByZXRWYWw7
CisrICAgIHJldHVybiByZXRWYWw7CisgfQorIAorIC8vIGluY3JlbWVudC9kZWNyZW1lbnQKK0BA
IC00MjAsMjUgKzQyMCwyNSBAQCB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiBuZWdhdGUgKGNv
bnN0IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBtYXQpCisgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIGludCBSb3dzLCBpbnQgQ29scz4KKyB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiBpbmNy
ZW1lbnQgKGNvbnN0IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBtYXQpCisgeworLQl0Y3U6
Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiByZXRWYWw7CisrICAgIHRjdTo6TWF0cml4PFQsIFJvd3Ms
IENvbHM+IHJldFZhbDsKKyAKKy0JZm9yIChpbnQgciA9IDA7IHIgPCBSb3dzOyArK3IpCistCQlm
b3IgKGludCBjID0gMDsgYyA8IENvbHM7ICsrYykKKy0JCQlyZXRWYWwocixjKSA9IG1hdChyLCBj
KSArIDEuMGY7CisrICAgIGZvciAoaW50IHIgPSAwOyByIDwgUm93czsgKytyKQorKyAgICAgICAg
Zm9yIChpbnQgYyA9IDA7IGMgPCBDb2xzOyArK2MpCisrICAgICAgICAgICAgcmV0VmFsKHIsYykg
PSBtYXQociwgYykgKyAxLjBmOworIAorLQlyZXR1cm4gcmV0VmFsOworKyAgICByZXR1cm4gcmV0
VmFsOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IFJvd3MsIGludCBDb2xzPgor
IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IGRlY3JlbWVudCAoY29uc3QgdGN1OjpNYXRyaXg8
VCwgUm93cywgQ29scz4mIG1hdCkKKyB7CistCXRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IHJl
dFZhbDsKKysgICAgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4gcmV0VmFsOworIAorLQlmb3Ig
KGludCByID0gMDsgciA8IFJvd3M7ICsrcikKKy0JCWZvciAoaW50IGMgPSAwOyBjIDwgQ29sczsg
KytjKQorLQkJCXJldFZhbChyLGMpID0gbWF0KHIsIGMpIC0gMS4wZjsKKysgICAgZm9yIChpbnQg
ciA9IDA7IHIgPCBSb3dzOyArK3IpCisrICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IENvbHM7
ICsrYykKKysgICAgICAgICAgICByZXRWYWwocixjKSA9IG1hdChyLCBjKSAtIDEuMGY7CisgCist
CXJldHVybiByZXRWYWw7CisrICAgIHJldHVybiByZXRWYWw7CisgfQorIAorIC8vIEV2YWx1YXRv
ciB0ZW1wbGF0ZS4KK0BAIC00NDksMjQ0ICs0NDksMjQ0IEBAIHN0cnVjdCBFdmFsdWF0b3I7Cisg
dGVtcGxhdGUgPGludCBJbjBUeXBlLCBpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFUeXBlLCBpbnQg
SW4xRGF0YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9BREQsIEluMFR5cGUsIEluMERhdGFU
eXBlLCBJbjFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChT
aGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKy0JeworLQkJZXZhbEN0eC5jb2xvci54eXooKSA9
IHJlZHVjZVRvVmVjMyhnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKSArIGdldElucHV0VmFsdWU8SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpKTsK
Ky0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxD
dHgpCisrICAgIHsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMo
Z2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkgKyBnZXRJbnB1
dFZhbHVlPEluMVR5cGUsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKSk7CisrICAgIH0KKyB9Owor
IAorIHRlbXBsYXRlIDxpbnQgSW4wVHlwZSwgaW50IEluMERhdGFUeXBlLCBpbnQgSW4xVHlwZSwg
aW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfU1VCLCBJbjBUeXBlLCBJbjBE
YXRhVHlwZSwgSW4xVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0aWMgdm9pZCBldmFsdWF0
ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCistCXsKKy0JCWV2YWxDdHguY29sb3IueHl6
KCkgPSByZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZh
bEN0eCwgMCkgLSBnZXRJbnB1dFZhbHVlPEluMVR5cGUsIEluMURhdGFUeXBlPihldmFsQ3R4LCAx
KSk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBl
dmFsQ3R4KQorKyAgICB7CisrICAgICAgICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9W
ZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApIC0gZ2V0
SW5wdXRWYWx1ZTxJbjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkpOworKyAgICB9Cisg
fTsKKyAKKyB0ZW1wbGF0ZSA8aW50IEluMFR5cGUsIGludCBJbjBEYXRhVHlwZSwgaW50IEluMVR5
cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX01VTCwgSW4wVHlwZSwg
SW4wRGF0YVR5cGUsIEluMVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZh
bHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4KQorLQl7CistCQlldmFsQ3R4LmNvbG9y
Lnh5eigpID0gcmVkdWNlVG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+
KGV2YWxDdHgsIDApICogZ2V0SW5wdXRWYWx1ZTxJbjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0
eCwgMSkpOworLQl9CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4
dCYgZXZhbEN0eCkKKysgICAgeworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVj
ZVRvVmVjMyhnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSAq
IGdldElucHV0VmFsdWU8SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpKTsKKysgICAg
fQorIH07CisgCisgdGVtcGxhdGUgPGludCBJbjBUeXBlLCBpbnQgSW4wRGF0YVR5cGUsIGludCBJ
bjFUeXBlLCBpbnQgSW4xRGF0YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9ESVYsIEluMFR5
cGUsIEluMERhdGFUeXBlLCBJbjFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2b2lk
IGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKy0JeworLQkJZXZhbEN0eC5j
b2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFU
eXBlPihldmFsQ3R4LCAwKSAvIGdldElucHV0VmFsdWU8SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2
YWxDdHgsIDEpKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENv
bnRleHQmIGV2YWxDdHgpCisrICAgIHsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSBy
ZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCkgLyBnZXRJbnB1dFZhbHVlPEluMVR5cGUsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKSk7Cisr
ICAgIH0KKyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wVHlwZSwgaW50IEluMERhdGFUeXBlLCBp
bnQgSW4xVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfQ09NUF9N
VUwsIEluMFR5cGUsIEluMERhdGFUeXBlLCBJbjFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0
YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKy0JeworLQkJ
ZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhtYXRyaXhDb21wTXVsdChnZXRJbnB1
dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSwgZ2V0SW5wdXRWYWx1ZTxJ
bjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkpKTsKKy0JfQorKyAgICBzdGF0aWMgdm9p
ZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCisrICAgIHsKKysgICAgICAg
IGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMobWF0cml4Q29tcE11bHQoZ2V0SW5w
dXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCksIGdldElucHV0VmFsdWU8
SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpKSk7CisrICAgIH0KKyB9OworIAorIHRl
bXBsYXRlIDxpbnQgSW4wVHlwZSwgaW50IEluMERhdGFUeXBlLCBpbnQgSW4xVHlwZSwgaW50IElu
MURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfVU5BUllfUExVUywgSW4wVHlwZSwgSW4w
RGF0YVR5cGUsIEluMVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZhbHVh
dGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4KQorLQl7CistCQlldmFsQ3R4LmNvbG9yLnh5
eigpID0gcmVkdWNlVG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2
YWxDdHgsIDApKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENv
bnRleHQmIGV2YWxDdHgpCisrICAgIHsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSBy
ZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCkpOworKyAgICB9CisgfTsKKyAKKyB0ZW1wbGF0ZSA8aW50IEluMFR5cGUsIGludCBJbjBEYXRh
VHlwZSwgaW50IEluMVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9Q
X05FR0FUSU9OLCBJbjBUeXBlLCBJbjBEYXRhVHlwZSwgSW4xVHlwZSwgSW4xRGF0YVR5cGU+Cisg
eworLQlzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCist
CXsKKy0JCWV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMobmVnYXRlKGdldElucHV0
VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApKSk7CistCX0KKysgICAgc3Rh
dGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4KQorKyAgICB7Cisr
ICAgICAgICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKG5lZ2F0ZShnZXRJbnB1
dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSkpOworKyAgICB9CisgfTsK
KyAKKyB0ZW1wbGF0ZSA8aW50IEluMFR5cGUsIGludCBJbjBEYXRhVHlwZSwgaW50IEluMVR5cGUs
IGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX1BSRV9JTkNSRU1FTlQsIElu
MFR5cGUsIEluMERhdGFUeXBlLCBJbjFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2
b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKy0JeworLQkJLy8gbW9k
aWZ5aW5nIHJlZHVjdGlvbjogc3VtIG1vZGlmaWVkIHZhbHVlIHRvbworLQkJZXZhbEN0eC5jb2xv
ci54eXooKSA9IHJlZHVjZVRvVmVjMyhpbmNyZW1lbnQoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJ
bjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkpKSArIHJlZHVjZVRvVmVjMyhpbmNyZW1lbnQoZ2V0SW5w
dXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkpKTsKKy0JfQorKyAgICBz
dGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCisrICAgIHsK
KysgICAgICAgIC8vIG1vZGlmeWluZyByZWR1Y3Rpb246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28K
KysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW5jcmVtZW50KGdl
dElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApKSkgKyByZWR1Y2VU
b1ZlYzMoaW5jcmVtZW50KGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxD
dHgsIDApKSk7CisrICAgIH0KKyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wVHlwZSwgaW50IElu
MERhdGFUeXBlLCBpbnQgSW4xVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0
b3I8T1BfUFJFX0RFQ1JFTUVOVCwgSW4wVHlwZSwgSW4wRGF0YVR5cGUsIEluMVR5cGUsIEluMURh
dGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBl
dmFsQ3R4KQorLQl7CistCQkvLyBtb2RpZnlpbmcgcmVkdWN0aW9uOiBzdW0gbW9kaWZpZWQgdmFs
dWUgdG9vCistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGRlY3JlbWVudChn
ZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSkpICsgcmVkdWNl
VG9WZWMzKGRlY3JlbWVudChnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFs
Q3R4LCAwKSkpOworLQl9CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29u
dGV4dCYgZXZhbEN0eCkKKysgICAgeworKyAgICAgICAgLy8gbW9kaWZ5aW5nIHJlZHVjdGlvbjog
c3VtIG1vZGlmaWVkIHZhbHVlIHRvbworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJl
ZHVjZVRvVmVjMyhkZWNyZW1lbnQoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4o
ZXZhbEN0eCwgMCkpKSArIHJlZHVjZVRvVmVjMyhkZWNyZW1lbnQoZ2V0SW5wdXRWYWx1ZTxJbjBU
eXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkpKTsKKysgICAgfQorIH07CisgCisgdGVtcGxh
dGUgPGludCBJbjBUeXBlLCBpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFUeXBlLCBpbnQgSW4xRGF0
YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9QT1NUX0lOQ1JFTUVOVCwgSW4wVHlwZSwgSW4w
RGF0YVR5cGUsIEluMVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZhbHVh
dGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4KQorLQl7CistCQkvLyBtb2RpZnlpbmcgcmVk
dWN0aW9uOiBzdW0gbW9kaWZpZWQgdmFsdWUgdG9vCistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0g
cmVkdWNlVG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgs
IDApKSArIHJlZHVjZVRvVmVjMyhpbmNyZW1lbnQoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBE
YXRhVHlwZT4oZXZhbEN0eCwgMCkpKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAo
U2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCisrICAgIHsKKysgICAgICAgIC8vIG1vZGlmeWlu
ZyByZWR1Y3Rpb246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28KKysgICAgICAgIGV2YWxDdHguY29s
b3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlw
ZT4oZXZhbEN0eCwgMCkpICsgcmVkdWNlVG9WZWMzKGluY3JlbWVudChnZXRJbnB1dFZhbHVlPElu
MFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSkpOworKyAgICB9CisgfTsKKyAKKyB0ZW1w
bGF0ZSA8aW50IEluMFR5cGUsIGludCBJbjBEYXRhVHlwZSwgaW50IEluMVR5cGUsIGludCBJbjFE
YXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX1BPU1RfREVDUkVNRU5ULCBJbjBUeXBlLCBJ
bjBEYXRhVHlwZSwgSW4xVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0aWMgdm9pZCBldmFs
dWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCistCXsKKy0JCS8vIG1vZGlmeWluZyBy
ZWR1Y3Rpb246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28KKy0JCWV2YWxDdHguY29sb3IueHl6KCkg
PSByZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0
eCwgMCkpICsgcmVkdWNlVG9WZWMzKGRlY3JlbWVudChnZXRJbnB1dFZhbHVlPEluMFR5cGUsIElu
MERhdGFUeXBlPihldmFsQ3R4LCAwKSkpOworLQl9CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRl
IChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKysgICAgeworKyAgICAgICAgLy8gbW9kaWZ5
aW5nIHJlZHVjdGlvbjogc3VtIG1vZGlmaWVkIHZhbHVlIHRvbworKyAgICAgICAgZXZhbEN0eC5j
b2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFU
eXBlPihldmFsQ3R4LCAwKSkgKyByZWR1Y2VUb1ZlYzMoZGVjcmVtZW50KGdldElucHV0VmFsdWU8
SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApKSk7CisrICAgIH0KKyB9OworIAorIHRl
bXBsYXRlIDxpbnQgSW4wVHlwZSwgaW50IEluMERhdGFUeXBlLCBpbnQgSW4xVHlwZSwgaW50IElu
MURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfQUREX0lOVE8sIEluMFR5cGUsIEluMERh
dGFUeXBlLCBJbjFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRl
IChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKy0JeworLQkJZXZhbEN0eC5jb2xvci54eXoo
KSA9IHJlZHVjZVRvVmVjMyhnZXRJbnB1dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFs
Q3R4LCAwKSArIGdldElucHV0VmFsdWU8SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEp
KTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2
YWxDdHgpCisrICAgIHsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1Zl
YzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkgKyBnZXRJ
bnB1dFZhbHVlPEluMVR5cGUsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKSk7CisrICAgIH0KKyB9
OwogIAotKyNlbGlmIGRlZmluZWQoV0xfRUdMX1BMQVRGT1JNKQorIHRlbXBsYXRlIDxpbnQgSW4w
VHlwZSwgaW50IEluMERhdGFUeXBlLCBpbnQgSW4xVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0
cnVjdCBFdmFsdWF0b3I8T1BfU1VCVFJBQ1RfRlJPTSwgSW4wVHlwZSwgSW4wRGF0YVR5cGUsIElu
MVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2
YWxDb250ZXh0JiBldmFsQ3R4KQorLQl7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNl
VG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApIC0g
Z2V0SW5wdXRWYWx1ZTxJbjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkpOworLQl9Cisr
ICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCkKKysg
ICAgeworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhnZXRJbnB1
dFZhbHVlPEluMFR5cGUsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKSAtIGdldElucHV0VmFsdWU8
SW4xVHlwZSwgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpKTsKKysgICAgfQorIH07CisgCisgdGVt
cGxhdGUgPGludCBJbjBUeXBlLCBpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFUeXBlLCBpbnQgSW4x
RGF0YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9NVUxUSVBMWV9JTlRPLCBJbjBUeXBlLCBJ
bjBEYXRhVHlwZSwgSW4xVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0aWMgdm9pZCBldmFs
dWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCistCXsKKy0JCWV2YWxDdHguY29sb3Iu
eHl6KCkgPSByZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJbjBEYXRhVHlwZT4o
ZXZhbEN0eCwgMCkgKiBnZXRJbnB1dFZhbHVlPEluMVR5cGUsIEluMURhdGFUeXBlPihldmFsQ3R4
LCAxKSk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0
JiBldmFsQ3R4KQorKyAgICB7CisrICAgICAgICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNl
VG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApICog
Z2V0SW5wdXRWYWx1ZTxJbjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkpOworKyAgICB9
CisgfTsKKyAKKyB0ZW1wbGF0ZSA8aW50IEluMFR5cGUsIGludCBJbjBEYXRhVHlwZSwgaW50IElu
MVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX0RJVklERV9JTlRP
LCBJbjBUeXBlLCBJbjBEYXRhVHlwZSwgSW4xVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0
aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCistCXsKKy0JCWV2
YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoZ2V0SW5wdXRWYWx1ZTxJbjBUeXBlLCBJ
bjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkgLyBnZXRJbnB1dFZhbHVlPEluMVR5cGUsIEluMURhdGFU
eXBlPihldmFsQ3R4LCAxKSk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRl
ckV2YWxDb250ZXh0JiBldmFsQ3R4KQorKyAgICB7CisrICAgICAgICBldmFsQ3R4LmNvbG9yLnh5
eigpID0gcmVkdWNlVG9WZWMzKGdldElucHV0VmFsdWU8SW4wVHlwZSwgSW4wRGF0YVR5cGU+KGV2
YWxDdHgsIDApIC8gZ2V0SW5wdXRWYWx1ZTxJbjFUeXBlLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwg
MSkpOworKyAgICB9CisgfTsKKyAKKyBTaGFkZXJFdmFsRnVuYyBnZXRFdmFsRnVuYyAoY29uc3Qg
U2hhZGVySW5wdXQmIGluMCwgY29uc3QgU2hhZGVySW5wdXQmIGluMSwgTWF0cml4T3Agb3ApCisg
eworLQlERV9TVEFUSUNfQVNTRVJUKFRZUEVfTEFTVAkJPD0gKDE8PDcpKTsKKy0JREVfU1RBVElD
X0FTU0VSVChPUF9MQVNUCQk8PSAoMTw8NCkpOworLQlERV9TVEFUSUNfQVNTRVJUKElOUFVUVFlQ
RV9MQVNUCTw9ICgxPDwyKSk7CistCistI2RlZmluZSBQQUNLX0VWQUxfQ0FTRShPUCwgSU4wVFlQ
RSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURBVEFUWVBFKQkoKChPUCkgPDwgMTgpIHwgKChJ
TjBUWVBFKSA8PCAxNikgfCAoKElOMERBVEFUWVBFKSA8PCA5KSB8ICgoSU4xVFlQRSkgPDwgNykg
fCAoSU4xREFUQVRZUEUpKQorLQorLSNkZWZpbmUgTUFLRV9FVkFMX0NBU0UoT1AsIElOMFRZUEUs
IElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkJCVwKKy0JY2FzZSBQQUNLX0VWQUxf
Q0FTRShPUCwgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURBVEFUWVBFKToJXAor
LQkJcmV0dXJuIEV2YWx1YXRvcjxPUCwgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElO
MURBVEFUWVBFPjo6ZXZhbHVhdGUKKy0KKy0jZGVmaW5lIFNDQUxBUl9PUFMoSU4wVFlQRSwgSU4w
REFUQVRZUEUsIElOMVRZUEUsIElOMURBVEFUWVBFKQlcCistCU1BS0VfRVZBTF9DQVNFKE9QX0FE
RCwJCUlOMFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSk7CVwKKy0JTUFL
RV9FVkFMX0NBU0UoT1BfU1VCLAkJSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURB
VEFUWVBFKTsJXAorLQlNQUtFX0VWQUxfQ0FTRShPUF9NVUwsCQlJTjBUWVBFLCBJTjBEQVRBVFlQ
RSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX0RJViwJCUlO
MFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkKKy0KKy0jZGVmaW5lIEFM
TF9PUFMoSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURBVEFUWVBFKQlcCistCU1B
S0VfRVZBTF9DQVNFKE9QX0FERCwJCQlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4x
REFUQVRZUEUpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX1NVQiwJCQlJTjBUWVBFLCBJTjBEQVRB
VFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX01VTCwJ
CQlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOwlcCistCU1BS0Vf
RVZBTF9DQVNFKE9QX0RJViwJCQlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFU
QVRZUEUpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX0NPTVBfTVVMLAkJSU4wVFlQRSwgSU4wREFU
QVRZUEUsIElOMVRZUEUsIElOMURBVEFUWVBFKTsKKy0KKy0jZGVmaW5lIE1VTF9PUChJTjBUWVBF
LCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpCVwKKy0JTUFLRV9FVkFMX0NBU0Uo
T1BfTVVMLCBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpCistCist
I2RlZmluZSBNQUtFX01BVF9TQ0FMQVJfVkVDX0NBU0VTKE9QLCBUWVBFMCwgVFlQRTEpCQkJCVwK
Ky0JT1AoSU5QVVRUWVBFX0NPTlNULAkJVFlQRTAsIElOUFVUVFlQRV9DT05TVCwJCVRZUEUxKTsJ
XAorLQlPUChJTlBVVFRZUEVfRFlOQU1JQywJVFlQRTAsIElOUFVUVFlQRV9DT05TVCwJCVRZUEUx
KTsJXAorLQlPUChJTlBVVFRZUEVfQ09OU1QsCQlUWVBFMCwgSU5QVVRUWVBFX0RZTkFNSUMsCVRZ
UEUxKTsJXAorLQlPUChJTlBVVFRZUEVfRFlOQU1JQywJVFlQRTAsIElOUFVUVFlQRV9EWU5BTUlD
LAlUWVBFMSkKKy0KKy0jZGVmaW5lIE1BS0VfTUFUX01BVF9DQVNFUyhPUCwgTUFUVFlQRSkJCQkJ
CQkJCVwKKy0JT1AoSU5QVVRUWVBFX0NPTlNULAkJTUFUVFlQRSwgSU5QVVRUWVBFX0NPTlNULAlN
QVRUWVBFKTsJXAorLQlPUChJTlBVVFRZUEVfRFlOQU1JQywJTUFUVFlQRSwgSU5QVVRUWVBFX0NP
TlNULAlNQVRUWVBFKQorLQorLSNkZWZpbmUgVU5BUllfT1AoSU4wVFlQRSwgSU4wREFUQVRZUEUp
CQkJCQkJCQkJCQkJCQlcCistCU1BS0VfRVZBTF9DQVNFKE9QX1VOQVJZX1BMVVMsCQlJTjBUWVBF
LCBJTjBEQVRBVFlQRSwgSU5QVVRUWVBFX0NPTlNULCBUWVBFX0xBU1QpOwlcCistCU1BS0VfRVZB
TF9DQVNFKE9QX05FR0FUSU9OLAkJCUlOMFRZUEUsIElOMERBVEFUWVBFLCBJTlBVVFRZUEVfQ09O
U1QsIFRZUEVfTEFTVCk7CVwKKy0JTUFLRV9FVkFMX0NBU0UoT1BfUFJFX0lOQ1JFTUVOVCwJSU4w
VFlQRSwgSU4wREFUQVRZUEUsIElOUFVUVFlQRV9DT05TVCwgVFlQRV9MQVNUKTsJXAorLQlNQUtF
X0VWQUxfQ0FTRShPUF9QUkVfREVDUkVNRU5ULAlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU5QVVRU
WVBFX0NPTlNULCBUWVBFX0xBU1QpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX1BPU1RfSU5DUkVN
RU5ULAlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU5QVVRUWVBFX0NPTlNULCBUWVBFX0xBU1QpOwlc
CistCU1BS0VfRVZBTF9DQVNFKE9QX1BPU1RfREVDUkVNRU5ULAlJTjBUWVBFLCBJTjBEQVRBVFlQ
RSwgSU5QVVRUWVBFX0NPTlNULCBUWVBFX0xBU1QpCistCistI2RlZmluZSBNQUtFX1VOQVJZX0NB
U0VTKE9QLCBNQVRUWVBFKQlcCistCU9QKElOUFVUVFlQRV9DT05TVCwJCU1BVFRZUEUpOwlcCist
CU9QKElOUFVUVFlQRV9EWU5BTUlDLAlNQVRUWVBFKQorLQorLSNkZWZpbmUgQVNTSUdOX09QKElO
MFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkJCQkJCQkJXAorLQlNQUtF
X0VWQUxfQ0FTRShPUF9BRERfSU5UTywJCQlJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwg
SU4xREFUQVRZUEUpOwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX1NVQlRSQUNUX0ZST00sCUlOMFRZ
UEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSk7CVwKKy0JTUFLRV9FVkFMX0NB
U0UoT1BfTVVMVElQTFlfSU5UTywJSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURB
VEFUWVBFKTsJXAorLQlNQUtFX0VWQUxfQ0FTRShPUF9ESVZJREVfSU5UTywJCUlOMFRZUEUsIElO
MERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkKKy0KKy0jZGVmaW5lIE1BS0VfQVNTSUdO
TUVOVF9DQVNFUyhPUCwgTUFUVFlQRSkJCQkJCQlcCistCU9QKElOUFVUVFlQRV9DT05TVCwJCU1B
VFRZUEUsIElOUFVUVFlQRV9DT05TVCwJTUFUVFlQRSk7CVwKKy0JT1AoSU5QVVRUWVBFX0RZTkFN
SUMsCU1BVFRZUEUsIElOUFVUVFlQRV9DT05TVCwJTUFUVFlQRSk7CVwKKy0JT1AoSU5QVVRUWVBF
X0NPTlNULAkJTUFUVFlQRSwgSU5QVVRUWVBFX0RZTkFNSUMsCU1BVFRZUEUpOwlcCistCU9QKElO
UFVUVFlQRV9EWU5BTUlDLAlNQVRUWVBFLCBJTlBVVFRZUEVfRFlOQU1JQywJTUFUVFlQRSkKKy0K
Ky0JLy8gXG5vdGUgQXQgdGhlIG1vbWVudCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4g
dW5pZm9ybSBhbmQgY29uc3QgaW5wdXRzLiBUaGlzIHNhdmVzIGJpbmFyeSBzaXplLgorLQlJbnB1
dFR5cGUgaW4wVHlwZSA9IGluMC5pbnB1dFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMgPyBJTlBV
VFRZUEVfRFlOQU1JQyA6IElOUFVUVFlQRV9DT05TVDsKKy0JSW5wdXRUeXBlIGluMVR5cGUgPSBp
bjEuaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDID8gSU5QVVRUWVBFX0RZTkFNSUMgOiBJ
TlBVVFRZUEVfQ09OU1Q7CistCistCXN3aXRjaCAoUEFDS19FVkFMX0NBU0Uob3AsIGluMFR5cGUs
IGluMC5kYXRhVHlwZSwgaW4xVHlwZSwgaW4xLmRhdGFUeXBlKSkKKy0JeworLQkJLy8gTWF0cml4
LXNjYWxhci4KKy0JCU1BS0VfTUFUX1NDQUxBUl9WRUNfQ0FTRVMoU0NBTEFSX09QUywJVFlQRV9G
TE9BVF9NQVQyLCBUWVBFX0ZMT0FUKTsKKy0JCU1BS0VfTUFUX1NDQUxBUl9WRUNfQ0FTRVMoU0NB
TEFSX09QUywJVFlQRV9GTE9BVF9NQVQzLCBUWVBFX0ZMT0FUKTsKKy0JCU1BS0VfTUFUX1NDQUxB
Ul9WRUNfQ0FTRVMoU0NBTEFSX09QUywJVFlQRV9GTE9BVF9NQVQ0LCBUWVBFX0ZMT0FUKTsKKy0K
Ky0JCS8vIE1hdHJpeC12ZWN0b3IuCistCQlNQUtFX01BVF9TQ0FMQVJfVkVDX0NBU0VTKE1VTF9P
UCwJCVRZUEVfRkxPQVRfTUFUMiwgVFlQRV9GTE9BVF9WRUMyKTsKKy0JCU1BS0VfTUFUX1NDQUxB
Ul9WRUNfQ0FTRVMoTVVMX09QLAkJVFlQRV9GTE9BVF9NQVQzLCBUWVBFX0ZMT0FUX1ZFQzMpOwor
LQkJTUFLRV9NQVRfU0NBTEFSX1ZFQ19DQVNFUyhNVUxfT1AsCQlUWVBFX0ZMT0FUX01BVDQsIFRZ
UEVfRkxPQVRfVkVDNCk7CistCistCQkvLyBWZWN0b3ItbWF0cml4LgorLQkJTUFLRV9NQVRfU0NB
TEFSX1ZFQ19DQVNFUyhNVUxfT1AsCQlUWVBFX0ZMT0FUX1ZFQzIsIFRZUEVfRkxPQVRfTUFUMik7
CistCQlNQUtFX01BVF9TQ0FMQVJfVkVDX0NBU0VTKE1VTF9PUCwJCVRZUEVfRkxPQVRfVkVDMywg
VFlQRV9GTE9BVF9NQVQzKTsKKy0JCU1BS0VfTUFUX1NDQUxBUl9WRUNfQ0FTRVMoTVVMX09QLAkJ
VFlQRV9GTE9BVF9WRUM0LCBUWVBFX0ZMT0FUX01BVDQpOworLQorLQkJLy8gTWF0cml4LW1hdHJp
eC4KKy0JCU1BS0VfTUFUX01BVF9DQVNFUyhBTExfT1BTLAlUWVBFX0ZMT0FUX01BVDIpOworLQkJ
TUFLRV9NQVRfTUFUX0NBU0VTKEFMTF9PUFMsCVRZUEVfRkxPQVRfTUFUMyk7CistCQlNQUtFX01B
VF9NQVRfQ0FTRVMoQUxMX09QUywJVFlQRV9GTE9BVF9NQVQ0KTsKKy0KKy0JCS8vIFVuYXJ5IG1h
dHJpeAorLQkJTUFLRV9VTkFSWV9DQVNFUyhVTkFSWV9PUCwgVFlQRV9GTE9BVF9NQVQyKTsKKy0J
CU1BS0VfVU5BUllfQ0FTRVMoVU5BUllfT1AsIFRZUEVfRkxPQVRfTUFUMyk7CistCQlNQUtFX1VO
QVJZX0NBU0VTKFVOQVJZX09QLCBUWVBFX0ZMT0FUX01BVDQpOworLQorLQkJLy8gQXNzaWdubWVu
dCBtYXRyaXgKKy0JCU1BS0VfQVNTSUdOTUVOVF9DQVNFUyhBU1NJR05fT1AsIFRZUEVfRkxPQVRf
TUFUMik7CistCQlNQUtFX0FTU0lHTk1FTlRfQ0FTRVMoQVNTSUdOX09QLCBUWVBFX0ZMT0FUX01B
VDMpOworLQkJTUFLRV9BU1NJR05NRU5UX0NBU0VTKEFTU0lHTl9PUCwgVFlQRV9GTE9BVF9NQVQ0
KTsKKy0KKy0JCWRlZmF1bHQ6CistCQkJREVfQVNTRVJUKERFX0ZBTFNFKTsKKy0JCQlyZXR1cm4g
REVfTlVMTDsKKy0JfQorKyAgICBERV9TVEFUSUNfQVNTRVJUKFRZUEVfTEFTVCAgICAgIDw9ICgx
PDw3KSk7CisrICAgIERFX1NUQVRJQ19BU1NFUlQoT1BfTEFTVCAgICAgICAgPD0gKDE8PDQpKTsK
KysgICAgREVfU1RBVElDX0FTU0VSVChJTlBVVFRZUEVfTEFTVCA8PSAoMTw8MikpOwogKwotK3R5
cGVkZWYgc3RydWN0IHdsX2Rpc3BsYXkgICAgKkVHTE5hdGl2ZURpc3BsYXlUeXBlOwotK3R5cGVk
ZWYgc3RydWN0IHdsX2VnbF9waXhtYXAgKkVHTE5hdGl2ZVBpeG1hcFR5cGU7Ci0rdHlwZWRlZiBz
dHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqRUdMTmF0aXZlV2luZG93VHlwZTsKKysjZGVmaW5lIFBBQ0tf
RVZBTF9DQVNFKE9QLCBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUp
ICAoKChPUCkgPDwgMTgpIHwgKChJTjBUWVBFKSA8PCAxNikgfCAoKElOMERBVEFUWVBFKSA8PCA5
KSB8ICgoSU4xVFlQRSkgPDwgNykgfCAoSU4xREFUQVRZUEUpKQogKwotICNlbGlmIGRlZmluZWQo
X19BTkRST0lEX18pIHx8IGRlZmluZWQoQU5EUk9JRCkKLSAKLSAjaW5jbHVkZSA8YW5kcm9pZC9u
YXRpdmVfd2luZG93Lmg+Ci1AQCAtMTA3LDYgKzExMyw4IEBAIHR5cGVkZWYgaW50cHRyX3QgRUdM
TmF0aXZlUGl4bWFwVHlwZTsKKysjZGVmaW5lIE1BS0VfRVZBTF9DQVNFKE9QLCBJTjBUWVBFLCBJ
TjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpICAgICAgXAorKyAgICBjYXNlIFBBQ0tf
RVZBTF9DQVNFKE9QLCBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUp
OiAgICBcCisrICAgICAgICByZXR1cm4gRXZhbHVhdG9yPE9QLCBJTjBUWVBFLCBJTjBEQVRBVFlQ
RSwgSU4xVFlQRSwgSU4xREFUQVRZUEU+OjpldmFsdWF0ZQorKworKyNkZWZpbmUgU0NBTEFSX09Q
UyhJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpICBcCisrICAgIE1B
S0VfRVZBTF9DQVNFKE9QX0FERCwgICAgICBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwg
SU4xREFUQVRZUEUpOyAgICBcCisrICAgIE1BS0VfRVZBTF9DQVNFKE9QX1NVQiwgICAgICBJTjBU
WVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOyAgICBcCisrICAgIE1BS0Vf
RVZBTF9DQVNFKE9QX01VTCwgICAgICBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4x
REFUQVRZUEUpOyAgICBcCisrICAgIE1BS0VfRVZBTF9DQVNFKE9QX0RJViwgICAgICBJTjBUWVBF
LCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpCisrCisrI2RlZmluZSBBTExfT1BT
KElOMFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkgXAorKyAgICBNQUtF
X0VWQUxfQ0FTRShPUF9BREQsICAgICAgICAgIElOMFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBF
LCBJTjFEQVRBVFlQRSk7ICAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfU1VCLCAgICAgICAg
ICBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOyAgICBcCisrICAg
IE1BS0VfRVZBTF9DQVNFKE9QX01VTCwgICAgICAgICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElO
MVRZUEUsIElOMURBVEFUWVBFKTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9ESVYsICAg
ICAgICAgIElOMFRZUEUsIElOMERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSk7ICAgIFwK
KysgICAgTUFLRV9FVkFMX0NBU0UoT1BfQ09NUF9NVUwsICAgICBJTjBUWVBFLCBJTjBEQVRBVFlQ
RSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOworKworKyNkZWZpbmUgTVVMX09QKElOMFRZUEUsIElO
MERBVEFUWVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSkgIFwKKysgICAgTUFLRV9FVkFMX0NBU0Uo
T1BfTVVMLCBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpCisrCisr
I2RlZmluZSBNQUtFX01BVF9TQ0FMQVJfVkVDX0NBU0VTKE9QLCBUWVBFMCwgVFlQRTEpICAgICAg
ICAgICAgIFwKKysgICAgT1AoSU5QVVRUWVBFX0NPTlNULCAgICAgVFlQRTAsIElOUFVUVFlQRV9D
T05TVCwgICAgIFRZUEUxKTsgXAorKyAgICBPUChJTlBVVFRZUEVfRFlOQU1JQywgICBUWVBFMCwg
SU5QVVRUWVBFX0NPTlNULCAgICAgVFlQRTEpOyBcCisrICAgIE9QKElOUFVUVFlQRV9DT05TVCwg
ICAgIFRZUEUwLCBJTlBVVFRZUEVfRFlOQU1JQywgICBUWVBFMSk7IFwKKysgICAgT1AoSU5QVVRU
WVBFX0RZTkFNSUMsICAgVFlQRTAsIElOUFVUVFlQRV9EWU5BTUlDLCAgIFRZUEUxKQorKworKyNk
ZWZpbmUgTUFLRV9NQVRfTUFUX0NBU0VTKE9QLCBNQVRUWVBFKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorKyAgICBPUChJTlBVVFRZUEVfQ09OU1QsICAgICBNQVRUWVBFLCBJTlBVVFRZ
UEVfQ09OU1QsICAgTUFUVFlQRSk7ICAgXAorKyAgICBPUChJTlBVVFRZUEVfRFlOQU1JQywgICBN
QVRUWVBFLCBJTlBVVFRZUEVfQ09OU1QsICAgTUFUVFlQRSkKKysKKysjZGVmaW5lIFVOQVJZX09Q
KElOMFRZUEUsIElOMERBVEFUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfVU5BUllfUExVUywg
ICAgICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOUFVUVFlQRV9DT05TVCwgVFlQRV9MQVNUKTsg
IFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfTkVHQVRJT04sICAgICAgICAgSU4wVFlQRSwgSU4w
REFUQVRZUEUsIElOUFVUVFlQRV9DT05TVCwgVFlQRV9MQVNUKTsgIFwKKysgICAgTUFLRV9FVkFM
X0NBU0UoT1BfUFJFX0lOQ1JFTUVOVCwgICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOUFVUVFlQ
RV9DT05TVCwgVFlQRV9MQVNUKTsgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfUFJFX0RFQ1JF
TUVOVCwgICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOUFVUVFlQRV9DT05TVCwgVFlQRV9MQVNU
KTsgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfUE9TVF9JTkNSRU1FTlQsICAgSU4wVFlQRSwg
SU4wREFUQVRZUEUsIElOUFVUVFlQRV9DT05TVCwgVFlQRV9MQVNUKTsgIFwKKysgICAgTUFLRV9F
VkFMX0NBU0UoT1BfUE9TVF9ERUNSRU1FTlQsICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOUFVU
VFlQRV9DT05TVCwgVFlQRV9MQVNUKQorKworKyNkZWZpbmUgTUFLRV9VTkFSWV9DQVNFUyhPUCwg
TUFUVFlQRSkgICBcCisrICAgIE9QKElOUFVUVFlQRV9DT05TVCwgICAgIE1BVFRZUEUpOyAgIFwK
KysgICAgT1AoSU5QVVRUWVBFX0RZTkFNSUMsICAgTUFUVFlQRSkKKysKKysjZGVmaW5lIEFTU0lH
Tl9PUChJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9BRERfSU5UTywgICAg
ICAgICBJTjBUWVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpOyAgICBcCisr
ICAgIE1BS0VfRVZBTF9DQVNFKE9QX1NVQlRSQUNUX0ZST00sICAgIElOMFRZUEUsIElOMERBVEFU
WVBFLCBJTjFUWVBFLCBJTjFEQVRBVFlQRSk7ICAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1Bf
TVVMVElQTFlfSU5UTywgICAgSU4wVFlQRSwgSU4wREFUQVRZUEUsIElOMVRZUEUsIElOMURBVEFU
WVBFKTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9ESVZJREVfSU5UTywgICAgICBJTjBU
WVBFLCBJTjBEQVRBVFlQRSwgSU4xVFlQRSwgSU4xREFUQVRZUEUpCisrCisrI2RlZmluZSBNQUtF
X0FTU0lHTk1FTlRfQ0FTRVMoT1AsIE1BVFRZUEUpICAgICAgICAgICAgICAgICAgICAgIFwKKysg
ICAgT1AoSU5QVVRUWVBFX0NPTlNULCAgICAgTUFUVFlQRSwgSU5QVVRUWVBFX0NPTlNULCAgIE1B
VFRZUEUpOyAgIFwKKysgICAgT1AoSU5QVVRUWVBFX0RZTkFNSUMsICAgTUFUVFlQRSwgSU5QVVRU
WVBFX0NPTlNULCAgIE1BVFRZUEUpOyAgIFwKKysgICAgT1AoSU5QVVRUWVBFX0NPTlNULCAgICAg
TUFUVFlQRSwgSU5QVVRUWVBFX0RZTkFNSUMsIE1BVFRZUEUpOyAgIFwKKysgICAgT1AoSU5QVVRU
WVBFX0RZTkFNSUMsICAgTUFUVFlQRSwgSU5QVVRUWVBFX0RZTkFNSUMsIE1BVFRZUEUpCisrCisr
ICAgIC8vIFxub3RlIEF0IHRoZSBtb21lbnQgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVu
IHVuaWZvcm0gYW5kIGNvbnN0IGlucHV0cy4gVGhpcyBzYXZlcyBiaW5hcnkgc2l6ZS4KKysgICAg
SW5wdXRUeXBlIGluMFR5cGUgPSBpbjAuaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDID8g
SU5QVVRUWVBFX0RZTkFNSUMgOiBJTlBVVFRZUEVfQ09OU1Q7CisrICAgIElucHV0VHlwZSBpbjFU
eXBlID0gaW4xLmlucHV0VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQyA/IElOUFVUVFlQRV9EWU5B
TUlDIDogSU5QVVRUWVBFX0NPTlNUOworKworKyAgICBzd2l0Y2ggKFBBQ0tfRVZBTF9DQVNFKG9w
LCBpbjBUeXBlLCBpbjAuZGF0YVR5cGUsIGluMVR5cGUsIGluMS5kYXRhVHlwZSkpCisrICAgIHsK
KysgICAgICAgIC8vIE1hdHJpeC1zY2FsYXIuCisrICAgICAgICBNQUtFX01BVF9TQ0FMQVJfVkVD
X0NBU0VTKFNDQUxBUl9PUFMsICAgVFlQRV9GTE9BVF9NQVQyLCBUWVBFX0ZMT0FUKTsKKysgICAg
ICAgIE1BS0VfTUFUX1NDQUxBUl9WRUNfQ0FTRVMoU0NBTEFSX09QUywgICBUWVBFX0ZMT0FUX01B
VDMsIFRZUEVfRkxPQVQpOworKyAgICAgICAgTUFLRV9NQVRfU0NBTEFSX1ZFQ19DQVNFUyhTQ0FM
QVJfT1BTLCAgIFRZUEVfRkxPQVRfTUFUNCwgVFlQRV9GTE9BVCk7CisrCisrICAgICAgICAvLyBN
YXRyaXgtdmVjdG9yLgorKyAgICAgICAgTUFLRV9NQVRfU0NBTEFSX1ZFQ19DQVNFUyhNVUxfT1As
ICAgICAgIFRZUEVfRkxPQVRfTUFUMiwgVFlQRV9GTE9BVF9WRUMyKTsKKysgICAgICAgIE1BS0Vf
TUFUX1NDQUxBUl9WRUNfQ0FTRVMoTVVMX09QLCAgICAgICBUWVBFX0ZMT0FUX01BVDMsIFRZUEVf
RkxPQVRfVkVDMyk7CisrICAgICAgICBNQUtFX01BVF9TQ0FMQVJfVkVDX0NBU0VTKE1VTF9PUCwg
ICAgICAgVFlQRV9GTE9BVF9NQVQ0LCBUWVBFX0ZMT0FUX1ZFQzQpOworKworKyAgICAgICAgLy8g
VmVjdG9yLW1hdHJpeC4KKysgICAgICAgIE1BS0VfTUFUX1NDQUxBUl9WRUNfQ0FTRVMoTVVMX09Q
LCAgICAgICBUWVBFX0ZMT0FUX1ZFQzIsIFRZUEVfRkxPQVRfTUFUMik7CisrICAgICAgICBNQUtF
X01BVF9TQ0FMQVJfVkVDX0NBU0VTKE1VTF9PUCwgICAgICAgVFlQRV9GTE9BVF9WRUMzLCBUWVBF
X0ZMT0FUX01BVDMpOworKyAgICAgICAgTUFLRV9NQVRfU0NBTEFSX1ZFQ19DQVNFUyhNVUxfT1As
ICAgICAgIFRZUEVfRkxPQVRfVkVDNCwgVFlQRV9GTE9BVF9NQVQ0KTsKKysKKysgICAgICAgIC8v
IE1hdHJpeC1tYXRyaXguCisrICAgICAgICBNQUtFX01BVF9NQVRfQ0FTRVMoQUxMX09QUywgVFlQ
RV9GTE9BVF9NQVQyKTsKKysgICAgICAgIE1BS0VfTUFUX01BVF9DQVNFUyhBTExfT1BTLCBUWVBF
X0ZMT0FUX01BVDMpOworKyAgICAgICAgTUFLRV9NQVRfTUFUX0NBU0VTKEFMTF9PUFMsIFRZUEVf
RkxPQVRfTUFUNCk7CisrCisrICAgICAgICAvLyBVbmFyeSBtYXRyaXgKKysgICAgICAgIE1BS0Vf
VU5BUllfQ0FTRVMoVU5BUllfT1AsIFRZUEVfRkxPQVRfTUFUMik7CisrICAgICAgICBNQUtFX1VO
QVJZX0NBU0VTKFVOQVJZX09QLCBUWVBFX0ZMT0FUX01BVDMpOworKyAgICAgICAgTUFLRV9VTkFS
WV9DQVNFUyhVTkFSWV9PUCwgVFlQRV9GTE9BVF9NQVQ0KTsKKysKKysgICAgICAgIC8vIEFzc2ln
bm1lbnQgbWF0cml4CisrICAgICAgICBNQUtFX0FTU0lHTk1FTlRfQ0FTRVMoQVNTSUdOX09QLCBU
WVBFX0ZMT0FUX01BVDIpOworKyAgICAgICAgTUFLRV9BU1NJR05NRU5UX0NBU0VTKEFTU0lHTl9P
UCwgVFlQRV9GTE9BVF9NQVQzKTsKKysgICAgICAgIE1BS0VfQVNTSUdOTUVOVF9DQVNFUyhBU1NJ
R05fT1AsIFRZUEVfRkxPQVRfTUFUNCk7CisrCisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAg
ICAgIERFX0FTU0VSVChERV9GQUxTRSk7CisrICAgICAgICAgICAgcmV0dXJuIERFX05VTEw7Cisr
ICAgIH0KICAKLSAjZWxpZiBkZWZpbmVkKF9fdW5peF9fKQorICN1bmRlZiBQQUNLX0VWQUxfQ0FT
RQorICN1bmRlZiBNQUtFX0VWQUxfQ0FTRQorQEAgLTcwMSwzNSArNzAxLDM1IEBAIFNoYWRlckV2
YWxGdW5jIGdldEV2YWxGdW5jIChjb25zdCBTaGFkZXJJbnB1dCYgaW4wLCBjb25zdCBTaGFkZXJJ
bnB1dCYgaW4xLCBNYXRyCisgdGVtcGxhdGUgPGludCBTaXplPgorIHZvaWQgd3JpdGVWZWN0b3JD
b25zdHJ1Y3RvciAoc3RkOjpvc3RyZWFtJiBzdHIsIGNvbnN0IHRjdTo6VmVjdG9yPGZsb2F0LCBT
aXplPiYgdikKKyB7CistCXN0ciA8PCAidmVjIiA8PCBTaXplIDw8ICIoIjsKKy0JZm9yIChpbnQg
bmR4ID0gMDsgbmR4IDwgU2l6ZTsgbmR4KyspCistCXsKKy0JCWlmIChuZHggIT0gMCkKKy0JCQlz
dHIgPDwgIiwgIjsKKy0JCXN0ciA8PCBkZTo6ZmxvYXRUb1N0cmluZyh2W25keF0sIDEpOworLQl9
CistCXN0ciA8PCAiKSI7CisrICAgIHN0ciA8PCAidmVjIiA8PCBTaXplIDw8ICIoIjsKKysgICAg
Zm9yIChpbnQgbmR4ID0gMDsgbmR4IDwgU2l6ZTsgbmR4KyspCisrICAgIHsKKysgICAgICAgIGlm
IChuZHggIT0gMCkKKysgICAgICAgICAgICBzdHIgPDwgIiwgIjsKKysgICAgICAgIHN0ciA8PCBk
ZTo6ZmxvYXRUb1N0cmluZyh2W25keF0sIDEpOworKyAgICB9CisrICAgIHN0ciA8PCAiKSI7Cisg
fQogIAotKyNpZiBkZWZpbmVkKEFOR0xFX1VTRV9YMTEpICYmICFkZWZpbmVkKE1FU0FfRUdMX05P
X1gxMV9IRUFERVJTKQorIHRlbXBsYXRlIDxpbnQgQ29scywgaW50IFJvd3M+Cisgdm9pZCB3cml0
ZU1hdHJpeENvbnN0cnVjdG9yIChzdGQ6Om9zdHJlYW0mIHN0ciwgY29uc3QgdGN1OjpNYXRyaXg8
ZmxvYXQsIFJvd3MsIENvbHM+JiBtKQorIHsKKy0JaWYgKFJvd3MgPT0gQ29scykKKy0JCXN0ciA8
PCAibWF0IiA8PCBDb2xzOworLQllbHNlCistCQlzdHIgPDwgIm1hdCIgPDwgQ29scyA8PCAieCIg
PDwgUm93czsKKy0KKy0Jc3RyIDw8ICIoIjsKKy0JZm9yIChpbnQgY29sTmR4ID0gMDsgY29sTmR4
IDwgQ29sczsgY29sTmR4KyspCistCXsKKy0JCWZvciAoaW50IHJvd05keCA9IDA7IHJvd05keCA8
IFJvd3M7IHJvd05keCsrKQorLQkJeworLQkJCWlmIChyb3dOZHggPiAwIHx8IGNvbE5keCA+IDAp
CistCQkJCXN0ciA8PCAiLCAiOworLQkJCXN0ciA8PCBkZTo6ZmxvYXRUb1N0cmluZyhtKHJvd05k
eCwgY29sTmR4KSwgMSk7CistCQl9CistCX0KKy0Jc3RyIDw8ICIpIjsKKysgICAgaWYgKFJvd3Mg
PT0gQ29scykKKysgICAgICAgIHN0ciA8PCAibWF0IiA8PCBDb2xzOworKyAgICBlbHNlCisrICAg
ICAgICBzdHIgPDwgIm1hdCIgPDwgQ29scyA8PCAieCIgPDwgUm93czsKICsKLSAvKiBYMTEgKHRl
bnRhdGl2ZSkgICovCi0gI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0gI2luY2x1ZGUgPFgxMS9YdXRp
bC5oPgotQEAgLTExNiw2ICsxMjQsMTQgQEAgdHlwZWRlZiBQaXhtYXAgICBFR0xOYXRpdmVQaXht
YXBUeXBlOwotIHR5cGVkZWYgV2luZG93ICAgRUdMTmF0aXZlV2luZG93VHlwZTsKKysgICAgc3Ry
IDw8ICIoIjsKKysgICAgZm9yIChpbnQgY29sTmR4ID0gMDsgY29sTmR4IDwgQ29sczsgY29sTmR4
KyspCisrICAgIHsKKysgICAgICAgIGZvciAoaW50IHJvd05keCA9IDA7IHJvd05keCA8IFJvd3M7
IHJvd05keCsrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlmIChyb3dOZHggPiAwIHx8IGNv
bE5keCA+IDApCisrICAgICAgICAgICAgICAgIHN0ciA8PCAiLCAiOworKyAgICAgICAgICAgIHN0
ciA8PCBkZTo6ZmxvYXRUb1N0cmluZyhtKHJvd05keCwgY29sTmR4KSwgMSk7CisrICAgICAgICB9
CisrICAgIH0KKysgICAgc3RyIDw8ICIpIjsKKyB9CiAgCi0gI2Vsc2UKKyB9IC8vIE1hdHJpeENh
c2VVdGlscworQEAgLTczOSwyNiArNzM5LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBNYXRyaXhDYXNl
VXRpbHM7CisgY2xhc3MgU2hhZGVyTWF0cml4Q2FzZSA6IHB1YmxpYyBTaGFkZXJSZW5kZXJDYXNl
CisgeworIHB1YmxpYzoKKy0JCQkJCVNoYWRlck1hdHJpeENhc2UJCQkoQ29udGV4dCYgY29udGV4
dCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZGVzYywgY29uc3QgU2hhZGVySW5wdXQm
IGluMCwgY29uc3QgU2hhZGVySW5wdXQmIGluMSwgTWF0cml4T3Agb3AsIGJvb2wgaXNWZXJ0ZXhD
YXNlKTsKKy0JCQkJCX5TaGFkZXJNYXRyaXhDYXNlCQkJKHZvaWQpOworKyAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyTWF0cml4Q2FzZSAgICAgICAgICAgIChDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBkZXNjLCBjb25zdCBTaGFkZXJJbnB1dCYgaW4wLCBj
b25zdCBTaGFkZXJJbnB1dCYgaW4xLCBNYXRyaXhPcCBvcCwgYm9vbCBpc1ZlcnRleENhc2UpOwor
KyAgICAgICAgICAgICAgICAgICAgflNoYWRlck1hdHJpeENhc2UgICAgICAgICAgICh2b2lkKTsK
KyAKKy0Jdm9pZAkJCWluaXQJCQkJCQkodm9pZCk7CisrICAgIHZvaWQgICAgICAgICAgICBpbml0
ICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworIAorIHByb3RlY3RlZDoKKy0Jc3RkOjpz
dHJpbmcJCWdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24JKGNvbnN0IGdsdTo6RGF0YVR5cGUmIG1h
dFR5cGUsIGNvbnN0IGNoYXIqIHZhck5hbWUpOworLQl2b2lkCQkJc2V0dXBVbmlmb3JtcwkJCQko
aW50IHByb2dyYW1JRCwgY29uc3QgdGN1OjpWZWM0JiBjb25zdENvb3Jkcyk7CisrICAgIHN0ZDo6
c3RyaW5nICAgICBnZW5HTFNMTWF0VG9WZWMzUmVkdWN0aW9uICAgKGNvbnN0IGdsdTo6RGF0YVR5
cGUmIG1hdFR5cGUsIGNvbnN0IGNoYXIqIHZhck5hbWUpOworKyAgICB2b2lkICAgICAgICAgICAg
c2V0dXBVbmlmb3JtcyAgICAgICAgICAgICAgIChpbnQgcHJvZ3JhbUlELCBjb25zdCB0Y3U6OlZl
YzQmIGNvbnN0Q29vcmRzKTsKKyAKKyBwcml2YXRlOgorLQlTaGFkZXJJbnB1dAkJbV9pbjA7Cist
CVNoYWRlcklucHV0CQltX2luMTsKKy0JTWF0cml4T3AJCW1fb3A7CisrICAgIFNoYWRlcklucHV0
ICAgICBtX2luMDsKKysgICAgU2hhZGVySW5wdXQgICAgIG1faW4xOworKyAgICBNYXRyaXhPcCAg
ICAgICAgbV9vcDsKKyB9OworIAorIFNoYWRlck1hdHJpeENhc2U6OlNoYWRlck1hdHJpeENhc2Ug
KENvbnRleHQmIGNvbnRleHQsIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGRlc2MsIGNv
bnN0IFNoYWRlcklucHV0JiBpbjAsIGNvbnN0IFNoYWRlcklucHV0JiBpbjEsIE1hdHJpeE9wIG9w
LCBib29sIGlzVmVydGV4Q2FzZSkKKy0JOiBTaGFkZXJSZW5kZXJDYXNlCShjb250ZXh0LmdldFRl
c3RDb250ZXh0KCksIGNvbnRleHQuZ2V0UmVuZGVyQ29udGV4dCgpLCBjb250ZXh0LmdldENvbnRl
eHRJbmZvKCksIG5hbWUsIGRlc2MsIGlzVmVydGV4Q2FzZSwgZ2V0RXZhbEZ1bmMoaW4wLCBpbjEs
IG9wKSkKKy0JLCBtX2luMAkJCQkoaW4wKQorLQksIG1faW4xCQkJCShpbjEpCistCSwgbV9vcAkJ
CQkob3ApCisrICAgIDogU2hhZGVyUmVuZGVyQ2FzZSAgKGNvbnRleHQuZ2V0VGVzdENvbnRleHQo
KSwgY29udGV4dC5nZXRSZW5kZXJDb250ZXh0KCksIGNvbnRleHQuZ2V0Q29udGV4dEluZm8oKSwg
bmFtZSwgZGVzYywgaXNWZXJ0ZXhDYXNlLCBnZXRFdmFsRnVuYyhpbjAsIGluMSwgb3ApKQorKyAg
ICAsIG1faW4wICAgICAgICAgICAgIChpbjApCisrICAgICwgbV9pbjEgICAgICAgICAgICAgKGlu
MSkKKysgICAgLCBtX29wICAgICAgICAgICAgICAob3ApCisgeworIH0KKyAKK0BAIC03NjgsMzE1
ICs3NjgsMzE1IEBAIFNoYWRlck1hdHJpeENhc2U6On5TaGFkZXJNYXRyaXhDYXNlICh2b2lkKQor
IAorIHZvaWQgU2hhZGVyTWF0cml4Q2FzZTo6aW5pdCAodm9pZCkKKyB7CistCXN0ZDo6b3N0cmlu
Z3N0cmVhbQl2dHg7CistCXN0ZDo6b3N0cmluZ3N0cmVhbQlmcmFnOworLQlzdGQ6Om9zdHJpbmdz
dHJlYW0mCW9wCQkJCT0gbV9pc1ZlcnRleENhc2UgPyB2dHggOiBmcmFnOworLQorLQlib29sCQkJ
CWlzSW5EeW5NYXQwCQk9IGlzRGF0YVR5cGVNYXRyaXgobV9pbjAuZGF0YVR5cGUpICYmIG1faW4w
LmlucHV0VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQzsKKy0JYm9vbAkJCQlpc0luRHluTWF0MQkJ
PSBpc0RhdGFUeXBlTWF0cml4KG1faW4xLmRhdGFUeXBlKSAmJiBtX2luMS5pbnB1dFR5cGUgPT0g
SU5QVVRUWVBFX0RZTkFNSUM7CistCXN0cmluZwkJCQlpblZhbHVlMDsKKy0Jc3RyaW5nCQkJCWlu
VmFsdWUxOworLQlEYXRhVHlwZQkJCXJlc3VsdFR5cGUJCT0gVFlQRV9MQVNUOworLQlQcmVjaXNp
b24JCQlyZXN1bHRQcmVjCQk9IG1faW4wLnByZWNpc2lvbjsKKy0JdmVjdG9yPHN0cmluZz4JCXBh
c3NWYXJzOworLQlpbnQJCQkJCW51bUlucHV0cwkJPSAoaXNPcGVyYXRpb25CaW5hcnkobV9vcCkp
ID8gKDIpIDogKDEpOworLQorLQlzdGQ6OnN0cmluZwkJCW9wZXJhdGlvblZhbHVlMDsKKy0Jc3Rk
OjpzdHJpbmcJCQlvcGVyYXRpb25WYWx1ZTE7CistCistCURFX0FTU0VSVCghaXNJbkR5bk1hdDAg
fHwgIWlzSW5EeW5NYXQxKTsgLy8gT25seSBzaW5nbGUgZHluYW1pYyBtYXRyaXggaW5wdXQgaXMg
YWxsb3dlZC4KKy0JREVfVU5SRUYoaXNJbkR5bk1hdDAgJiYgaXNJbkR5bk1hdDEpOworLQorLQkv
LyBDb21wdXRlIHJlc3VsdCB0eXBlLgorLQlpZiAoaXNEYXRhVHlwZU1hdHJpeChtX2luMC5kYXRh
VHlwZSkgJiYgaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkpCistCXsKKy0JCURFX0FT
U0VSVChtX2luMC5kYXRhVHlwZSA9PSBtX2luMS5kYXRhVHlwZSk7CistCQlyZXN1bHRUeXBlID0g
bV9pbjAuZGF0YVR5cGU7CistCX0KKy0JZWxzZSBpZiAoZ2V0T3BlcmF0aW9uVHlwZShtX29wKSA9
PSBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUiB8fAorLQkJCSBnZXRPcGVyYXRp
b25UeXBlKG1fb3ApID09IE9QRVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUikKKy0J
eworLQkJcmVzdWx0VHlwZSA9IG1faW4wLmRhdGFUeXBlOworLQl9CistCWVsc2UKKy0JeworLQkJ
aW50CQkJbWF0TmR4CQk9IGlzRGF0YVR5cGVNYXRyaXgobV9pbjAuZGF0YVR5cGUpID8gMCA6IDE7
CistCQlEYXRhVHlwZQltYXRyaXhUeXBlCT0gbWF0TmR4ID09IDAgPyBtX2luMC5kYXRhVHlwZSA6
IG1faW4xLmRhdGFUeXBlOworLQkJRGF0YVR5cGUJb3RoZXJUeXBlCT0gbWF0TmR4ID09IDAgPyBt
X2luMS5kYXRhVHlwZSA6IG1faW4wLmRhdGFUeXBlOworLQorLQkJaWYgKG90aGVyVHlwZSA9PSBU
WVBFX0ZMT0FUKQorLQkJCXJlc3VsdFR5cGUgPSBtYXRyaXhUeXBlOworLQkJZWxzZQorLQkJewor
LQkJCURFX0FTU0VSVChpc0RhdGFUeXBlVmVjdG9yKG90aGVyVHlwZSkpOworLQkJCXJlc3VsdFR5
cGUgPSBvdGhlclR5cGU7CistCQl9CistCX0KKy0KKy0JdnR4IDw8ICJhdHRyaWJ1dGUgaGlnaHAg
dmVjNCBhX3Bvc2l0aW9uO1xuIjsKKy0JaWYgKG1faXNWZXJ0ZXhDYXNlKQorLQl7CistCQl2dHgg
PDwgInZhcnlpbmcgbWVkaXVtcCB2ZWM0IHZfY29sb3I7XG4iOworLQkJZnJhZyA8PCAidmFyeWlu
ZyBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiI7CistCX0KKy0KKy0JLy8gSW5wdXQgZGVjbGFyYXRp
b25zLgorLQlmb3IgKGludCBpbk5keCA9IDA7IGluTmR4IDwgbnVtSW5wdXRzOyBpbk5keCsrKQor
LQl7CistCQljb25zdCBTaGFkZXJJbnB1dCYJaW4JCQk9IGluTmR4ID4gMCA/IG1faW4xIDogbV9p
bjA7CistCQljb25zdCBjaGFyKgkJCXByZWNOYW1lCT0gZ2V0UHJlY2lzaW9uTmFtZShpbi5wcmVj
aXNpb24pOworLQkJY29uc3QgY2hhcioJCQl0eXBlTmFtZQk9IGdldERhdGFUeXBlTmFtZShpbi5k
YXRhVHlwZSk7CistCQlzdHJpbmcmCQkJCWluVmFsdWUJCT0gaW5OZHggPiAwID8gaW5WYWx1ZTEg
OiBpblZhbHVlMDsKKy0KKy0JCWlmIChpbi5pbnB1dFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMp
CistCQl7CistCQkJdnR4IDw8ICJhdHRyaWJ1dGUgIiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlw
ZU5hbWUgPDwgIiBhXyI7CistCistCQkJaWYgKGlzRGF0YVR5cGVNYXRyaXgoaW4uZGF0YVR5cGUp
KQorLQkJCXsKKy0JCQkJLy8gYV9tYXROLCB2X21hdE4KKy0JCQkJdnR4IDw8IHR5cGVOYW1lIDw8
ICI7XG4iOworLQkJCQlpZiAoIW1faXNWZXJ0ZXhDYXNlKQorLQkJCQl7CistCQkJCQl2dHggPDwg
InZhcnlpbmcgIiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiB2XyIgPDwgdHlw
ZU5hbWUgPDwgIjtcbiI7CistCQkJCQlmcmFnIDw8ICJ2YXJ5aW5nICIgPDwgcHJlY05hbWUgPDwg
IiAiIDw8IHR5cGVOYW1lIDw8ICIgdl8iIDw8IHR5cGVOYW1lIDw8ICI7XG4iOworLQkJCQkJcGFz
c1ZhcnMucHVzaF9iYWNrKHR5cGVOYW1lKTsKKy0JCQkJfQorLQorLQkJCQlpblZhbHVlID0gc3Ry
aW5nKG1faXNWZXJ0ZXhDYXNlID8gImFfIiA6ICJ2XyIpICsgZ2V0RGF0YVR5cGVOYW1lKGluLmRh
dGFUeXBlKTsKKy0JCQl9CistCQkJZWxzZQorLQkJCXsKKy0JCQkJLy8gYV9jb29yZHMsIHZfY29v
cmRzCistCQkJCXZ0eCA8PCAiY29vcmRzO1xuIjsKKy0JCQkJaWYgKCFtX2lzVmVydGV4Q2FzZSkK
Ky0JCQkJeworLQkJCQkJdnR4IDw8ICJ2YXJ5aW5nICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5
cGVOYW1lIDw8ICIgdl9jb29yZHM7XG4iOworLQkJCQkJZnJhZyA8PCAidmFyeWluZyAiIDw8IHBy
ZWNOYW1lIDw8ICIgIiA8PCB0eXBlTmFtZSA8PCAiIHZfY29vcmRzO1xuIjsKKy0JCQkJCXBhc3NW
YXJzLnB1c2hfYmFjaygiY29vcmRzIik7CistCQkJCX0KKy0KKy0JCQkJaW5WYWx1ZSA9IG1faXNW
ZXJ0ZXhDYXNlID8gImFfY29vcmRzIiA6ICJ2X2Nvb3JkcyI7CistCQkJfQorLQkJfQorLQkJZWxz
ZSBpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9VTklGT1JNKQorLQkJeworLQkJCW9wIDw8
ICJ1bmlmb3JtICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5cGVOYW1lIDw8ICIgdV9pbiIgPDwg
aW5OZHggPDwgIjtcbiI7CistCQkJaW5WYWx1ZSA9IHN0cmluZygidV9pbiIpICsgZGU6OnRvU3Ry
aW5nKGluTmR4KTsKKy0JCX0KKy0JCWVsc2UgaWYgKGluLmlucHV0VHlwZSA9PSBJTlBVVFRZUEVf
Q09OU1QpCistCQl7CistCQkJb3AgPDwgImNvbnN0ICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5
cGVOYW1lIDw8ICIgaW4iIDw8IGluTmR4IDw8ICIgPSAiOworLQorLQkJCS8vIEdlbmVyYXRlIGRl
Y2xhcmF0aW9uLgorLQkJCXN3aXRjaCAoaW4uZGF0YVR5cGUpCistCQkJeworLQkJCQljYXNlIFRZ
UEVfRkxPQVQ6CQlvcCA8PCBkZTo6ZmxvYXRUb1N0cmluZyhzX2NvbnN0SW5GbG9hdFtpbk5keF0s
IDEpOwkJCQkJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9WRUMyOgl3cml0ZVZlY3RvckNv
bnN0cnVjdG9yPDI+KG9wLCBzX2NvbnN0SW5WZWMyW2luTmR4XSk7CQkJCWJyZWFrOworLQkJCQlj
YXNlIFRZUEVfRkxPQVRfVkVDMzoJd3JpdGVWZWN0b3JDb25zdHJ1Y3RvcjwzPihvcCwgc19jb25z
dEluVmVjM1tpbk5keF0pOwkJCQlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FUX1ZFQzQ6CXdy
aXRlVmVjdG9yQ29uc3RydWN0b3I8ND4ob3AsIHNfY29uc3RJblZlYzRbaW5OZHhdKTsJCQkJYnJl
YWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQyOgl3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDIs
IDI+KG9wLCBNYXQyKHNfY29uc3RJbk1hdDJbaW5OZHhdKSk7CQlicmVhazsKKy0JCQkJY2FzZSBU
WVBFX0ZMT0FUX01BVDM6CXdyaXRlTWF0cml4Q29uc3RydWN0b3I8MywgMz4ob3AsIE1hdDMoc19j
b25zdEluTWF0M1tpbk5keF0pKTsJCWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUNDoJ
d3JpdGVNYXRyaXhDb25zdHJ1Y3Rvcjw0LCA0PihvcCwgTWF0NChzX2NvbnN0SW5NYXQ0W2luTmR4
XSkpOwkJYnJlYWs7CistCistCQkJCWRlZmF1bHQ6CistCQkJCQlERV9BU1NFUlQoREVfRkFMU0Up
OworLQkJCX0KKy0KKy0JCQlvcCA8PCAiO1xuIjsKKy0KKy0JCQlpblZhbHVlID0gc3RyaW5nKCJp
biIpICsgZGU6OnRvU3RyaW5nKGluTmR4KTsKKy0JCX0KKy0JfQorLQorLQl2dHggPDwgIlxuIgor
LQkJPDwgInZvaWQgbWFpbiAodm9pZClcbiIKKy0JCTw8ICJ7XG4iCistCQk8PCAiCWdsX1Bvc2l0
aW9uID0gYV9wb3NpdGlvbjtcbiI7CistCWZyYWcgPDwgIlxuIgorLQkJIDw8ICJ2b2lkIG1haW4g
KHZvaWQpXG4iCistCQkgPDwgIntcbiI7CistCistCWlmIChtX2lzVmVydGV4Q2FzZSkKKy0Jewor
LQkJZnJhZyA8PCAiCWdsX0ZyYWdDb2xvciA9IHZfY29sb3I7XG4iOworLQl9CistCWVsc2UKKy0J
eworLQkJZm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgY29weUl0ZXIgPSBwYXNz
VmFycy5iZWdpbigpOyBjb3B5SXRlciAhPSBwYXNzVmFycy5lbmQoKTsgY29weUl0ZXIrKykKKy0J
CQl2dHggPDwgIgl2XyIgPDwgKmNvcHlJdGVyIDw8ICIgPSAiIDw8ICJhXyIgPDwgKmNvcHlJdGVy
IDw8ICI7XG4iOworLQl9CistCistCS8vIE9wZXJhdGlvbi4KKy0KKy0Jc3dpdGNoIChnZXRPcGVy
YXRpb25OYXR1cmUobV9vcCkpCistCXsKKy0JCWNhc2UgT1BFUkFUSU9OTkFUVVJFX1BVUkU6Cist
CQkJREVfQVNTRVJUKGdldE9wZXJhdGlvblR5cGUobV9vcCkgIT0gT1BFUkFUSU9OVFlQRV9BU1NJ
R05NRU5UKTsKKy0KKy0JCQlvcGVyYXRpb25WYWx1ZTAgPSBpblZhbHVlMDsKKy0JCQlvcGVyYXRp
b25WYWx1ZTEgPSBpblZhbHVlMTsKKy0JCQlicmVhazsKKy0KKy0JCWNhc2UgT1BFUkFUSU9OTkFU
VVJFX01VVEFUSU5HOgorLQkJCURFX0FTU0VSVChnZXRPcGVyYXRpb25UeXBlKG1fb3ApICE9IE9Q
RVJBVElPTlRZUEVfQVNTSUdOTUVOVCk7CistCistCQkJb3AgPDwgIgkiIDw8IGdldFByZWNpc2lv
bk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8
PCAiIHRtcFZhbHVlID0gIiA8PCBpblZhbHVlMCA8PCAiO1xuIjsKKy0KKy0JCQlvcGVyYXRpb25W
YWx1ZTAgPSAidG1wVmFsdWUiOworLQkJCW9wZXJhdGlvblZhbHVlMSA9IGluVmFsdWUxOworLQkJ
CWJyZWFrOworLQorLQkJY2FzZSBPUEVSQVRJT05OQVRVUkVfQVNTSUdOTUVOVDoKKy0JCQlERV9B
U1NFUlQoZ2V0T3BlcmF0aW9uVHlwZShtX29wKSA9PSBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQp
OworLQorLQkJCW9wZXJhdGlvblZhbHVlMCA9IGluVmFsdWUwOworLQkJCW9wZXJhdGlvblZhbHVl
MSA9IGluVmFsdWUxOworLQkJCWJyZWFrOworLQorLQkJZGVmYXVsdDoKKy0JCQlERV9BU1NFUlQo
REVfRkFMU0UpOworLQl9CistCistCXN3aXRjaCAoZ2V0T3BlcmF0aW9uVHlwZShtX29wKSkKKy0J
eworLQkJY2FzZSBPUEVSQVRJT05UWVBFX0JJTkFSWV9PUEVSQVRPUjoKKy0JCQlvcCA8PCAiCSIg
PDwgZ2V0UHJlY2lzaW9uTmFtZShyZXN1bHRQcmVjKSA8PCAiICIgPDwgZ2V0RGF0YVR5cGVOYW1l
KHJlc3VsdFR5cGUpIDw8ICIgcmVzID0gIiA8PCBvcGVyYXRpb25WYWx1ZTAgPDwgIiAiIDw8IGdl
dE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgIiAiIDw8IG9wZXJhdGlvblZhbHVlMSA8PCAiO1xuIjsK
Ky0JCQlicmVhazsKKy0KKy0JCWNhc2UgT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFU
T1I6CistCQkJb3AgPDwgIgkiIDw8IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAi
IDw8IGdldERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgZ2V0T3BlcmF0
aW9uTmFtZShtX29wKSA8PCBvcGVyYXRpb25WYWx1ZTAgPDwgIjtcbiI7CistCQkJYnJlYWs7Cist
CistCQljYXNlIE9QRVJBVElPTlRZUEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUjoKKy0JCQlvcCA8
PCAiCSIgPDwgZ2V0UHJlY2lzaW9uTmFtZShyZXN1bHRQcmVjKSA8PCAiICIgPDwgZ2V0RGF0YVR5
cGVOYW1lKHJlc3VsdFR5cGUpIDw8ICIgcmVzID0gIiA8PCBvcGVyYXRpb25WYWx1ZTAgPDwgZ2V0
T3BlcmF0aW9uTmFtZShtX29wKSA8PCAiO1xuIjsKKy0JCQlicmVhazsKKy0KKy0JCWNhc2UgT1BF
UkFUSU9OVFlQRV9CSU5BUllfRlVOQ1RJT046CistCQkJb3AgPDwgIgkiIDw8IGdldFByZWNpc2lv
bk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8
PCAiIHJlcyA9ICIgPDwgZ2V0T3BlcmF0aW9uTmFtZShtX29wKSA8PCAiKCIgPDwgb3BlcmF0aW9u
VmFsdWUwIDw8ICIsICIgPDwgb3BlcmF0aW9uVmFsdWUxIDw8ICIpO1xuIjsKKy0JCQlicmVhazsK
Ky0KKy0JCWNhc2UgT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOgorLQkJCW9wIDw8ICIJIiA8PCBn
ZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVz
dWx0VHlwZSkgPDwgIiByZXMgPSAiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiO1xuIjsKKy0JCQlv
cCA8PCAiCXJlcyAiIDw8IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgIiAiIDw8IG9wZXJhdGlv
blZhbHVlMSA8PCAiO1xuIjsKKy0JCQlicmVhazsKKy0KKy0JCWRlZmF1bHQ6CistCQkJREVfQVNT
RVJUKERFX0ZBTFNFKTsKKy0JfQorLQorLQkvLyBSZWR1Y3Rpb24gdG8gdmVjMyAocmdiKS4gQ2hl
Y2sgdGhlIHVzZWQgdmFsdWUgdG9vIGlmIGl0IHdhcyBtb2RpZmllZC4KKy0Jb3AgPDwgIgkiIDw8
IChtX2lzVmVydGV4Q2FzZSA/ICJ2X2NvbG9yIiA6ICJnbF9GcmFnQ29sb3IiKSA8PCAiID0gIjsK
Ky0KKy0JaWYgKGlzT3BlcmF0aW9uVmFsdWVNb2RpZnlpbmcobV9vcCkpCistCQlvcCA8PCAidmVj
NCgiIDw8IGdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24ocmVzdWx0VHlwZSwgInJlcyIpIDw8ICIs
IDEuMCkgKyB2ZWM0KCIgPDwgZ2VuR0xTTE1hdFRvVmVjM1JlZHVjdGlvbihyZXN1bHRUeXBlLCAi
dG1wVmFsdWUiKSA8PCAiLCAwLjApO1xuIjsKKy0JZWxzZQorLQkJb3AgPDwgInZlYzQoIiA8PCBn
ZW5HTFNMTWF0VG9WZWMzUmVkdWN0aW9uKHJlc3VsdFR5cGUsICJyZXMiKSA8PCAiLCAxLjApO1xu
IjsKKy0KKy0JdnR4IDw8ICJ9XG4iOworLQlmcmFnIDw8ICJ9XG4iOworLQorLQltX3ZlcnRTaGFk
ZXJTb3VyY2UJPSB2dHguc3RyKCk7CistCW1fZnJhZ1NoYWRlclNvdXJjZQk9IGZyYWcuc3RyKCk7
CistCistCS8vIFx0b2RvIFsyMDEyLTAyLTE0IHB5cnldIENvbXB1dGUgYmV0dGVyIHZhbHVlcyBm
b3IgbWF0cml4IHRlc3RzLgorLQltX3VzZXJBdHRyaWJUcmFuc2Zvcm1zLnJlc2l6ZSg0KTsKKy0J
Zm9yIChpbnQgYXR0cmliTmR4ID0gMDsgYXR0cmliTmR4IDwgNDsgYXR0cmliTmR4KyspCistCXsK
Ky0JCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XSA9IE1hdDQoMC4wZik7CistCQlt
X3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0oKDAgKyBhdHRyaWJOZHgpICUgNCwgMCkg
PSAxLjBmOworLQkJbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCgxICsgYXR0cmli
TmR4KSAlIDQsIDEpID0gMS4wZjsKKy0JCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4
XSgoMiArIGF0dHJpYk5keCkgJSA0LCAyKSA9IDEuMGY7CistCQltX3VzZXJBdHRyaWJUcmFuc2Zv
cm1zW2F0dHJpYk5keF0oKDMgKyBhdHRyaWJOZHgpICUgNCwgMykgPSAxLjBmOworLQl9CistCist
CS8vIHByZXZlbnQgYmFkIHJlZmVyZW5jZSBjYXNlcyBzdWNoIGFzIGJsYWNrIHJlc3VsdCBpbWFn
ZXMgYnkgZmluZS10dW5pbmcgdXNlZCBtYXRyaWNlcworLQlpZiAoZ2V0T3BlcmF0aW9uVGVzdE1h
dHJpeFR5cGUobV9vcCkgIT0gVEVTVE1BVFJJWFRZUEVfREVGQVVMVCkKKy0JeworLQkJZm9yIChp
bnQgYXR0cmliTmR4ID0gMDsgYXR0cmliTmR4IDwgNDsgYXR0cmliTmR4KyspCistCQl7CistCQkJ
Zm9yIChpbnQgcm93ID0gMDsgcm93IDwgNDsgcm93KyspCistCQkJZm9yIChpbnQgY29sID0gMDsg
Y29sIDwgNDsgY29sKyspCistCQkJeworLQkJCQlzd2l0Y2ggKGdldE9wZXJhdGlvblRlc3RNYXRy
aXhUeXBlKG1fb3ApKQorLQkJCQl7CistCQkJCQljYXNlIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ6
CistCQkJCQkJbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKSA9IC1t
X3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpOworLQkJCQkJCWJyZWFr
OworLQkJCQkJY2FzZSBURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRDoKKy0JCQkJCQltX3VzZXJB
dHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpICs9IDAuM2Y7CistCQkJCQkJYnJl
YWs7CistCQkJCQljYXNlIFRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOgorLQkJCQkJCW1fdXNl
ckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XShyb3csIGNvbCkgLT0gMC4xZjsKKy0JCQkJCQli
cmVhazsKKy0KKy0JCQkJCWRlZmF1bHQ6CistCQkJCQkJREVfQVNTRVJUKERFX0ZBTFNFKTsKKy0J
CQkJCQlicmVhazsKKy0JCQkJfQorLQkJCX0KKy0JCX0KKy0JfQorLQorLQlTaGFkZXJSZW5kZXJD
YXNlOjppbml0KCk7CisrICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSAgdnR4OworKyAgICBzdGQ6Om9z
dHJpbmdzdHJlYW0gIGZyYWc7CisrICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSYgb3AgICAgICAgICAg
ICAgID0gbV9pc1ZlcnRleENhc2UgPyB2dHggOiBmcmFnOwogKwotK3R5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAqRUdMTmF0aXZlRGlzcGxheVR5cGU7Ci0rdHlwZWRlZiBraHJvbm9zX3VpbnRwdHJf
dCBFR0xOYXRpdmVQaXhtYXBUeXBlOwotK3R5cGVkZWYga2hyb25vc191aW50cHRyX3QgRUdMTmF0
aXZlV2luZG93VHlwZTsKKysgICAgYm9vbCAgICAgICAgICAgICAgICBpc0luRHluTWF0MCAgICAg
PSBpc0RhdGFUeXBlTWF0cml4KG1faW4wLmRhdGFUeXBlKSAmJiBtX2luMC5pbnB1dFR5cGUgPT0g
SU5QVVRUWVBFX0RZTkFNSUM7CisrICAgIGJvb2wgICAgICAgICAgICAgICAgaXNJbkR5bk1hdDEg
ICAgID0gaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkgJiYgbV9pbjEuaW5wdXRUeXBl
ID09IElOUFVUVFlQRV9EWU5BTUlDOworKyAgICBzdHJpbmcgICAgICAgICAgICAgIGluVmFsdWUw
OworKyAgICBzdHJpbmcgICAgICAgICAgICAgIGluVmFsdWUxOworKyAgICBEYXRhVHlwZSAgICAg
ICAgICAgIHJlc3VsdFR5cGUgICAgICA9IFRZUEVfTEFTVDsKKysgICAgUHJlY2lzaW9uICAgICAg
ICAgICByZXN1bHRQcmVjICAgICAgPSBtX2luMC5wcmVjaXNpb247CisrICAgIHZlY3RvcjxzdHJp
bmc+ICAgICAgcGFzc1ZhcnM7CisrICAgIGludCAgICAgICAgICAgICAgICAgbnVtSW5wdXRzICAg
ICAgID0gKGlzT3BlcmF0aW9uQmluYXJ5KG1fb3ApKSA/ICgyKSA6ICgxKTsKICsKLSsjZW5kaWYg
LyogQU5HTEVfVVNFX1gxMSAmJiAhTUVTQV9FR0xfTk9fWDExX0hFQURFUlMgKi8KKysgICAgc3Rk
OjpzdHJpbmcgICAgICAgICBvcGVyYXRpb25WYWx1ZTA7CisrICAgIHN0ZDo6c3RyaW5nICAgICAg
ICAgb3BlcmF0aW9uVmFsdWUxOwogKwotKyNlbHNlCi0gI2Vycm9yICJQbGF0Zm9ybSBub3QgcmVj
b2duaXplZCIKLSAjZW5kaWYKKysgICAgREVfQVNTRVJUKCFpc0luRHluTWF0MCB8fCAhaXNJbkR5
bk1hdDEpOyAvLyBPbmx5IHNpbmdsZSBkeW5hbWljIG1hdHJpeCBpbnB1dCBpcyBhbGxvd2VkLgor
KyAgICBERV9VTlJFRihpc0luRHluTWF0MCAmJiBpc0luRHluTWF0MSk7CisrCisrICAgIC8vIENv
bXB1dGUgcmVzdWx0IHR5cGUuCisrICAgIGlmIChpc0RhdGFUeXBlTWF0cml4KG1faW4wLmRhdGFU
eXBlKSAmJiBpc0RhdGFUeXBlTWF0cml4KG1faW4xLmRhdGFUeXBlKSkKKysgICAgeworKyAgICAg
ICAgREVfQVNTRVJUKG1faW4wLmRhdGFUeXBlID09IG1faW4xLmRhdGFUeXBlKTsKKysgICAgICAg
IHJlc3VsdFR5cGUgPSBtX2luMC5kYXRhVHlwZTsKKysgICAgfQorKyAgICBlbHNlIGlmIChnZXRP
cGVyYXRpb25UeXBlKG1fb3ApID09IE9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9S
IHx8CisrICAgICAgICAgICAgIGdldE9wZXJhdGlvblR5cGUobV9vcCkgPT0gT1BFUkFUSU9OVFlQ
RV9VTkFSWV9QT1NURklYX09QRVJBVE9SKQorKyAgICB7CisrICAgICAgICByZXN1bHRUeXBlID0g
bV9pbjAuZGF0YVR5cGU7CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7CisrICAgICAgICBpbnQg
ICAgICAgICBtYXROZHggICAgICA9IGlzRGF0YVR5cGVNYXRyaXgobV9pbjAuZGF0YVR5cGUpID8g
MCA6IDE7CisrICAgICAgICBEYXRhVHlwZSAgICBtYXRyaXhUeXBlICA9IG1hdE5keCA9PSAwID8g
bV9pbjAuZGF0YVR5cGUgOiBtX2luMS5kYXRhVHlwZTsKKysgICAgICAgIERhdGFUeXBlICAgIG90
aGVyVHlwZSAgID0gbWF0TmR4ID09IDAgPyBtX2luMS5kYXRhVHlwZSA6IG1faW4wLmRhdGFUeXBl
OworKworKyAgICAgICAgaWYgKG90aGVyVHlwZSA9PSBUWVBFX0ZMT0FUKQorKyAgICAgICAgICAg
IHJlc3VsdFR5cGUgPSBtYXRyaXhUeXBlOworKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAg
ICAgICAgICAgIERFX0FTU0VSVChpc0RhdGFUeXBlVmVjdG9yKG90aGVyVHlwZSkpOworKyAgICAg
ICAgICAgIHJlc3VsdFR5cGUgPSBvdGhlclR5cGU7CisrICAgICAgICB9CisrICAgIH0KKysKKysg
ICAgdnR4IDw8ICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuIjsKKysgICAgaWYg
KG1faXNWZXJ0ZXhDYXNlKQorKyAgICB7CisrICAgICAgICB2dHggPDwgInZhcnlpbmcgbWVkaXVt
cCB2ZWM0IHZfY29sb3I7XG4iOworKyAgICAgICAgZnJhZyA8PCAidmFyeWluZyBtZWRpdW1wIHZl
YzQgdl9jb2xvcjtcbiI7CisrICAgIH0KKysKKysgICAgLy8gSW5wdXQgZGVjbGFyYXRpb25zLgor
KyAgICBmb3IgKGludCBpbk5keCA9IDA7IGluTmR4IDwgbnVtSW5wdXRzOyBpbk5keCsrKQorKyAg
ICB7CisrICAgICAgICBjb25zdCBTaGFkZXJJbnB1dCYgIGluICAgICAgICAgID0gaW5OZHggPiAw
ID8gbV9pbjEgOiBtX2luMDsKKysgICAgICAgIGNvbnN0IGNoYXIqICAgICAgICAgcHJlY05hbWUg
ICAgPSBnZXRQcmVjaXNpb25OYW1lKGluLnByZWNpc2lvbik7CisrICAgICAgICBjb25zdCBjaGFy
KiAgICAgICAgIHR5cGVOYW1lICAgID0gZ2V0RGF0YVR5cGVOYW1lKGluLmRhdGFUeXBlKTsKKysg
ICAgICAgIHN0cmluZyYgICAgICAgICAgICAgaW5WYWx1ZSAgICAgPSBpbk5keCA+IDAgPyBpblZh
bHVlMSA6IGluVmFsdWUwOworKworKyAgICAgICAgaWYgKGluLmlucHV0VHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykKKysgICAgICAgIHsKKysgICAgICAgICAgICB2dHggPDwgImF0dHJpYnV0ZSAi
IDw8IHByZWNOYW1lIDw8ICIgIiA8PCB0eXBlTmFtZSA8PCAiIGFfIjsKKysKKysgICAgICAgICAg
ICBpZiAoaXNEYXRhVHlwZU1hdHJpeChpbi5kYXRhVHlwZSkpCisrICAgICAgICAgICAgeworKyAg
ICAgICAgICAgICAgICAvLyBhX21hdE4sIHZfbWF0TgorKyAgICAgICAgICAgICAgICB2dHggPDwg
dHlwZU5hbWUgPDwgIjtcbiI7CisrICAgICAgICAgICAgICAgIGlmICghbV9pc1ZlcnRleENhc2Up
CisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHZ0eCA8PCAidmFyeWlu
ZyAiIDw8IHByZWNOYW1lIDw8ICIgIiA8PCB0eXBlTmFtZSA8PCAiIHZfIiA8PCB0eXBlTmFtZSA8
PCAiO1xuIjsKKysgICAgICAgICAgICAgICAgICAgIGZyYWcgPDwgInZhcnlpbmcgIiA8PCBwcmVj
TmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiB2XyIgPDwgdHlwZU5hbWUgPDwgIjtcbiI7Cisr
ICAgICAgICAgICAgICAgICAgICBwYXNzVmFycy5wdXNoX2JhY2sodHlwZU5hbWUpOworKyAgICAg
ICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIGluVmFsdWUgPSBzdHJpbmcobV9pc1Zl
cnRleENhc2UgPyAiYV8iIDogInZfIikgKyBnZXREYXRhVHlwZU5hbWUoaW4uZGF0YVR5cGUpOwor
KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAg
ICAgICAgICAgICAvLyBhX2Nvb3Jkcywgdl9jb29yZHMKKysgICAgICAgICAgICAgICAgdnR4IDw8
ICJjb29yZHM7XG4iOworKyAgICAgICAgICAgICAgICBpZiAoIW1faXNWZXJ0ZXhDYXNlKQorKyAg
ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICB2dHggPDwgInZhcnlpbmcgIiA8
PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiB2X2Nvb3JkcztcbiI7CisrICAgICAg
ICAgICAgICAgICAgICBmcmFnIDw8ICJ2YXJ5aW5nICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5
cGVOYW1lIDw8ICIgdl9jb29yZHM7XG4iOworKyAgICAgICAgICAgICAgICAgICAgcGFzc1ZhcnMu
cHVzaF9iYWNrKCJjb29yZHMiKTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAg
ICAgICBpblZhbHVlID0gbV9pc1ZlcnRleENhc2UgPyAiYV9jb29yZHMiIDogInZfY29vcmRzIjsK
KysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmIChpbi5pbnB1dFR5
cGUgPT0gSU5QVVRUWVBFX1VOSUZPUk0pCisrICAgICAgICB7CisrICAgICAgICAgICAgb3AgPDwg
InVuaWZvcm0gIiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiB1X2luIiA8PCBp
bk5keCA8PCAiO1xuIjsKKysgICAgICAgICAgICBpblZhbHVlID0gc3RyaW5nKCJ1X2luIikgKyBk
ZTo6dG9TdHJpbmcoaW5OZHgpOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZiAoaW4uaW5w
dXRUeXBlID09IElOUFVUVFlQRV9DT05TVCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBvcCA8
PCAiY29uc3QgIiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiBpbiIgPDwgaW5O
ZHggPDwgIiA9ICI7CisrCisrICAgICAgICAgICAgLy8gR2VuZXJhdGUgZGVjbGFyYXRpb24uCisr
ICAgICAgICAgICAgc3dpdGNoIChpbi5kYXRhVHlwZSkKKysgICAgICAgICAgICB7CisrICAgICAg
ICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVDogICAgICAgIG9wIDw8IGRlOjpmbG9hdFRvU3RyaW5n
KHNfY29uc3RJbkZsb2F0W2luTmR4XSwgMSk7ICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAg
ICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9WRUMyOiAgIHdyaXRlVmVjdG9yQ29uc3RydWN0
b3I8Mj4ob3AsIHNfY29uc3RJblZlYzJbaW5OZHhdKTsgICAgICAgICAgICAgICAgYnJlYWs7Cisr
ICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9WRUMzOiAgIHdyaXRlVmVjdG9yQ29uc3Ry
dWN0b3I8Mz4ob3AsIHNfY29uc3RJblZlYzNbaW5OZHhdKTsgICAgICAgICAgICAgICAgYnJlYWs7
CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9WRUM0OiAgIHdyaXRlVmVjdG9yQ29u
c3RydWN0b3I8ND4ob3AsIHNfY29uc3RJblZlYzRbaW5OZHhdKTsgICAgICAgICAgICAgICAgYnJl
YWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQyOiAgIHdyaXRlTWF0cml4
Q29uc3RydWN0b3I8MiwgMj4ob3AsIE1hdDIoc19jb25zdEluTWF0Mltpbk5keF0pKTsgICAgICAg
YnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQzOiAgIHdyaXRlTWF0
cml4Q29uc3RydWN0b3I8MywgMz4ob3AsIE1hdDMoc19jb25zdEluTWF0M1tpbk5keF0pKTsgICAg
ICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQ0OiAgIHdyaXRl
TWF0cml4Q29uc3RydWN0b3I8NCwgND4ob3AsIE1hdDQoc19jb25zdEluTWF0NFtpbk5keF0pKTsg
ICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAg
ICAgICAgICBERV9BU1NFUlQoREVfRkFMU0UpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAg
ICAgICBvcCA8PCAiO1xuIjsKKysKKysgICAgICAgICAgICBpblZhbHVlID0gc3RyaW5nKCJpbiIp
ICsgZGU6OnRvU3RyaW5nKGluTmR4KTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICB2dHgg
PDwgIlxuIgorKyAgICAgICAgPDwgInZvaWQgbWFpbiAodm9pZClcbiIKKysgICAgICAgIDw8ICJ7
XG4iCisrICAgICAgICA8PCAiICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiI7CisrICAg
IGZyYWcgPDwgIlxuIgorKyAgICAgICAgIDw8ICJ2b2lkIG1haW4gKHZvaWQpXG4iCisrICAgICAg
ICAgPDwgIntcbiI7CisrCisrICAgIGlmIChtX2lzVmVydGV4Q2FzZSkKKysgICAgeworKyAgICAg
ICAgZnJhZyA8PCAiICAgZ2xfRnJhZ0NvbG9yID0gdl9jb2xvcjtcbiI7CisrICAgIH0KKysgICAg
ZWxzZQorKyAgICB7CisrICAgICAgICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciBjb3B5SXRlciA9IHBhc3NWYXJzLmJlZ2luKCk7IGNvcHlJdGVyICE9IHBhc3NWYXJzLmVuZCgp
OyBjb3B5SXRlcisrKQorKyAgICAgICAgICAgIHZ0eCA8PCAiICAgIHZfIiA8PCAqY29weUl0ZXIg
PDwgIiA9ICIgPDwgImFfIiA8PCAqY29weUl0ZXIgPDwgIjtcbiI7CisrICAgIH0KKysKKysgICAg
Ly8gT3BlcmF0aW9uLgorKworKyAgICBzd2l0Y2ggKGdldE9wZXJhdGlvbk5hdHVyZShtX29wKSkK
KysgICAgeworKyAgICAgICAgY2FzZSBPUEVSQVRJT05OQVRVUkVfUFVSRToKKysgICAgICAgICAg
ICBERV9BU1NFUlQoZ2V0T3BlcmF0aW9uVHlwZShtX29wKSAhPSBPUEVSQVRJT05UWVBFX0FTU0lH
Tk1FTlQpOworKworKyAgICAgICAgICAgIG9wZXJhdGlvblZhbHVlMCA9IGluVmFsdWUwOworKyAg
ICAgICAgICAgIG9wZXJhdGlvblZhbHVlMSA9IGluVmFsdWUxOworKyAgICAgICAgICAgIGJyZWFr
OworKworKyAgICAgICAgY2FzZSBPUEVSQVRJT05OQVRVUkVfTVVUQVRJTkc6CisrICAgICAgICAg
ICAgREVfQVNTRVJUKGdldE9wZXJhdGlvblR5cGUobV9vcCkgIT0gT1BFUkFUSU9OVFlQRV9BU1NJ
R05NRU5UKTsKKysKKysgICAgICAgICAgICBvcCA8PCAiICIgPDwgZ2V0UHJlY2lzaW9uTmFtZShy
ZXN1bHRQcmVjKSA8PCAiICIgPDwgZ2V0RGF0YVR5cGVOYW1lKHJlc3VsdFR5cGUpIDw8ICIgdG1w
VmFsdWUgPSAiIDw8IGluVmFsdWUwIDw8ICI7XG4iOworKworKyAgICAgICAgICAgIG9wZXJhdGlv
blZhbHVlMCA9ICJ0bXBWYWx1ZSI7CisrICAgICAgICAgICAgb3BlcmF0aW9uVmFsdWUxID0gaW5W
YWx1ZTE7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlIE9QRVJBVElPTk5B
VFVSRV9BU1NJR05NRU5UOgorKyAgICAgICAgICAgIERFX0FTU0VSVChnZXRPcGVyYXRpb25UeXBl
KG1fb3ApID09IE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVCk7CisrCisrICAgICAgICAgICAgb3Bl
cmF0aW9uVmFsdWUwID0gaW5WYWx1ZTA7CisrICAgICAgICAgICAgb3BlcmF0aW9uVmFsdWUxID0g
aW5WYWx1ZTE7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBkZWZhdWx0OgorKyAg
ICAgICAgICAgIERFX0FTU0VSVChERV9GQUxTRSk7CisrICAgIH0KKysKKysgICAgc3dpdGNoIChn
ZXRPcGVyYXRpb25UeXBlKG1fb3ApKQorKyAgICB7CisrICAgICAgICBjYXNlIE9QRVJBVElPTlRZ
UEVfQklOQVJZX09QRVJBVE9SOgorKyAgICAgICAgICAgIG9wIDw8ICIgIiA8PCBnZXRQcmVjaXNp
b25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkg
PDwgIiByZXMgPSAiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiICIgPDwgZ2V0T3BlcmF0aW9uTmFt
ZShtX29wKSA8PCAiICIgPDwgb3BlcmF0aW9uVmFsdWUxIDw8ICI7XG4iOworKyAgICAgICAgICAg
IGJyZWFrOworKworKyAgICAgICAgY2FzZSBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVS
QVRPUjoKKysgICAgICAgICAgICBvcCA8PCAiICIgPDwgZ2V0UHJlY2lzaW9uTmFtZShyZXN1bHRQ
cmVjKSA8PCAiICIgPDwgZ2V0RGF0YVR5cGVOYW1lKHJlc3VsdFR5cGUpIDw8ICIgcmVzID0gIiA8
PCBnZXRPcGVyYXRpb25OYW1lKG1fb3ApIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiO1xuIjsKKysg
ICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgT1BFUkFUSU9OVFlQRV9VTkFSWV9Q
T1NURklYX09QRVJBVE9SOgorKyAgICAgICAgICAgIG9wIDw8ICIgIiA8PCBnZXRQcmVjaXNpb25O
YW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwg
IiByZXMgPSAiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCBnZXRPcGVyYXRpb25OYW1lKG1fb3ApIDw8
ICI7XG4iOworKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgY2FzZSBPUEVSQVRJT05U
WVBFX0JJTkFSWV9GVU5DVElPTjoKKysgICAgICAgICAgICBvcCA8PCAiICIgPDwgZ2V0UHJlY2lz
aW9uTmFtZShyZXN1bHRQcmVjKSA8PCAiICIgPDwgZ2V0RGF0YVR5cGVOYW1lKHJlc3VsdFR5cGUp
IDw8ICIgcmVzID0gIiA8PCBnZXRPcGVyYXRpb25OYW1lKG1fb3ApIDw8ICIoIiA8PCBvcGVyYXRp
b25WYWx1ZTAgPDwgIiwgIiA8PCBvcGVyYXRpb25WYWx1ZTEgPDwgIik7XG4iOworKyAgICAgICAg
ICAgIGJyZWFrOworKworKyAgICAgICAgY2FzZSBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ6Cisr
ICAgICAgICAgICAgb3AgPDwgIiAiIDw8IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwg
IiAiIDw8IGdldERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgb3BlcmF0
aW9uVmFsdWUwIDw8ICI7XG4iOworKyAgICAgICAgICAgIG9wIDw8ICIgcmVzICIgPDwgZ2V0T3Bl
cmF0aW9uTmFtZShtX29wKSA8PCAiICIgPDwgb3BlcmF0aW9uVmFsdWUxIDw8ICI7XG4iOworKyAg
ICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBERV9B
U1NFUlQoREVfRkFMU0UpOworKyAgICB9CisrCisrICAgIC8vIFJlZHVjdGlvbiB0byB2ZWMzIChy
Z2IpLiBDaGVjayB0aGUgdXNlZCB2YWx1ZSB0b28gaWYgaXQgd2FzIG1vZGlmaWVkLgorKyAgICBv
cCA8PCAiICIgPDwgKG1faXNWZXJ0ZXhDYXNlID8gInZfY29sb3IiIDogImdsX0ZyYWdDb2xvciIp
IDw8ICIgPSAiOworKworKyAgICBpZiAoaXNPcGVyYXRpb25WYWx1ZU1vZGlmeWluZyhtX29wKSkK
KysgICAgICAgIG9wIDw8ICJ2ZWM0KCIgPDwgZ2VuR0xTTE1hdFRvVmVjM1JlZHVjdGlvbihyZXN1
bHRUeXBlLCAicmVzIikgPDwgIiwgMS4wKSArIHZlYzQoIiA8PCBnZW5HTFNMTWF0VG9WZWMzUmVk
dWN0aW9uKHJlc3VsdFR5cGUsICJ0bXBWYWx1ZSIpIDw8ICIsIDAuMCk7XG4iOworKyAgICBlbHNl
CisrICAgICAgICBvcCA8PCAidmVjNCgiIDw8IGdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24ocmVz
dWx0VHlwZSwgInJlcyIpIDw8ICIsIDEuMCk7XG4iOworKworKyAgICB2dHggPDwgIn1cbiI7Cisr
ICAgIGZyYWcgPDwgIn1cbiI7CisrCisrICAgIG1fdmVydFNoYWRlclNvdXJjZSAgPSB2dHguc3Ry
KCk7CisrICAgIG1fZnJhZ1NoYWRlclNvdXJjZSAgPSBmcmFnLnN0cigpOworKworKyAgICAvLyBc
dG9kbyBbMjAxMi0wMi0xNCBweXJ5XSBDb21wdXRlIGJldHRlciB2YWx1ZXMgZm9yIG1hdHJpeCB0
ZXN0cy4KKysgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtcy5yZXNpemUoNCk7CisrICAgIGZvciAo
aW50IGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IDQ7IGF0dHJpYk5keCsrKQorKyAgICB7Cisr
ICAgICAgICBtX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0gPSBNYXQ0KDAuMGYpOwor
KyAgICAgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCgwICsgYXR0cmliTmR4
KSAlIDQsIDApID0gMS4wZjsKKysgICAgICAgIG1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmli
TmR4XSgoMSArIGF0dHJpYk5keCkgJSA0LCAxKSA9IDEuMGY7CisrICAgICAgICBtX3VzZXJBdHRy
aWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0oKDIgKyBhdHRyaWJOZHgpICUgNCwgMikgPSAxLjBmOwor
KyAgICAgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCgzICsgYXR0cmliTmR4
KSAlIDQsIDMpID0gMS4wZjsKKysgICAgfQorKworKyAgICAvLyBwcmV2ZW50IGJhZCByZWZlcmVu
Y2UgY2FzZXMgc3VjaCBhcyBibGFjayByZXN1bHQgaW1hZ2VzIGJ5IGZpbmUtdHVuaW5nIHVzZWQg
bWF0cmljZXMKKysgICAgaWYgKGdldE9wZXJhdGlvblRlc3RNYXRyaXhUeXBlKG1fb3ApICE9IFRF
U1RNQVRSSVhUWVBFX0RFRkFVTFQpCisrICAgIHsKKysgICAgICAgIGZvciAoaW50IGF0dHJpYk5k
eCA9IDA7IGF0dHJpYk5keCA8IDQ7IGF0dHJpYk5keCsrKQorKyAgICAgICAgeworKyAgICAgICAg
ICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IDQ7IHJvdysrKQorKyAgICAgICAgICAgIGZvciAo
aW50IGNvbCA9IDA7IGNvbCA8IDQ7IGNvbCsrKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg
ICAgICAgc3dpdGNoIChnZXRPcGVyYXRpb25UZXN0TWF0cml4VHlwZShtX29wKSkKKysgICAgICAg
ICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgY2FzZSBURVNUTUFUUklYVFlQRV9ORUdB
VEVEOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0
cmliTmR4XShyb3csIGNvbCkgPSAtbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJv
dywgY29sKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVEVTVE1BVFJJWFRZUEVfSU5DUkVNRU5URUQ6CisrICAgICAgICAgICAgICAg
ICAgICAgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKSArPSAw
LjNmOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBURVNUTUFUUklYVFlQRV9ERUNSRU1FTlRFRDoKKysgICAgICAgICAgICAgICAgICAg
ICAgICBtX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpIC09IDAuMWY7
CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorKyAgICAgICAgICAgICAgICAgICAgICAgIERFX0FTU0VSVChERV9GQUxTRSk7
CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0KKysg
ICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgU2hhZGVyUmVuZGVyQ2Fz
ZTo6aW5pdCgpOworIH0KKyAKKyBzdGQ6OnN0cmluZyBTaGFkZXJNYXRyaXhDYXNlOjpnZW5HTFNM
TWF0VG9WZWMzUmVkdWN0aW9uIChjb25zdCBnbHU6OkRhdGFUeXBlJiBtYXRUeXBlLCBjb25zdCBj
aGFyKiB2YXJOYW1lKQorIHsKKy0Jc3RkOjpvc3RyaW5nc3RyZWFtIG9wOworLQorLQlzd2l0Y2gg
KG1hdFR5cGUpCistCXsKKy0JCWNhc2UgVFlQRV9GTE9BVDoJCW9wIDw8IHZhck5hbWUgPDwgIiwg
IgkJPDwgdmFyTmFtZSA8PCAiLCAiCQkJPDwgdmFyTmFtZSA8PCAiIjsJCQkJCQkJCQkJYnJlYWs7
CistCQljYXNlIFRZUEVfRkxPQVRfVkVDMjoJb3AgPDwgdmFyTmFtZSA8PCAiLngsICIJCTw8IHZh
ck5hbWUgPDwgIi55LCAiCQk8PCB2YXJOYW1lIDw8ICIueCI7CQkJCQkJCQkJCWJyZWFrOworLQkJ
Y2FzZSBUWVBFX0ZMT0FUX1ZFQzM6CW9wIDw8IHZhck5hbWUgPDwgIiI7CQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQlicmVhazsKKy0JCWNhc2UgVFlQRV9GTE9BVF9WRUM0OglvcCA8PCB2YXJOYW1lIDw8
ICIueCwgIgkJPDwgdmFyTmFtZSA8PCAiLnksICIJCTw8IHZhck5hbWUgPDwgIi56KyIJCQk8PCB2
YXJOYW1lIDw8ICIudyI7CQkJYnJlYWs7CistCQljYXNlIFRZUEVfRkxPQVRfTUFUMjoJb3AgPDwg
dmFyTmFtZSA8PCAiWzBdWzBdLCAiCTw8IHZhck5hbWUgPDwgIlsxXVswXSwgIgk8PCB2YXJOYW1l
IDw8ICJbMF1bMV0rIgkJPDwgdmFyTmFtZSA8PCAiWzFdWzFdIjsJCWJyZWFrOworLQkJY2FzZSBU
WVBFX0ZMT0FUX01BVDM6CW9wIDw8IHZhck5hbWUgPDwgIlswXSsiCQk8PCB2YXJOYW1lIDw8ICJb
MV0rIgkJPDwgdmFyTmFtZSA8PCAiWzJdIjsJCQkJCQkJCQlicmVhazsKKy0JCWNhc2UgVFlQRV9G
TE9BVF9NQVQ0OglvcCA8PCB2YXJOYW1lIDw8ICJbMF0ueHl6KyIJPDwgdmFyTmFtZSA8PCAiWzFd
Lnl6dysiCTw8IHZhck5hbWUgPDwgIlsyXS56d3grIgk8PCB2YXJOYW1lIDw8ICJbM10ud3h5IjsJ
YnJlYWs7CistCistCQlkZWZhdWx0OgorLQkJCURFX0FTU0VSVChERV9GQUxTRSk7CistCX0KKy0K
Ky0JcmV0dXJuIG9wLnN0cigpOworKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3A7CisrCisrICAg
IHN3aXRjaCAobWF0VHlwZSkKKysgICAgeworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUOiAgICAg
ICAgb3AgPDwgdmFyTmFtZSA8PCAiLCAiICAgICAgIDw8IHZhck5hbWUgPDwgIiwgIiAgICAgICAg
ICA8PCB2YXJOYW1lIDw8ICIiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX1ZFQzI6ICAgb3AgPDwgdmFyTmFtZSA8
PCAiLngsICIgICAgIDw8IHZhck5hbWUgPDwgIi55LCAiICAgICAgICA8PCB2YXJOYW1lIDw8ICIu
eCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAg
Y2FzZSBUWVBFX0ZMT0FUX1ZFQzM6ICAgb3AgPDwgdmFyTmFtZSA8PCAiIjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX1ZF
QzQ6ICAgb3AgPDwgdmFyTmFtZSA8PCAiLngsICIgICAgIDw8IHZhck5hbWUgPDwgIi55LCAiICAg
ICAgICA8PCB2YXJOYW1lIDw8ICIueisiICAgICAgICAgPDwgdmFyTmFtZSA8PCAiLnciOyAgICAg
ICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX01BVDI6ICAgb3AgPDwgdmFyTmFt
ZSA8PCAiWzBdWzBdLCAiIDw8IHZhck5hbWUgPDwgIlsxXVswXSwgIiAgICA8PCB2YXJOYW1lIDw8
ICJbMF1bMV0rIiAgICAgPDwgdmFyTmFtZSA8PCAiWzFdWzFdIjsgICAgIGJyZWFrOworKyAgICAg
ICAgY2FzZSBUWVBFX0ZMT0FUX01BVDM6ICAgb3AgPDwgdmFyTmFtZSA8PCAiWzBdKyIgICAgIDw8
IHZhck5hbWUgPDwgIlsxXSsiICAgICAgICA8PCB2YXJOYW1lIDw8ICJbMl0iOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FU
X01BVDQ6ICAgb3AgPDwgdmFyTmFtZSA8PCAiWzBdLnh5eisiIDw8IHZhck5hbWUgPDwgIlsxXS55
encrIiAgICA8PCB2YXJOYW1lIDw8ICJbMl0uend4KyIgICAgPDwgdmFyTmFtZSA8PCAiWzNdLnd4
eSI7ICAgIGJyZWFrOworKworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBERV9BU1NF
UlQoREVfRkFMU0UpOworKyAgICB9CisrCisrICAgIHJldHVybiBvcC5zdHIoKTsKKyB9CisgCisg
dm9pZCBTaGFkZXJNYXRyaXhDYXNlOjpzZXR1cFVuaWZvcm1zIChpbnQgcHJvZ3JhbUlELCBjb25z
dCB0Y3U6OlZlYzQmIGNvbnN0Q29vcmRzKQorIHsKKy0JY29uc3QgZ2x3OjpGdW5jdGlvbnMmIGds
ID0gbV9yZW5kZXJDdHguZ2V0RnVuY3Rpb25zKCk7CistCistCURFX1VOUkVGKGNvbnN0Q29vcmRz
KTsKKy0KKy0JZm9yIChpbnQgaW5OZHggPSAwOyBpbk5keCA8IDI7IGluTmR4KyspCistCXsKKy0J
CWNvbnN0IFNoYWRlcklucHV0JiBpbiA9IGluTmR4ID4gMCA/IG1faW4xIDogbV9pbjA7CistCist
CQlpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9VTklGT1JNKQorLQkJeworLQkJCWludCBs
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCAoc3RyaW5nKCJ1X2luIikgKyBk
ZTo6dG9TdHJpbmcoaW5OZHgpKS5jX3N0cigpKTsKKy0KKy0JCQlpZiAobG9jIDwgMCkKKy0JCQkJ
Y29udGludWU7CistCistCQkJc3dpdGNoIChpbi5kYXRhVHlwZSkKKy0JCQl7CistCQkJCWNhc2Ug
VFlQRV9GTE9BVDoJCWdsLnVuaWZvcm0xZihsb2MsIHNfY29uc3RJbkZsb2F0W2luTmR4XSk7CQkJ
CQkJCQkJCQkJCWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfVkVDMjoJZ2wudW5pZm9ybTJm
dihsb2MsIDEsIHNfY29uc3RJblZlYzJbaW5OZHhdLmdldFB0cigpKTsJCQkJCQkJCQkJYnJlYWs7
CistCQkJCWNhc2UgVFlQRV9GTE9BVF9WRUMzOglnbC51bmlmb3JtM2Z2KGxvYywgMSwgc19jb25z
dEluVmVjM1tpbk5keF0uZ2V0UHRyKCkpOwkJCQkJCQkJCQlicmVhazsKKy0JCQkJY2FzZSBUWVBF
X0ZMT0FUX1ZFQzQ6CWdsLnVuaWZvcm00ZnYobG9jLCAxLCBzX2NvbnN0SW5WZWM0W2luTmR4XS5n
ZXRQdHIoKSk7CQkJCQkJCQkJCWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUMjoJZ2wu
dW5pZm9ybU1hdHJpeDJmdihsb2MsIDEsIEdMX0ZBTFNFLCBzX2NvbnN0SW5NYXQyW2luTmR4XS5n
ZXRDb2x1bW5NYWpvckRhdGEoKS5nZXRQdHIoKSk7CWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxP
QVRfTUFUMzoJZ2wudW5pZm9ybU1hdHJpeDNmdihsb2MsIDEsIEdMX0ZBTFNFLCBzX2NvbnN0SW5N
YXQzW2luTmR4XS5nZXRDb2x1bW5NYWpvckRhdGEoKS5nZXRQdHIoKSk7CWJyZWFrOworLQkJCQlj
YXNlIFRZUEVfRkxPQVRfTUFUNDoJZ2wudW5pZm9ybU1hdHJpeDRmdihsb2MsIDEsIEdMX0ZBTFNF
LCBzX2NvbnN0SW5NYXQ0W2luTmR4XS5nZXRDb2x1bW5NYWpvckRhdGEoKS5nZXRQdHIoKSk7CWJy
ZWFrOworLQkJCQlkZWZhdWx0OgorLQkJCQkJREVfQVNTRVJUKGZhbHNlKTsKKy0JCQl9CistCQl9
CistCX0KKysgICAgY29uc3QgZ2x3OjpGdW5jdGlvbnMmIGdsID0gbV9yZW5kZXJDdHguZ2V0RnVu
Y3Rpb25zKCk7CisrCisrICAgIERFX1VOUkVGKGNvbnN0Q29vcmRzKTsKKysKKysgICAgZm9yIChp
bnQgaW5OZHggPSAwOyBpbk5keCA8IDI7IGluTmR4KyspCisrICAgIHsKKysgICAgICAgIGNvbnN0
IFNoYWRlcklucHV0JiBpbiA9IGluTmR4ID4gMCA/IG1faW4xIDogbV9pbjA7CisrCisrICAgICAg
ICBpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9VTklGT1JNKQorKyAgICAgICAgeworKyAg
ICAgICAgICAgIGludCBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUlELCAoc3Ry
aW5nKCJ1X2luIikgKyBkZTo6dG9TdHJpbmcoaW5OZHgpKS5jX3N0cigpKTsKKysKKysgICAgICAg
ICAgICBpZiAobG9jIDwgMCkKKysgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAg
ICAgICAgc3dpdGNoIChpbi5kYXRhVHlwZSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg
ICAgIGNhc2UgVFlQRV9GTE9BVDogICAgICAgIGdsLnVuaWZvcm0xZihsb2MsIHNfY29uc3RJbkZs
b2F0W2luTmR4XSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9WRUMyOiAgIGds
LnVuaWZvcm0yZnYobG9jLCAxLCBzX2NvbnN0SW5WZWMyW2luTmR4XS5nZXRQdHIoKSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAg
IGNhc2UgVFlQRV9GTE9BVF9WRUMzOiAgIGdsLnVuaWZvcm0zZnYobG9jLCAxLCBzX2NvbnN0SW5W
ZWMzW2luTmR4XS5nZXRQdHIoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9WRUM0OiAgIGdsLnVu
aWZvcm00ZnYobG9jLCAxLCBzX2NvbnN0SW5WZWM0W2luTmR4XS5nZXRQdHIoKSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNh
c2UgVFlQRV9GTE9BVF9NQVQyOiAgIGdsLnVuaWZvcm1NYXRyaXgyZnYobG9jLCAxLCBHTF9GQUxT
RSwgc19jb25zdEluTWF0Mltpbk5keF0uZ2V0Q29sdW1uTWFqb3JEYXRhKCkuZ2V0UHRyKCkpOyAg
YnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQzOiAgIGdsLnVuaWZv
cm1NYXRyaXgzZnYobG9jLCAxLCBHTF9GQUxTRSwgc19jb25zdEluTWF0M1tpbk5keF0uZ2V0Q29s
dW1uTWFqb3JEYXRhKCkuZ2V0UHRyKCkpOyAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2Ug
VFlQRV9GTE9BVF9NQVQ0OiAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYobG9jLCAxLCBHTF9GQUxTRSwg
c19jb25zdEluTWF0NFtpbk5keF0uZ2V0Q29sdW1uTWFqb3JEYXRhKCkuZ2V0UHRyKCkpOyAgYnJl
YWs7CisrICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgICAgICAgICBERV9B
U1NFUlQoZmFsc2UpOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorIH0KKyAK
KyBTaGFkZXJNYXRyaXhUZXN0czo6U2hhZGVyTWF0cml4VGVzdHMgKENvbnRleHQmIGNvbnRleHQp
CistCTogVGVzdENhc2VHcm91cChjb250ZXh0LCAibWF0cml4IiwgIk1hdHJpeCBUZXN0cyIpCisr
ICAgIDogVGVzdENhc2VHcm91cChjb250ZXh0LCAibWF0cml4IiwgIk1hdHJpeCBUZXN0cyIpCisg
eworIH0KKyAKK0BAIC0xMDg2LDEzNiArMTA4NiwxMzYgQEAgU2hhZGVyTWF0cml4VGVzdHM6On5T
aGFkZXJNYXRyaXhUZXN0cyAodm9pZCkKKyAKKyB2b2lkIFNoYWRlck1hdHJpeFRlc3RzOjppbml0
ICh2b2lkKQorIHsKKy0Jc3RhdGljIGNvbnN0IHN0cnVjdAorLQl7CistCQljb25zdCBjaGFyKgkJ
bmFtZTsKKy0JCWNvbnN0IGNoYXIqCQlkZXNjOworLQkJTWF0cml4T3AJCW9wOworLQkJYm9vbAkJ
CWV4dGVuZGVkSW5wdXRUeXBlQ2FzZXM7IC8vICE8IHRlc3Qgd2l0aCBjb25zdCBhbmQgdW5pZm9y
bSB0eXBlcyB0b28KKy0JfSBvcHNbXSA9CistCXsKKy0JCXsgImFkZCIsCQkJIk1hdHJpeCBhZGRp
dGlvbiB0ZXN0cyIsCQkJCQkJT1BfQURELAkJCQl0cnVlCX0sCistCQl7ICJzdWIiLAkJCSJNYXRy
aXggc3VidHJhY3Rpb24gdGVzdHMiLAkJCQkJCU9QX1NVQiwJCQkJdHJ1ZQl9LAorLQkJeyAibXVs
IiwJCQkiTWF0cml4IG11bHRpcGxpY2F0aW9uIHRlc3RzIiwJCQkJCU9QX01VTCwJCQkJdHJ1ZQl9
LAorLQkJeyAiZGl2IiwJCQkiTWF0cml4IGRpdmlzaW9uIHRlc3RzIiwJCQkJCQlPUF9ESVYsCQkJ
CXRydWUJfSwKKy0JCXsgIm1hdHJpeGNvbXBtdWx0IiwJIk1hdHJpeCBjb21wb25lbnQtd2lzZSBt
dWx0aXBsaWNhdGlvbiB0ZXN0cyIsCU9QX0NPTVBfTVVMLAkJZmFsc2UJfSwKKy0JCXsgInVuYXJ5
X2FkZGl0aW9uIiwJIk1hdHJpeCB1bmFyeSBhZGRpdGlvbiB0ZXN0cyIsCQkJCQlPUF9VTkFSWV9Q
TFVTLAkJZmFsc2UJfSwKKy0JCXsgIm5lZ2F0aW9uIiwJCSJNYXRyaXggbmVnYXRpb24gdGVzdHMi
LAkJCQkJCU9QX05FR0FUSU9OLAkJZmFsc2UJfSwKKy0JCXsgInByZV9pbmNyZW1lbnQiLAkiTWF0
cml4IHByZWZpeCBpbmNyZW1lbnQgdGVzdHMiLAkJCQlPUF9QUkVfSU5DUkVNRU5ULAlmYWxzZQl9
LAorLQkJeyAicHJlX2RlY3JlbWVudCIsCSJNYXRyaXggcHJlZml4IGRlY3JlbWVudCB0ZXN0cyIs
CQkJCU9QX1BSRV9ERUNSRU1FTlQsCWZhbHNlCX0sCistCQl7ICJwb3N0X2luY3JlbWVudCIsCSJN
YXRyaXggcG9zdGZpeCBpbmNyZW1lbnQgdGVzdHMiLAkJCQlPUF9QT1NUX0lOQ1JFTUVOVCwJZmFs
c2UJfSwKKy0JCXsgInBvc3RfZGVjcmVtZW50IiwJIk1hdHJpeCBwb3N0Zml4IGRlY3JlbWVudCB0
ZXN0cyIsCQkJCU9QX1BPU1RfREVDUkVNRU5ULAlmYWxzZQl9LAorLQkJeyAiYWRkX2Fzc2lnbiIs
CQkiTWF0cml4IGFkZCBpbnRvIHRlc3RzIiwJCQkJCQlPUF9BRERfSU5UTywJCWZhbHNlCX0sCist
CQl7ICJzdWJfYXNzaWduIiwJCSJNYXRyaXggc3VidHJhY3QgZnJvbSB0ZXN0cyIsCQkJCQlPUF9T
VUJUUkFDVF9GUk9NLAlmYWxzZQl9LAorLQkJeyAibXVsX2Fzc2lnbiIsCQkiTWF0cml4IG11bHRp
cGx5IGludG8gdGVzdHMiLAkJCQkJT1BfTVVMVElQTFlfSU5UTywJZmFsc2UJfSwKKy0JCXsgImRp
dl9hc3NpZ24iLAkJIk1hdHJpeCBkaXZpZGUgaW50byB0ZXN0cyIsCQkJCQkJT1BfRElWSURFX0lO
VE8sCQlmYWxzZQl9LAorLQl9OworLQorLQlzdHJ1Y3QgSW5wdXRUeXBlU3BlYworLQl7CistCQlj
b25zdCBjaGFyKgkJbmFtZTsKKy0JCWNvbnN0IGNoYXIqCQlkZXNjOworLQkJSW5wdXRUeXBlCQl0
eXBlOworLQl9OworLQlzdGF0aWMgY29uc3QgSW5wdXRUeXBlU3BlYyBleHRlbmRlZElucHV0VHlw
ZXNbXSA9CistCXsKKy0JCXsgImNvbnN0IiwJCSJDb25zdGFudCBtYXRyaXggaW5wdXQiLAlJTlBV
VFRZUEVfQ09OU1QJCX0sCistCQl7ICJ1bmlmb3JtIiwJIlVuaWZvcm0gbWF0cml4IGlucHV0IiwJ
CUlOUFVUVFlQRV9VTklGT1JNCX0sCistCQl7ICJkeW5hbWljIiwJIkR5bmFtaWMgbWF0cml4IGlu
cHV0IiwJCUlOUFVUVFlQRV9EWU5BTUlDCX0KKy0JfTsKKy0Jc3RhdGljIGNvbnN0IElucHV0VHlw
ZVNwZWMgcmVkdWNlZElucHV0VHlwZXNbXSA9CistCXsKKy0JCXsgImR5bmFtaWMiLAkiRHluYW1p
YyBtYXRyaXggaW5wdXQiLAkJSU5QVVRUWVBFX0RZTkFNSUMJfQorLQl9OworLQorLQlzdGF0aWMg
Y29uc3QgRGF0YVR5cGUgbWF0cml4VHlwZXNbXSA9CistCXsKKy0JCVRZUEVfRkxPQVRfTUFUMiwK
Ky0JCVRZUEVfRkxPQVRfTUFUMywKKy0JCVRZUEVfRkxPQVRfTUFUNAorLQl9OworLQorLQlzdGF0
aWMgY29uc3QgUHJlY2lzaW9uIHByZWNpc2lvbnNbXSA9CistCXsKKy0JCVBSRUNJU0lPTl9MT1dQ
LAorLQkJUFJFQ0lTSU9OX01FRElVTVAsCistCQlQUkVDSVNJT05fSElHSFAKKy0JfTsKKy0KKy0J
Zm9yIChpbnQgb3BOZHggPSAwOyBvcE5keCA8IERFX0xFTkdUSF9PRl9BUlJBWShvcHMpOyBvcE5k
eCsrKQorLQl7CistCQljb25zdCBJbnB1dFR5cGVTcGVjKglpblR5cGVMaXN0CQk9IChvcHNbb3BO
ZHhdLmV4dGVuZGVkSW5wdXRUeXBlQ2FzZXMpID8gKGV4dGVuZGVkSW5wdXRUeXBlcykgOiAocmVk
dWNlZElucHV0VHlwZXMpOworLQkJY29uc3QgaW50CQkJCWluVHlwZUxpc3RTaXplCT0gKG9wc1tv
cE5keF0uZXh0ZW5kZWRJbnB1dFR5cGVDYXNlcykgPyAoREVfTEVOR1RIX09GX0FSUkFZKGV4dGVu
ZGVkSW5wdXRUeXBlcykpIDogKERFX0xFTkdUSF9PRl9BUlJBWShyZWR1Y2VkSW5wdXRUeXBlcykp
OworLQkJY29uc3QgTWF0cml4T3AJCQlvcAkJCQk9IG9wc1tvcE5keF0ub3A7CistCQl0Y3U6OlRl
c3RDYXNlR3JvdXAqCQlvcEdyb3VwCQkJPSBuZXcgdGN1OjpUZXN0Q2FzZUdyb3VwKG1fdGVzdEN0
eCwgb3BzW29wTmR4XS5uYW1lLCBvcHNbb3BOZHhdLmRlc2MpOworLQorLQkJYWRkQ2hpbGQob3BH
cm91cCk7CistCistCQlmb3IgKGludCBpblR5cGVOZHggPSAwOyBpblR5cGVOZHggPCBpblR5cGVM
aXN0U2l6ZTsgaW5UeXBlTmR4KyspCistCQl7CistCQkJY29uc3QgSW5wdXRUeXBlCQlpbnB1dFR5
cGUJPSBpblR5cGVMaXN0W2luVHlwZU5keF0udHlwZTsKKy0KKy0JCQlmb3IgKGludCBtYXRUeXBl
TmR4ID0gMDsgbWF0VHlwZU5keCA8IERFX0xFTkdUSF9PRl9BUlJBWShtYXRyaXhUeXBlcyk7IG1h
dFR5cGVOZHgrKykKKy0JCQl7CistCQkJCURhdGFUeXBlCW1hdFR5cGUJCT0gbWF0cml4VHlwZXNb
bWF0VHlwZU5keF07CistCQkJCWNvbnN0IGNoYXIqCW1hdFR5cGVOYW1lCT0gZ2V0RGF0YVR5cGVO
YW1lKG1hdFR5cGUpOworLQorLQkJCQlmb3IgKGludCBwcmVjTmR4ID0gMDsgcHJlY05keCA8IERF
X0xFTkdUSF9PRl9BUlJBWShwcmVjaXNpb25zKTsgcHJlY05keCsrKQorLQkJCQl7CistCQkJCQlQ
cmVjaXNpb24JcHJlY2lzaW9uCT0gcHJlY2lzaW9uc1twcmVjTmR4XTsKKy0JCQkJCWNvbnN0IGNo
YXIqCXByZWNOYW1lCT0gZ2V0UHJlY2lzaW9uTmFtZShwcmVjaXNpb24pOworLQkJCQkJc3RyaW5n
CQliYXNlTmFtZQk9IHN0cmluZyhpblR5cGVMaXN0W2luVHlwZU5keF0ubmFtZSkgKyAiXyIgKyBw
cmVjTmFtZSArICJfIiArIG1hdFR5cGVOYW1lICsgIl8iOworLQkJCQkJU2hhZGVySW5wdXQJbWF0
SW4JCShpbnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CistCistCQkJCQlpZiAoaXNPcGVy
YXRpb25NYXRyaXhTY2FsYXIob3ApKQorLQkJCQkJeworLQkJCQkJCS8vIE1hdHJpeC1zY2FsYXIg
XG5vdGUgRm9yIGRpdiBjYXNlcyB3ZSB1c2UgdW5pZm9ybSBpbnB1dC4KKy0JCQkJCQlTaGFkZXJJ
bnB1dCBzY2FsYXJJbihvcCA9PSBPUF9ESVYgPyBJTlBVVFRZUEVfVU5JRk9STSA6IElOUFVUVFlQ
RV9EWU5BTUlDLCBUWVBFX0ZMT0FULCBwcmVjaXNpb24pOworLQkJCQkJCW9wR3JvdXAtPmFkZENo
aWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJhc2VOYW1lICsgImZsb2F0X3Zl
cnRleCIpLmNfc3RyKCksCQkiTWF0cml4LXNjYWxhciBjYXNlIiwgbWF0SW4sIHNjYWxhckluLCBv
cCwgdHJ1ZSkpOworLQkJCQkJCW9wR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNl
KG1fY29udGV4dCwgKGJhc2VOYW1lICsgImZsb2F0X2ZyYWdtZW50IikuY19zdHIoKSwJIk1hdHJp
eC1zY2FsYXIgY2FzZSIsIG1hdEluLCBzY2FsYXJJbiwgb3AsIGZhbHNlKSk7CistCQkJCQl9Cist
CistCQkJCQlpZiAoaXNPcGVyYXRpb25NYXRyaXhWZWN0b3Iob3ApKQorLQkJCQkJeworLQkJCQkJ
CS8vIE1hdHJpeC12ZWN0b3IuCistCQkJCQkJRGF0YVR5cGUJdmVjVHlwZQk9IGdldERhdGFUeXBl
RmxvYXRWZWMoZ2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5zKG1hdFR5cGUpKTsKKy0JCQkJCQlT
aGFkZXJJbnB1dCB2ZWNJbgkob3AgPT0gT1BfRElWID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBJTlBV
VFRZUEVfRFlOQU1JQywgdmVjVHlwZSwgcHJlY2lzaW9uKTsKKy0KKy0JCQkJCQlvcEdyb3VwLT5h
ZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArIGdldERh
dGFUeXBlTmFtZSh2ZWNUeXBlKSArICJfdmVydGV4IikuY19zdHIoKSwJIk1hdHJpeC12ZWN0b3Ig
Y2FzZSIsIG1hdEluLCB2ZWNJbiwgb3AsIHRydWUpKTsKKy0JCQkJCQlvcEdyb3VwLT5hZGRDaGls
ZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArIGdldERhdGFUeXBl
TmFtZSh2ZWNUeXBlKSArICJfZnJhZ21lbnQiKS5jX3N0cigpLAkiTWF0cml4LXZlY3RvciBjYXNl
IiwgbWF0SW4sIHZlY0luLCBvcCwgZmFsc2UpKTsKKy0KKy0JCQkJCQkvLyBWZWN0b3ItbWF0cml4
LgorLQkJCQkJCXN0cmluZyB2ZWNNYXROYW1lID0gc3RyaW5nKGluVHlwZUxpc3RbaW5UeXBlTmR4
XS5uYW1lKSArICJfIiArIHByZWNOYW1lICsgIl8iICsgZ2V0RGF0YVR5cGVOYW1lKHZlY1R5cGUp
ICsgIl8iICsgbWF0VHlwZU5hbWU7CistCQkJCQkJb3BHcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRl
ck1hdHJpeENhc2UobV9jb250ZXh0LCAodmVjTWF0TmFtZSArICJfdmVydGV4IikuY19zdHIoKSwJ
CSJWZWN0b3ItbWF0cml4IGNhc2UiLCB2ZWNJbiwgbWF0SW4sIG9wLCB0cnVlKSk7CistCQkJCQkJ
b3BHcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAodmVjTWF0
TmFtZSArICJfZnJhZ21lbnQiKS5jX3N0cigpLAkiVmVjdG9yLW1hdHJpeCBjYXNlIiwgdmVjSW4s
IG1hdEluLCBvcCwgZmFsc2UpKTsKKy0JCQkJCX0KKy0KKy0JCQkJCWlmIChpc09wZXJhdGlvbk1h
dHJpeE1hdHJpeChvcCkpCistCQkJCQl7CistCQkJCQkJLy8gTWF0cml4LW1hdHJpeC4KKy0JCQkJ
CQlTaGFkZXJJbnB1dCBvdGhlck1hdEluKGlucHV0VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQyA/
IElOUFVUVFlQRV9VTklGT1JNIDogaW5wdXRUeXBlLCBtYXRUeXBlLCBwcmVjaXNpb24pOworLQkJ
CQkJCW9wR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJh
c2VOYW1lICsgbWF0VHlwZU5hbWUgKyAiX3ZlcnRleCIpLmNfc3RyKCksCQkiTWF0cml4LW1hdHJp
eCBjYXNlIiwgbWF0SW4sIG90aGVyTWF0SW4sIG9wLCB0cnVlKSk7CistCQkJCQkJb3BHcm91cC0+
YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyBtYXRU
eXBlTmFtZSArICJfZnJhZ21lbnQiKS5jX3N0cigpLAkiTWF0cml4LW1hdHJpeCBjYXNlIiwgbWF0
SW4sIG90aGVyTWF0SW4sIG9wLCBmYWxzZSkpOworLQkJCQkJfQorLQorLQkJCQkJaWYgKGlzT3Bl
cmF0aW9uVW5hcnkob3ApKQorLQkJCQkJeworLQkJCQkJCS8vIG9wIG1hdHJpeAorLQkJCQkJCVNo
YWRlcklucHV0IHZvaWRJbnB1dChJTlBVVFRZUEVfTEFTVCwgVFlQRV9MQVNULCBQUkVDSVNJT05f
TEFTVCk7CistCQkJCQkJb3BHcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9j
b250ZXh0LCAoYmFzZU5hbWUgKyAidmVydGV4IikuY19zdHIoKSwJCSJNYXRyaXggY2FzZSIsIG1h
dEluLCB2b2lkSW5wdXQsIG9wLCB0cnVlKSk7CistCQkJCQkJb3BHcm91cC0+YWRkQ2hpbGQobmV3
IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZnJhZ21lbnQiKS5jX3N0
cigpLAkiTWF0cml4IGNhc2UiLCBtYXRJbiwgdm9pZElucHV0LCBvcCwgZmFsc2UpKTsKKy0JCQkJ
CX0KKy0KKy0JCQkJCWlmIChpc09wZXJhdGlvbkFzc2lnbm1lbnQob3ApKQorLQkJCQkJeworLQkJ
CQkJCVNoYWRlcklucHV0IG90aGVyTWF0SW4oaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
ID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBpbnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7Cist
CQkJCQkJb3BHcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAo
YmFzZU5hbWUgKyAidmVydGV4IikuY19zdHIoKSwJCSJNYXRyaXggYXNzaWdubWVudCBjYXNlIiwg
bWF0SW4sIG90aGVyTWF0SW4sIG9wLCB0cnVlKSk7CistCQkJCQkJb3BHcm91cC0+YWRkQ2hpbGQo
bmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZnJhZ21lbnQiKS5j
X3N0cigpLAkiTWF0cml4IGFzc2lnbm1lbnQgY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwg
ZmFsc2UpKTsKKy0JCQkJCX0KKy0JCQkJfQorLQkJCX0KKy0JCX0KKy0JfQorKyAgICBzdGF0aWMg
Y29uc3Qgc3RydWN0CisrICAgIHsKKysgICAgICAgIGNvbnN0IGNoYXIqICAgICBuYW1lOworKyAg
ICAgICAgY29uc3QgY2hhciogICAgIGRlc2M7CisrICAgICAgICBNYXRyaXhPcCAgICAgICAgb3A7
CisrICAgICAgICBib29sICAgICAgICAgICAgZXh0ZW5kZWRJbnB1dFR5cGVDYXNlczsgLy8gITwg
dGVzdCB3aXRoIGNvbnN0IGFuZCB1bmlmb3JtIHR5cGVzIHRvbworKyAgICB9IG9wc1tdID0KKysg
ICAgeworKyAgICAgICAgeyAiYWRkIiwgICAgICAgICAgICAiTWF0cml4IGFkZGl0aW9uIHRlc3Rz
IiwgICAgICAgICAgICAgICAgICAgICAgICBPUF9BREQsICAgICAgICAgICAgIHRydWUgICAgfSwK
KysgICAgICAgIHsgInN1YiIsICAgICAgICAgICAgIk1hdHJpeCBzdWJ0cmFjdGlvbiB0ZXN0cyIs
ICAgICAgICAgICAgICAgICAgICAgT1BfU1VCLCAgICAgICAgICAgICB0cnVlICAgIH0sCisrICAg
ICAgICB7ICJtdWwiLCAgICAgICAgICAgICJNYXRyaXggbXVsdGlwbGljYXRpb24gdGVzdHMiLCAg
ICAgICAgICAgICAgICAgIE9QX01VTCwgICAgICAgICAgICAgdHJ1ZSAgICB9LAorKyAgICAgICAg
eyAiZGl2IiwgICAgICAgICAgICAiTWF0cml4IGRpdmlzaW9uIHRlc3RzIiwgICAgICAgICAgICAg
ICAgICAgICAgICBPUF9ESVYsICAgICAgICAgICAgIHRydWUgICAgfSwKKysgICAgICAgIHsgIm1h
dHJpeGNvbXBtdWx0IiwgIk1hdHJpeCBjb21wb25lbnQtd2lzZSBtdWx0aXBsaWNhdGlvbiB0ZXN0
cyIsICAgT1BfQ09NUF9NVUwsICAgICAgICBmYWxzZSAgIH0sCisrICAgICAgICB7ICJ1bmFyeV9h
ZGRpdGlvbiIsICJNYXRyaXggdW5hcnkgYWRkaXRpb24gdGVzdHMiLCAgICAgICAgICAgICAgICAg
IE9QX1VOQVJZX1BMVVMsICAgICAgZmFsc2UgICB9LAorKyAgICAgICAgeyAibmVnYXRpb24iLCAg
ICAgICAiTWF0cml4IG5lZ2F0aW9uIHRlc3RzIiwgICAgICAgICAgICAgICAgICAgICAgICBPUF9O
RUdBVElPTiwgICAgICAgIGZhbHNlICAgfSwKKysgICAgICAgIHsgInByZV9pbmNyZW1lbnQiLCAg
Ik1hdHJpeCBwcmVmaXggaW5jcmVtZW50IHRlc3RzIiwgICAgICAgICAgICAgICAgT1BfUFJFX0lO
Q1JFTUVOVCwgICBmYWxzZSAgIH0sCisrICAgICAgICB7ICJwcmVfZGVjcmVtZW50IiwgICJNYXRy
aXggcHJlZml4IGRlY3JlbWVudCB0ZXN0cyIsICAgICAgICAgICAgICAgIE9QX1BSRV9ERUNSRU1F
TlQsICAgZmFsc2UgICB9LAorKyAgICAgICAgeyAicG9zdF9pbmNyZW1lbnQiLCAiTWF0cml4IHBv
c3RmaXggaW5jcmVtZW50IHRlc3RzIiwgICAgICAgICAgICAgICBPUF9QT1NUX0lOQ1JFTUVOVCwg
IGZhbHNlICAgfSwKKysgICAgICAgIHsgInBvc3RfZGVjcmVtZW50IiwgIk1hdHJpeCBwb3N0Zml4
IGRlY3JlbWVudCB0ZXN0cyIsICAgICAgICAgICAgICAgT1BfUE9TVF9ERUNSRU1FTlQsICBmYWxz
ZSAgIH0sCisrICAgICAgICB7ICJhZGRfYXNzaWduIiwgICAgICJNYXRyaXggYWRkIGludG8gdGVz
dHMiLCAgICAgICAgICAgICAgICAgICAgICAgIE9QX0FERF9JTlRPLCAgICAgICAgZmFsc2UgICB9
LAorKyAgICAgICAgeyAic3ViX2Fzc2lnbiIsICAgICAiTWF0cml4IHN1YnRyYWN0IGZyb20gdGVz
dHMiLCAgICAgICAgICAgICAgICAgICBPUF9TVUJUUkFDVF9GUk9NLCAgIGZhbHNlICAgfSwKKysg
ICAgICAgIHsgIm11bF9hc3NpZ24iLCAgICAgIk1hdHJpeCBtdWx0aXBseSBpbnRvIHRlc3RzIiwg
ICAgICAgICAgICAgICAgICAgT1BfTVVMVElQTFlfSU5UTywgICBmYWxzZSAgIH0sCisrICAgICAg
ICB7ICJkaXZfYXNzaWduIiwgICAgICJNYXRyaXggZGl2aWRlIGludG8gdGVzdHMiLCAgICAgICAg
ICAgICAgICAgICAgIE9QX0RJVklERV9JTlRPLCAgICAgZmFsc2UgICB9LAorKyAgICB9OworKwor
KyAgICBzdHJ1Y3QgSW5wdXRUeXBlU3BlYworKyAgICB7CisrICAgICAgICBjb25zdCBjaGFyKiAg
ICAgbmFtZTsKKysgICAgICAgIGNvbnN0IGNoYXIqICAgICBkZXNjOworKyAgICAgICAgSW5wdXRU
eXBlICAgICAgIHR5cGU7CisrICAgIH07CisrICAgIHN0YXRpYyBjb25zdCBJbnB1dFR5cGVTcGVj
IGV4dGVuZGVkSW5wdXRUeXBlc1tdID0KKysgICAgeworKyAgICAgICAgeyAiY29uc3QiLCAgICAg
ICJDb25zdGFudCBtYXRyaXggaW5wdXQiLCAgICBJTlBVVFRZUEVfQ09OU1QgICAgIH0sCisrICAg
ICAgICB7ICJ1bmlmb3JtIiwgICAgIlVuaWZvcm0gbWF0cml4IGlucHV0IiwgICAgIElOUFVUVFlQ
RV9VTklGT1JNICAgfSwKKysgICAgICAgIHsgImR5bmFtaWMiLCAgICAiRHluYW1pYyBtYXRyaXgg
aW5wdXQiLCAgICAgSU5QVVRUWVBFX0RZTkFNSUMgICB9CisrICAgIH07CisrICAgIHN0YXRpYyBj
b25zdCBJbnB1dFR5cGVTcGVjIHJlZHVjZWRJbnB1dFR5cGVzW10gPQorKyAgICB7CisrICAgICAg
ICB7ICJkeW5hbWljIiwgICAgIkR5bmFtaWMgbWF0cml4IGlucHV0IiwgICAgIElOUFVUVFlQRV9E
WU5BTUlDICAgfQorKyAgICB9OworKworKyAgICBzdGF0aWMgY29uc3QgRGF0YVR5cGUgbWF0cml4
VHlwZXNbXSA9CisrICAgIHsKKysgICAgICAgIFRZUEVfRkxPQVRfTUFUMiwKKysgICAgICAgIFRZ
UEVfRkxPQVRfTUFUMywKKysgICAgICAgIFRZUEVfRkxPQVRfTUFUNAorKyAgICB9OworKworKyAg
ICBzdGF0aWMgY29uc3QgUHJlY2lzaW9uIHByZWNpc2lvbnNbXSA9CisrICAgIHsKKysgICAgICAg
IFBSRUNJU0lPTl9MT1dQLAorKyAgICAgICAgUFJFQ0lTSU9OX01FRElVTVAsCisrICAgICAgICBQ
UkVDSVNJT05fSElHSFAKKysgICAgfTsKKysKKysgICAgZm9yIChpbnQgb3BOZHggPSAwOyBvcE5k
eCA8IERFX0xFTkdUSF9PRl9BUlJBWShvcHMpOyBvcE5keCsrKQorKyAgICB7CisrICAgICAgICBj
b25zdCBJbnB1dFR5cGVTcGVjKiAgICBpblR5cGVMaXN0ICAgICAgPSAob3BzW29wTmR4XS5leHRl
bmRlZElucHV0VHlwZUNhc2VzKSA/IChleHRlbmRlZElucHV0VHlwZXMpIDogKHJlZHVjZWRJbnB1
dFR5cGVzKTsKKysgICAgICAgIGNvbnN0IGludCAgICAgICAgICAgICAgIGluVHlwZUxpc3RTaXpl
ICA9IChvcHNbb3BOZHhdLmV4dGVuZGVkSW5wdXRUeXBlQ2FzZXMpID8gKERFX0xFTkdUSF9PRl9B
UlJBWShleHRlbmRlZElucHV0VHlwZXMpKSA6IChERV9MRU5HVEhfT0ZfQVJSQVkocmVkdWNlZElu
cHV0VHlwZXMpKTsKKysgICAgICAgIGNvbnN0IE1hdHJpeE9wICAgICAgICAgIG9wICAgICAgICAg
ICAgICA9IG9wc1tvcE5keF0ub3A7CisrICAgICAgICB0Y3U6OlRlc3RDYXNlR3JvdXAqICAgICBv
cEdyb3VwICAgICAgICAgPSBuZXcgdGN1OjpUZXN0Q2FzZUdyb3VwKG1fdGVzdEN0eCwgb3BzW29w
TmR4XS5uYW1lLCBvcHNbb3BOZHhdLmRlc2MpOworKworKyAgICAgICAgYWRkQ2hpbGQob3BHcm91
cCk7CisrCisrICAgICAgICBmb3IgKGludCBpblR5cGVOZHggPSAwOyBpblR5cGVOZHggPCBpblR5
cGVMaXN0U2l6ZTsgaW5UeXBlTmR4KyspCisrICAgICAgICB7CisrICAgICAgICAgICAgY29uc3Qg
SW5wdXRUeXBlICAgICBpbnB1dFR5cGUgICA9IGluVHlwZUxpc3RbaW5UeXBlTmR4XS50eXBlOwor
KworKyAgICAgICAgICAgIGZvciAoaW50IG1hdFR5cGVOZHggPSAwOyBtYXRUeXBlTmR4IDwgREVf
TEVOR1RIX09GX0FSUkFZKG1hdHJpeFR5cGVzKTsgbWF0VHlwZU5keCsrKQorKyAgICAgICAgICAg
IHsKKysgICAgICAgICAgICAgICAgRGF0YVR5cGUgICAgbWF0VHlwZSAgICAgPSBtYXRyaXhUeXBl
c1ttYXRUeXBlTmR4XTsKKysgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWF0VHlwZU5hbWUg
PSBnZXREYXRhVHlwZU5hbWUobWF0VHlwZSk7CisrCisrICAgICAgICAgICAgICAgIGZvciAoaW50
IHByZWNOZHggPSAwOyBwcmVjTmR4IDwgREVfTEVOR1RIX09GX0FSUkFZKHByZWNpc2lvbnMpOyBw
cmVjTmR4KyspCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIFByZWNp
c2lvbiAgIHByZWNpc2lvbiAgID0gcHJlY2lzaW9uc1twcmVjTmR4XTsKKysgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHByZWNOYW1lICAgID0gZ2V0UHJlY2lzaW9uTmFtZShwcmVjaXNp
b24pOworKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgYmFzZU5hbWUgICAgPSBzdHJp
bmcoaW5UeXBlTGlzdFtpblR5cGVOZHhdLm5hbWUpICsgIl8iICsgcHJlY05hbWUgKyAiXyIgKyBt
YXRUeXBlTmFtZSArICJfIjsKKysgICAgICAgICAgICAgICAgICAgIFNoYWRlcklucHV0IG1hdElu
ICAgICAgIChpbnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CisrCisrICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNPcGVyYXRpb25NYXRyaXhTY2FsYXIob3ApKQorKyAgICAgICAgICAgICAg
ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdHJpeC1zY2FsYXIgXG5vdGUg
Rm9yIGRpdiBjYXNlcyB3ZSB1c2UgdW5pZm9ybSBpbnB1dC4KKysgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJJbnB1dCBzY2FsYXJJbihvcCA9PSBPUF9ESVYgPyBJTlBVVFRZUEVfVU5JRk9S
TSA6IElOUFVUVFlQRV9EWU5BTUlDLCBUWVBFX0ZMT0FULCBwcmVjaXNpb24pOworKyAgICAgICAg
ICAgICAgICAgICAgICAgIG9wR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1f
Y29udGV4dCwgKGJhc2VOYW1lICsgImZsb2F0X3ZlcnRleCIpLmNfc3RyKCksICAgICAgIk1hdHJp
eC1zY2FsYXIgY2FzZSIsIG1hdEluLCBzY2FsYXJJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAg
ICAgICAgICAgICAgICBvcEdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2Nv
bnRleHQsIChiYXNlTmFtZSArICJmbG9hdF9mcmFnbWVudCIpLmNfc3RyKCksICAgICJNYXRyaXgt
c2NhbGFyIGNhc2UiLCBtYXRJbiwgc2NhbGFySW4sIG9wLCBmYWxzZSkpOworKyAgICAgICAgICAg
ICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlcmF0aW9uTWF0cml4
VmVjdG9yKG9wKSkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBNYXRyaXgtdmVjdG9yLgorKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGFUeXBl
ICAgIHZlY1R5cGUgPSBnZXREYXRhVHlwZUZsb2F0VmVjKGdldERhdGFUeXBlTWF0cml4TnVtQ29s
dW1ucyhtYXRUeXBlKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW5wdXQgdmVj
SW4gICAob3AgPT0gT1BfRElWID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBJTlBVVFRZUEVfRFlOQU1J
QywgdmVjVHlwZSwgcHJlY2lzaW9uKTsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBvcEdy
b3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSAr
IGdldERhdGFUeXBlTmFtZSh2ZWNUeXBlKSArICJfdmVydGV4IikuY19zdHIoKSwgICAgIk1hdHJp
eC12ZWN0b3IgY2FzZSIsIG1hdEluLCB2ZWNJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAgICAg
ICAgICAgICAgICBvcEdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRl
eHQsIChiYXNlTmFtZSArIGdldERhdGFUeXBlTmFtZSh2ZWNUeXBlKSArICJfZnJhZ21lbnQiKS5j
X3N0cigpLCAgIk1hdHJpeC12ZWN0b3IgY2FzZSIsIG1hdEluLCB2ZWNJbiwgb3AsIGZhbHNlKSk7
CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVjdG9yLW1hdHJpeC4KKysgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJpbmcgdmVjTWF0TmFtZSA9IHN0cmluZyhpblR5cGVMaXN0W2lu
VHlwZU5keF0ubmFtZSkgKyAiXyIgKyBwcmVjTmFtZSArICJfIiArIGdldERhdGFUeXBlTmFtZSh2
ZWNUeXBlKSArICJfIiArIG1hdFR5cGVOYW1lOworKyAgICAgICAgICAgICAgICAgICAgICAgIG9w
R3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKHZlY01hdE5h
bWUgKyAiX3ZlcnRleCIpLmNfc3RyKCksICAgICAiVmVjdG9yLW1hdHJpeCBjYXNlIiwgdmVjSW4s
IG1hdEluLCBvcCwgdHJ1ZSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG9wR3JvdXAtPmFk
ZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKHZlY01hdE5hbWUgKyAiX2Zy
YWdtZW50IikuY19zdHIoKSwgICAiVmVjdG9yLW1hdHJpeCBjYXNlIiwgdmVjSW4sIG1hdEluLCBv
cCwgZmFsc2UpKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAg
ICAgIGlmIChpc09wZXJhdGlvbk1hdHJpeE1hdHJpeChvcCkpCisrICAgICAgICAgICAgICAgICAg
ICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWF0cml4LW1hdHJpeC4KKysgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJJbnB1dCBvdGhlck1hdEluKGlucHV0VHlwZSA9PSBJTlBV
VFRZUEVfRFlOQU1JQyA/IElOUFVUVFlQRV9VTklGT1JNIDogaW5wdXRUeXBlLCBtYXRUeXBlLCBw
cmVjaXNpb24pOworKyAgICAgICAgICAgICAgICAgICAgICAgIG9wR3JvdXAtPmFkZENoaWxkKG5l
dyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJhc2VOYW1lICsgbWF0VHlwZU5hbWUgKyAi
X3ZlcnRleCIpLmNfc3RyKCksICAgICAiTWF0cml4LW1hdHJpeCBjYXNlIiwgbWF0SW4sIG90aGVy
TWF0SW4sIG9wLCB0cnVlKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgb3BHcm91cC0+YWRk
Q2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyBtYXRUeXBl
TmFtZSArICJfZnJhZ21lbnQiKS5jX3N0cigpLCAgICJNYXRyaXgtbWF0cml4IGNhc2UiLCBtYXRJ
biwgb3RoZXJNYXRJbiwgb3AsIGZhbHNlKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisr
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVyYXRpb25VbmFyeShvcCkpCisrICAgICAgICAg
ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3AgbWF0cml4CisrICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW5wdXQgdm9pZElucHV0KElOUFVUVFlQRV9MQVNU
LCBUWVBFX0xBU1QsIFBSRUNJU0lPTl9MQVNUKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBv
cEdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFt
ZSArICJ2ZXJ0ZXgiKS5jX3N0cigpLCAgICAgICAgIk1hdHJpeCBjYXNlIiwgbWF0SW4sIHZvaWRJ
bnB1dCwgb3AsIHRydWUpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBvcEdyb3VwLT5hZGRD
aGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArICJmcmFnbWVu
dCIpLmNfc3RyKCksICAiTWF0cml4IGNhc2UiLCBtYXRJbiwgdm9pZElucHV0LCBvcCwgZmFsc2Up
KTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgICAgIGlmIChp
c09wZXJhdGlvbkFzc2lnbm1lbnQob3ApKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlcklucHV0IG90aGVyTWF0SW4oaW5wdXRUeXBlID09IElO
UFVUVFlQRV9EWU5BTUlDID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBpbnB1dFR5cGUsIG1hdFR5cGUs
IHByZWNpc2lvbik7CisrICAgICAgICAgICAgICAgICAgICAgICAgb3BHcm91cC0+YWRkQ2hpbGQo
bmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAidmVydGV4IikuY19z
dHIoKSwgICAgICAgICJNYXRyaXggYXNzaWdubWVudCBjYXNlIiwgbWF0SW4sIG90aGVyTWF0SW4s
IG9wLCB0cnVlKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgb3BHcm91cC0+YWRkQ2hpbGQo
bmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZnJhZ21lbnQiKS5j
X3N0cigpLCAgIk1hdHJpeCBhc3NpZ25tZW50IGNhc2UiLCBtYXRJbiwgb3RoZXJNYXRJbiwgb3As
IGZhbHNlKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysg
ICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgfSAvLyBGdW5jdGlvbmFs
CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9lczNmU2hhZGVyTWF0cml4VGVz
dHMuY3BwIGIvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9lczNmU2hhZGVyTWF0cml4VGVzdHMuY3Bw
CitpbmRleCBiMThmOGJhMTQuLjI1Nzg0OTgyYyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvZXMzZlNoYWRlck1hdHJpeFRlc3RzLmNwcAorKysrIGIvc3JjL3Rlc3RzL2RlcXBf
c3VwcG9ydC9lczNmU2hhZGVyTWF0cml4VGVzdHMuY3BwCitAQCAtNzcsMTI3ICs3NywxMjcgQEAg
dXNpbmcgdGN1OjpNYXQ0OworIC8vIFVuaWZvcm0gLyBjb25zdGFudCB2YWx1ZXMgZm9yIHRlc3Rz
LgorIC8vIFxub3RlIElucHV0MSBzaG91bGQgbm90IGNvbnRhaW4gMCBjb21wb25lbnRzIGFzIGl0
IGlzIHVzZWQgYXMgZGl2aXNvciBpbiBkaXYgY2FzZXMuCisgLy8gXHRvZG8gWzIwMTItMDItMTQg
cHlyeV0gTWFrZSB0aGVzZSBkeW5hbWljLgorLXN0YXRpYyBjb25zdCBmbG9hdAlzX2NvbnN0SW5G
bG9hdFsyXQk9IHsgMC41ZiwgLTAuMmYgfTsKKy1zdGF0aWMgY29uc3QgVmVjMglzX2NvbnN0SW5W
ZWMyWzJdCT0geyBWZWMyKDEuMmYsIDAuNWYpLCBWZWMyKDAuNWYsIDEuMGYpIH07Cistc3RhdGlj
IGNvbnN0IFZlYzMJc19jb25zdEluVmVjM1syXQk9IHsgVmVjMygxLjFmLCAwLjFmLCAwLjVmKSwg
VmVjMygtMC4yZiwgMC41ZiwgMC44ZikgfTsKKy1zdGF0aWMgY29uc3QgVmVjNAlzX2NvbnN0SW5W
ZWM0WzJdCT0geyBWZWM0KDEuNGYsIDAuMmYsIC0wLjVmLCAwLjdmKSwgVmVjNCgwLjJmLCAtMS4w
ZiwgMC41ZiwgMC44ZikgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgIHNfY29uc3RJbkZsb2F0WzJd
ICAgPSB7IDAuNWYsIC0wLjJmIH07Cisrc3RhdGljIGNvbnN0IFZlYzIgICBzX2NvbnN0SW5WZWMy
WzJdICAgID0geyBWZWMyKDEuMmYsIDAuNWYpLCBWZWMyKDAuNWYsIDEuMGYpIH07Cisrc3RhdGlj
IGNvbnN0IFZlYzMgICBzX2NvbnN0SW5WZWMzWzJdICAgID0geyBWZWMzKDEuMWYsIDAuMWYsIDAu
NWYpLCBWZWMzKC0wLjJmLCAwLjVmLCAwLjhmKSB9OworK3N0YXRpYyBjb25zdCBWZWM0ICAgc19j
b25zdEluVmVjNFsyXSAgICA9IHsgVmVjNCgxLjRmLCAwLjJmLCAtMC41ZiwgMC43ZiksIFZlYzQo
MC4yZiwgLTEuMGYsIDAuNWYsIDAuOGYpIH07CisgCisgc3RhdGljIGNvbnN0IGZsb2F0IHNfY29u
c3RJbk1hdDJ4MlsyXVs0XSA9CisgeworLQl7CistCQktMC4xZiwgIDEuMGYsCistCQktMC4yZiwg
IDAuMGYsCistCX0sCistCXsKKy0JCSAwLjhmLCAgMC4xZiwKKy0JCSAwLjVmLCAtMC45ZiwKKy0J
fSwKKysgICAgeworKyAgICAgICAgLTAuMWYsICAxLjBmLAorKyAgICAgICAgLTAuMmYsICAwLjBm
LAorKyAgICB9LAorKyAgICB7CisrICAgICAgICAgMC44ZiwgIDAuMWYsCisrICAgICAgICAgMC41
ZiwgLTAuOWYsCisrICAgIH0sCisgfTsKKyBzdGF0aWMgY29uc3QgZmxvYXQgc19jb25zdEluTWF0
M3gyWzJdWzZdID0KKyB7CistCXsKKy0JCSAwLjhmLCAtMC4zZiwgIDAuM2YsCistCQkgMS4wZiwg
IDEuMmYsIC0xLjJmLAorLQl9LAorLQl7CistCQkgMS4yZiwgLTEuMGYsICAwLjVmLAorLQkJLTAu
OGYsICAxLjFmLCAgMC4zZiwKKy0JfSwKKysgICAgeworKyAgICAgICAgIDAuOGYsIC0wLjNmLCAg
MC4zZiwKKysgICAgICAgICAxLjBmLCAgMS4yZiwgLTEuMmYsCisrICAgIH0sCisrICAgIHsKKysg
ICAgICAgICAxLjJmLCAtMS4wZiwgIDAuNWYsCisrICAgICAgICAtMC44ZiwgIDEuMWYsICAwLjNm
LAorKyAgICB9LAorIH07Cisgc3RhdGljIGNvbnN0IGZsb2F0IHNfY29uc3RJbk1hdDR4MlsyXVs4
XSA9CisgeworLQl7CistCQktMC4yZiwgIDAuNWYsIDAuMGYsIC0xLjBmLAorLQkJIDEuMmYsIC0w
LjVmLCAwLjNmLCAtMC45ZiwKKy0JfSwKKy0JeworLQkJMS4wZiwgIDAuMWYsIC0xLjFmLCAgMC42
ZiwKKy0JCTAuOGYsIC0xLjJmLCAtMS4xZiwgIDAuN2YsCistCX0sCisrICAgIHsKKysgICAgICAg
IC0wLjJmLCAgMC41ZiwgMC4wZiwgLTEuMGYsCisrICAgICAgICAgMS4yZiwgLTAuNWYsIDAuM2Ys
IC0wLjlmLAorKyAgICB9LAorKyAgICB7CisrICAgICAgICAxLjBmLCAgMC4xZiwgLTEuMWYsICAw
LjZmLAorKyAgICAgICAgMC44ZiwgLTEuMmYsIC0xLjFmLCAgMC43ZiwKKysgICAgfSwKKyB9Owor
IHN0YXRpYyBjb25zdCBmbG9hdCBzX2NvbnN0SW5NYXQyeDNbMl1bNl0gPQorIHsKKy0JeworLQkJ
LTAuNmYsIC0wLjFmLAorLQkJLTAuN2YsIC0xLjJmLAorLQkJLTAuMmYsICAwLjBmLAorLQl9LAor
LQl7CistCQkgMS4xZiwgIDAuNmYsCistCQkgMC44ZiwgIDEuMGYsCistCQkgMC43ZiwgIDAuMWYs
CistCX0sCisrICAgIHsKKysgICAgICAgIC0wLjZmLCAtMC4xZiwKKysgICAgICAgIC0wLjdmLCAt
MS4yZiwKKysgICAgICAgIC0wLjJmLCAgMC4wZiwKKysgICAgfSwKKysgICAgeworKyAgICAgICAg
IDEuMWYsICAwLjZmLAorKyAgICAgICAgIDAuOGYsICAxLjBmLAorKyAgICAgICAgIDAuN2YsICAw
LjFmLAorKyAgICB9LAorIH07Cisgc3RhdGljIGNvbnN0IGZsb2F0IHNfY29uc3RJbk1hdDN4M1sy
XVs5XSA9CisgeworLQl7CistCQktMC4yZiwgIDEuMWYsIDEuMmYsCistCQktMS4wZiwgIDEuMmYs
IDAuNWYsCistCQkgMC43ZiwgLTAuMmYsIDEuMGYsCistCX0sCistCXsKKy0JCS0wLjFmLCAtMC4x
ZiwgIDAuMWYsCistCQktMC4xZiwgLTAuMmYsICAxLjBmLAorLQkJLTAuNWYsICAwLjFmLCAtMC40
ZiwKKy0JfSwKKysgICAgeworKyAgICAgICAgLTAuMmYsICAxLjFmLCAxLjJmLAorKyAgICAgICAg
LTEuMGYsICAxLjJmLCAwLjVmLAorKyAgICAgICAgIDAuN2YsIC0wLjJmLCAxLjBmLAorKyAgICB9
LAorKyAgICB7CisrICAgICAgICAtMC4xZiwgLTAuMWYsICAwLjFmLAorKyAgICAgICAgLTAuMWYs
IC0wLjJmLCAgMS4wZiwKKysgICAgICAgIC0wLjVmLCAgMC4xZiwgLTAuNGYsCisrICAgIH0sCisg
fTsKKyBzdGF0aWMgY29uc3QgZmxvYXQgc19jb25zdEluTWF0NHgzWzJdWzEyXSA9CisgeworLQl7
CistCQktMC45ZiwgIDAuMGYsICAwLjZmLCAgMC4yZiwKKy0JCSAwLjlmLCAtMC4xZiwgLTAuM2Ys
IC0wLjdmLAorLQkJLTAuMWYsICAwLjFmLCAgMS4wZiwgIDAuMGYsCistCX0sCistCXsKKy0JCSAw
LjVmLCAgMC43ZiwgIDAuN2YsICAxLjJmLAorLQkJIDEuMWYsICAwLjFmLCAgMS4wZiwgLTEuMGYs
CistCQktMC4yZiwgLTAuMmYsIC0wLjNmLCAtMC41ZiwKKy0JfSwKKysgICAgeworKyAgICAgICAg
LTAuOWYsICAwLjBmLCAgMC42ZiwgIDAuMmYsCisrICAgICAgICAgMC45ZiwgLTAuMWYsIC0wLjNm
LCAtMC43ZiwKKysgICAgICAgIC0wLjFmLCAgMC4xZiwgIDEuMGYsICAwLjBmLAorKyAgICB9LAor
KyAgICB7CisrICAgICAgICAgMC41ZiwgIDAuN2YsICAwLjdmLCAgMS4yZiwKKysgICAgICAgICAx
LjFmLCAgMC4xZiwgIDEuMGYsIC0xLjBmLAorKyAgICAgICAgLTAuMmYsIC0wLjJmLCAtMC4zZiwg
LTAuNWYsCisrICAgIH0sCisgfTsKKyBzdGF0aWMgY29uc3QgZmxvYXQgc19jb25zdEluTWF0Mng0
WzJdWzhdID0KKyB7CistCXsKKy0JCS0wLjZmLCAtMS4xZiwKKy0JCS0wLjZmLCAtMC42ZiwKKy0J
CS0wLjJmLCAtMC42ZiwKKy0JCS0wLjFmLCAtMC4xZiwKKy0JfSwKKy0JeworLQkJLTEuMmYsIC0x
LjBmLAorLQkJIDAuN2YsIC0xLjBmLAorLQkJIDAuN2YsICAwLjdmLAorLQkJLTAuNGYsIC0wLjNm
LAorLQl9LAorKyAgICB7CisrICAgICAgICAtMC42ZiwgLTEuMWYsCisrICAgICAgICAtMC42Ziwg
LTAuNmYsCisrICAgICAgICAtMC4yZiwgLTAuNmYsCisrICAgICAgICAtMC4xZiwgLTAuMWYsCisr
ICAgIH0sCisrICAgIHsKKysgICAgICAgIC0xLjJmLCAtMS4wZiwKKysgICAgICAgICAwLjdmLCAt
MS4wZiwKKysgICAgICAgICAwLjdmLCAgMC43ZiwKKysgICAgICAgIC0wLjRmLCAtMC4zZiwKKysg
ICAgfSwKKyB9OworIHN0YXRpYyBjb25zdCBmbG9hdCBzX2NvbnN0SW5NYXQzeDRbMl1bMTJdID0K
KyB7CistCXsKKy0JCSAwLjZmLCAtMC40ZiwgIDEuMmYsCistCQkgMC45ZiwgIDAuOGYsICAwLjRm
LAorLQkJIDEuMWYsICAwLjNmLCAgMC41ZiwKKy0JCS0wLjJmLCAgMC4wZiwgIDEuMWYsCistCX0s
CistCXsKKy0JCS0wLjhmLCAgMS4yZiwgLTAuMmYsCistCQktMS4xZiwgLTAuOWYsIC0wLjVmLAor
LQkJLTEuMmYsICAxLjBmLCAgMS4yZiwKKy0JCSAwLjFmLCAtMC43ZiwgLTAuNWYsCistCX0sCisr
ICAgIHsKKysgICAgICAgICAwLjZmLCAtMC40ZiwgIDEuMmYsCisrICAgICAgICAgMC45ZiwgIDAu
OGYsICAwLjRmLAorKyAgICAgICAgIDEuMWYsICAwLjNmLCAgMC41ZiwKKysgICAgICAgIC0wLjJm
LCAgMC4wZiwgIDEuMWYsCisrICAgIH0sCisrICAgIHsKKysgICAgICAgIC0wLjhmLCAgMS4yZiwg
LTAuMmYsCisrICAgICAgICAtMS4xZiwgLTAuOWYsIC0wLjVmLAorKyAgICAgICAgLTEuMmYsICAx
LjBmLCAgMS4yZiwKKysgICAgICAgICAwLjFmLCAtMC43ZiwgLTAuNWYsCisrICAgIH0sCisgfTsK
KyBzdGF0aWMgY29uc3QgZmxvYXQgc19jb25zdEluTWF0NHg0WzJdWzE2XSA9CisgeworLQl7Cist
CQkgMC4zZiwgIDAuOWYsIC0wLjJmLCAgMS4wZiwKKy0JCS0wLjRmLCAtMC42ZiwgIDAuNmYsIC0x
LjBmLAorLQkJLTAuOWYsIC0wLjFmLCAgMC4zZiwgLTAuMmYsCistCQktMC4zZiwgLTAuOWYsICAx
LjBmLCAgMC4xZiwKKy0JfSwKKy0JeworLQkJIDAuNGYsIC0wLjdmLCAtMC44ZiwgIDAuN2YsCist
CQktMC40ZiwgLTAuOGYsICAwLjZmLCAtMC4zZiwKKy0JCSAwLjdmLCAtMS4wZiwgIDAuMWYsIC0w
LjNmLAorLQkJIDAuMmYsICAwLjZmLCAgMC40ZiwgLTEuMGYsCistCX0sCisrICAgIHsKKysgICAg
ICAgICAwLjNmLCAgMC45ZiwgLTAuMmYsICAxLjBmLAorKyAgICAgICAgLTAuNGYsIC0wLjZmLCAg
MC42ZiwgLTEuMGYsCisrICAgICAgICAtMC45ZiwgLTAuMWYsICAwLjNmLCAtMC4yZiwKKysgICAg
ICAgIC0wLjNmLCAtMC45ZiwgIDEuMGYsICAwLjFmLAorKyAgICB9LAorKyAgICB7CisrICAgICAg
ICAgMC40ZiwgLTAuN2YsIC0wLjhmLCAgMC43ZiwKKysgICAgICAgIC0wLjRmLCAtMC44ZiwgIDAu
NmYsIC0wLjNmLAorKyAgICAgICAgIDAuN2YsIC0xLjBmLCAgMC4xZiwgLTAuM2YsCisrICAgICAg
ICAgMC4yZiwgIDAuNmYsICAwLjRmLCAtMS4wZiwKKysgICAgfSwKKyB9OworIAorIG5hbWVzcGFj
ZSBNYXRyaXhDYXNlVXRpbHMKK0BAIC0yMDUsNDkgKzIwNSw0OSBAQCBuYW1lc3BhY2UgTWF0cml4
Q2FzZVV0aWxzCisgCisgZW51bSBJbnB1dFR5cGUKKyB7CistCUlOUFVUVFlQRV9DT05TVCA9IDAs
CistCUlOUFVUVFlQRV9VTklGT1JNLAorLQlJTlBVVFRZUEVfRFlOQU1JQywKKysgICAgSU5QVVRU
WVBFX0NPTlNUID0gMCwKKysgICAgSU5QVVRUWVBFX1VOSUZPUk0sCisrICAgIElOUFVUVFlQRV9E
WU5BTUlDLAorIAorLQlJTlBVVFRZUEVfTEFTVAorKyAgICBJTlBVVFRZUEVfTEFTVAorIH07Cisg
Cisgc3RydWN0IFNoYWRlcklucHV0CisgeworLQlTaGFkZXJJbnB1dCAoSW5wdXRUeXBlIGlucHV0
VHlwZV8sIERhdGFUeXBlIGRhdGFUeXBlXywgUHJlY2lzaW9uIHByZWNpc2lvbl8pCistCQk6IGlu
cHV0VHlwZQkoaW5wdXRUeXBlXykKKy0JCSwgZGF0YVR5cGUJKGRhdGFUeXBlXykKKy0JCSwgcHJl
Y2lzaW9uCShwcmVjaXNpb25fKQorLQl7CistCX0KKysgICAgU2hhZGVySW5wdXQgKElucHV0VHlw
ZSBpbnB1dFR5cGVfLCBEYXRhVHlwZSBkYXRhVHlwZV8sIFByZWNpc2lvbiBwcmVjaXNpb25fKQor
KyAgICAgICAgOiBpbnB1dFR5cGUgKGlucHV0VHlwZV8pCisrICAgICAgICAsIGRhdGFUeXBlICAo
ZGF0YVR5cGVfKQorKyAgICAgICAgLCBwcmVjaXNpb24gKHByZWNpc2lvbl8pCisrICAgIHsKKysg
ICAgfQorIAorLQlJbnB1dFR5cGUJCWlucHV0VHlwZTsKKy0JRGF0YVR5cGUJCWRhdGFUeXBlOwor
LQlQcmVjaXNpb24JCXByZWNpc2lvbjsKKysgICAgSW5wdXRUeXBlICAgICAgIGlucHV0VHlwZTsK
KysgICAgRGF0YVR5cGUgICAgICAgIGRhdGFUeXBlOworKyAgICBQcmVjaXNpb24gICAgICAgcHJl
Y2lzaW9uOworIH07CisgCisgZW51bSBNYXRyaXhPcAorIHsKKy0JT1BfQUREID0gMCwKKy0JT1Bf
U1VCLAorLQlPUF9NVUwsCistCU9QX0RJViwKKy0JT1BfQ09NUF9NVUwsCistCU9QX09VVEVSX1BS
T0RVQ1QsCistCU9QX1RSQU5TUE9TRSwKKy0JT1BfSU5WRVJTRSwKKy0JT1BfREVURVJNSU5BTlQs
CistCU9QX1VOQVJZX1BMVVMsCistCU9QX05FR0FUSU9OLAorLQlPUF9QUkVfSU5DUkVNRU5ULAor
LQlPUF9QUkVfREVDUkVNRU5ULAorLQlPUF9QT1NUX0lOQ1JFTUVOVCwKKy0JT1BfUE9TVF9ERUNS
RU1FTlQsCistCU9QX0FERF9JTlRPLAorLQlPUF9TVUJUUkFDVF9GUk9NLAorLQlPUF9NVUxUSVBM
WV9JTlRPLAorLQlPUF9ESVZJREVfSU5UTywKKy0JT1BfTEFTVAorKyAgICBPUF9BREQgPSAwLAor
KyAgICBPUF9TVUIsCisrICAgIE9QX01VTCwKKysgICAgT1BfRElWLAorKyAgICBPUF9DT01QX01V
TCwKKysgICAgT1BfT1VURVJfUFJPRFVDVCwKKysgICAgT1BfVFJBTlNQT1NFLAorKyAgICBPUF9J
TlZFUlNFLAorKyAgICBPUF9ERVRFUk1JTkFOVCwKKysgICAgT1BfVU5BUllfUExVUywKKysgICAg
T1BfTkVHQVRJT04sCisrICAgIE9QX1BSRV9JTkNSRU1FTlQsCisrICAgIE9QX1BSRV9ERUNSRU1F
TlQsCisrICAgIE9QX1BPU1RfSU5DUkVNRU5ULAorKyAgICBPUF9QT1NUX0RFQ1JFTUVOVCwKKysg
ICAgT1BfQUREX0lOVE8sCisrICAgIE9QX1NVQlRSQUNUX0ZST00sCisrICAgIE9QX01VTFRJUExZ
X0lOVE8sCisrICAgIE9QX0RJVklERV9JTlRPLAorKyAgICBPUF9MQVNUCisgfTsKKyAKKyAvLyBU
eXBlIHRyYWl0cy4KK0BAIC0yNTUsMjM3ICsyNTUsMjM3IEBAIGVudW0gTWF0cml4T3AKKyB0ZW1w
bGF0ZSA8aW50IERhdGFUPgorIHN0cnVjdCBUeXBlVHJhaXRzOworIAorLSNkZWZpbmUgREVDTEFS
RV9UWVBFX1RSQUlUKERBVEFUWVBFLCBUWVBFKQlcCistdGVtcGxhdGU8PgkJCQkJCQkJCVwKKy1z
dHJ1Y3QgVHlwZVRyYWl0czxEQVRBVFlQRT4gewkJCQlcCistCXR5cGVkZWYgVFlQRSBUeXBlOwkJ
CQkJCVwKKysjZGVmaW5lIERFQ0xBUkVfVFlQRV9UUkFJVChEQVRBVFlQRSwgVFlQRSkgIFwKKyt0
ZW1wbGF0ZTw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKytzdHJ1Y3QgVHlw
ZVRyYWl0czxEQVRBVFlQRT4geyAgICAgICAgICAgICAgIFwKKysgICAgdHlwZWRlZiBUWVBFIFR5
cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKKyB9CisgCistREVDTEFSRV9UWVBFX1RSQUlUKFRZ
UEVfRkxPQVQsCQkJZmxvYXQpOworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX1ZFQzIs
CQl0Y3U6OlZlYzIpOworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX1ZFQzMsCQl0Y3U6
OlZlYzMpOworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX1ZFQzQsCQl0Y3U6OlZlYzQp
OworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDIsCQl0Y3U6Ok1hdDIpOworLURF
Q0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDJYMywJdGN1OjpNYXQyeDMpOworLURFQ0xB
UkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDJYNCwJdGN1OjpNYXQyeDQpOworLURFQ0xBUkVf
VFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDNYMiwJdGN1OjpNYXQzeDIpOworLURFQ0xBUkVfVFlQ
RV9UUkFJVChUWVBFX0ZMT0FUX01BVDMsCQl0Y3U6Ok1hdDMpOworLURFQ0xBUkVfVFlQRV9UUkFJ
VChUWVBFX0ZMT0FUX01BVDNYNCwJdGN1OjpNYXQzeDQpOworLURFQ0xBUkVfVFlQRV9UUkFJVChU
WVBFX0ZMT0FUX01BVDRYMiwJdGN1OjpNYXQ0eDIpOworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBF
X0ZMT0FUX01BVDRYMywJdGN1OjpNYXQ0eDMpOworLURFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZM
T0FUX01BVDQsCQl0Y3U6Ok1hdDQpOworK0RFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FULCAg
ICAgICAgICBmbG9hdCk7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfVkVDMiwgICAg
IHRjdTo6VmVjMik7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfVkVDMywgICAgIHRj
dTo6VmVjMyk7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfVkVDNCwgICAgIHRjdTo6
VmVjNCk7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUMiwgICAgIHRjdTo6TWF0
Mik7CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUMlgzLCAgIHRjdTo6TWF0Mngz
KTsKKytERUNMQVJFX1RZUEVfVFJBSVQoVFlQRV9GTE9BVF9NQVQyWDQsICAgdGN1OjpNYXQyeDQp
OworK0RFQ0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDNYMiwgICB0Y3U6Ok1hdDN4Mik7
CisrREVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUMywgICAgIHRjdTo6TWF0Myk7Cisr
REVDTEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUM1g0LCAgIHRjdTo6TWF0M3g0KTsKKytE
RUNMQVJFX1RZUEVfVFJBSVQoVFlQRV9GTE9BVF9NQVQ0WDIsICAgdGN1OjpNYXQ0eDIpOworK0RF
Q0xBUkVfVFlQRV9UUkFJVChUWVBFX0ZMT0FUX01BVDRYMywgICB0Y3U6Ok1hdDR4Myk7CisrREVD
TEFSRV9UWVBFX1RSQUlUKFRZUEVfRkxPQVRfTUFUNCwgICAgIHRjdTo6TWF0NCk7CisgCisgLy8g
T3BlcmF0aW9uIGluZm8KKyAKKyBlbnVtIE9wZXJhdGlvblR5cGUKKyB7CistCU9QRVJBVElPTlRZ
UEVfQklOQVJZX09QRVJBVE9SID0gMCwKKy0JT1BFUkFUSU9OVFlQRV9CSU5BUllfRlVOQ1RJT04s
CistCU9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9SLAorLQlPUEVSQVRJT05UWVBF
X1VOQVJZX1BPU1RGSVhfT1BFUkFUT1IsCistCU9QRVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT04s
CistCU9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVCwKKysgICAgT1BFUkFUSU9OVFlQRV9CSU5BUllf
T1BFUkFUT1IgPSAwLAorKyAgICBPUEVSQVRJT05UWVBFX0JJTkFSWV9GVU5DVElPTiwKKysgICAg
T1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1IsCisrICAgIE9QRVJBVElPTlRZUEVf
VU5BUllfUE9TVEZJWF9PUEVSQVRPUiwKKysgICAgT1BFUkFUSU9OVFlQRV9VTkFSWV9GVU5DVElP
TiwKKysgICAgT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5ULAorIAorLQlPUEVSQVRJT05UWVBFX0xB
U1QKKysgICAgT1BFUkFUSU9OVFlQRV9MQVNUCisgfTsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciog
Z2V0T3BlcmF0aW9uTmFtZSAoTWF0cml4T3Agb3ApCisgeworLQlzd2l0Y2ggKG9wKQorLQl7Cist
CQljYXNlIE9QX0FERDoJCQlyZXR1cm4gIisiOworLQkJY2FzZSBPUF9TVUI6CQkJcmV0dXJuICIt
IjsKKy0JCWNhc2UgT1BfTVVMOgkJCXJldHVybiAiKiI7CistCQljYXNlIE9QX0RJVjoJCQlyZXR1
cm4gIi8iOworLQkJY2FzZSBPUF9DT01QX01VTDoJCXJldHVybiAibWF0cml4Q29tcE11bHQiOwor
LQkJY2FzZSBPUF9PVVRFUl9QUk9EVUNUOglyZXR1cm4gIm91dGVyUHJvZHVjdCI7CistCQljYXNl
IE9QX1RSQU5TUE9TRToJCXJldHVybiAidHJhbnNwb3NlIjsKKy0JCWNhc2UgT1BfSU5WRVJTRToJ
CXJldHVybiAiaW52ZXJzZSI7CistCQljYXNlIE9QX0RFVEVSTUlOQU5UOglyZXR1cm4gImRldGVy
bWluYW50IjsKKy0JCWNhc2UgT1BfVU5BUllfUExVUzoJCXJldHVybiAiKyI7CistCQljYXNlIE9Q
X05FR0FUSU9OOgkJcmV0dXJuICItIjsKKy0JCWNhc2UgT1BfUFJFX0lOQ1JFTUVOVDoJcmV0dXJu
ICIrKyI7CistCQljYXNlIE9QX1BSRV9ERUNSRU1FTlQ6CXJldHVybiAiLS0iOworLQkJY2FzZSBP
UF9QT1NUX0lOQ1JFTUVOVDoJcmV0dXJuICIrKyI7CistCQljYXNlIE9QX1BPU1RfREVDUkVNRU5U
OglyZXR1cm4gIi0tIjsKKy0JCWNhc2UgT1BfQUREX0lOVE86CQlyZXR1cm4gIis9IjsKKy0JCWNh
c2UgT1BfU1VCVFJBQ1RfRlJPTToJcmV0dXJuICItPSI7CistCQljYXNlIE9QX01VTFRJUExZX0lO
VE86CXJldHVybiAiKj0iOworLQkJY2FzZSBPUF9ESVZJREVfSU5UTzoJcmV0dXJuICIvPSI7Cist
CistCQlkZWZhdWx0OgorLQkJCURFX0FTU0VSVChERV9GQUxTRSk7CistCQkJcmV0dXJuICIiOwor
LQl9CisrICAgIHN3aXRjaCAob3ApCisrICAgIHsKKysgICAgICAgIGNhc2UgT1BfQUREOiAgICAg
ICAgICAgIHJldHVybiAiKyI7CisrICAgICAgICBjYXNlIE9QX1NVQjogICAgICAgICAgICByZXR1
cm4gIi0iOworKyAgICAgICAgY2FzZSBPUF9NVUw6ICAgICAgICAgICAgcmV0dXJuICIqIjsKKysg
ICAgICAgIGNhc2UgT1BfRElWOiAgICAgICAgICAgIHJldHVybiAiLyI7CisrICAgICAgICBjYXNl
IE9QX0NPTVBfTVVMOiAgICAgICByZXR1cm4gIm1hdHJpeENvbXBNdWx0IjsKKysgICAgICAgIGNh
c2UgT1BfT1VURVJfUFJPRFVDVDogIHJldHVybiAib3V0ZXJQcm9kdWN0IjsKKysgICAgICAgIGNh
c2UgT1BfVFJBTlNQT1NFOiAgICAgIHJldHVybiAidHJhbnNwb3NlIjsKKysgICAgICAgIGNhc2Ug
T1BfSU5WRVJTRTogICAgICAgIHJldHVybiAiaW52ZXJzZSI7CisrICAgICAgICBjYXNlIE9QX0RF
VEVSTUlOQU5UOiAgICByZXR1cm4gImRldGVybWluYW50IjsKKysgICAgICAgIGNhc2UgT1BfVU5B
UllfUExVUzogICAgIHJldHVybiAiKyI7CisrICAgICAgICBjYXNlIE9QX05FR0FUSU9OOiAgICAg
ICByZXR1cm4gIi0iOworKyAgICAgICAgY2FzZSBPUF9QUkVfSU5DUkVNRU5UOiAgcmV0dXJuICIr
KyI7CisrICAgICAgICBjYXNlIE9QX1BSRV9ERUNSRU1FTlQ6ICByZXR1cm4gIi0tIjsKKysgICAg
ICAgIGNhc2UgT1BfUE9TVF9JTkNSRU1FTlQ6IHJldHVybiAiKysiOworKyAgICAgICAgY2FzZSBP
UF9QT1NUX0RFQ1JFTUVOVDogcmV0dXJuICItLSI7CisrICAgICAgICBjYXNlIE9QX0FERF9JTlRP
OiAgICAgICByZXR1cm4gIis9IjsKKysgICAgICAgIGNhc2UgT1BfU1VCVFJBQ1RfRlJPTTogIHJl
dHVybiAiLT0iOworKyAgICAgICAgY2FzZSBPUF9NVUxUSVBMWV9JTlRPOiAgcmV0dXJuICIqPSI7
CisrICAgICAgICBjYXNlIE9QX0RJVklERV9JTlRPOiAgICByZXR1cm4gIi89IjsKKysKKysgICAg
ICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgREVfQVNTRVJUKERFX0ZBTFNFKTsKKysgICAgICAg
ICAgICByZXR1cm4gIiI7CisrICAgIH0KKyB9CisgCisgc3RhdGljIE9wZXJhdGlvblR5cGUgZ2V0
T3BlcmF0aW9uVHlwZSAoTWF0cml4T3Agb3ApCisgeworLQlzd2l0Y2ggKG9wKQorLQl7CistCQlj
YXNlIE9QX0FERDoJCQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQlj
YXNlIE9QX1NVQjoJCQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQlj
YXNlIE9QX01VTDoJCQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQlj
YXNlIE9QX0RJVjoJCQlyZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CistCQlj
YXNlIE9QX0NPTVBfTVVMOgkJcmV0dXJuIE9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOwor
LQkJY2FzZSBPUF9PVVRFUl9QUk9EVUNUOglyZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfRlVO
Q1RJT047CistCQljYXNlIE9QX1RSQU5TUE9TRToJCXJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZ
X0ZVTkNUSU9OOworLQkJY2FzZSBPUF9JTlZFUlNFOgkJcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5B
UllfRlVOQ1RJT047CistCQljYXNlIE9QX0RFVEVSTUlOQU5UOglyZXR1cm4gT1BFUkFUSU9OVFlQ
RV9VTkFSWV9GVU5DVElPTjsKKy0JCWNhc2UgT1BfVU5BUllfUExVUzoJCXJldHVybiBPUEVSQVRJ
T05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKy0JCWNhc2UgT1BfTkVHQVRJT046CQlyZXR1
cm4gT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1I7CistCQljYXNlIE9QX1BSRV9J
TkNSRU1FTlQ6CXJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BSRUZJWF9PUEVSQVRPUjsKKy0J
CWNhc2UgT1BfUFJFX0RFQ1JFTUVOVDoJcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklY
X09QRVJBVE9SOworLQkJY2FzZSBPUF9QT1NUX0lOQ1JFTUVOVDoJcmV0dXJuIE9QRVJBVElPTlRZ
UEVfVU5BUllfUE9TVEZJWF9PUEVSQVRPUjsKKy0JCWNhc2UgT1BfUE9TVF9ERUNSRU1FTlQ6CXJl
dHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX1BPU1RGSVhfT1BFUkFUT1I7CistCQljYXNlIE9QX0FE
RF9JTlRPOgkJcmV0dXJuIE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVDsKKy0JCWNhc2UgT1BfU1VC
VFJBQ1RfRlJPTToJcmV0dXJuIE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVDsKKy0JCWNhc2UgT1Bf
TVVMVElQTFlfSU5UTzoJcmV0dXJuIE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVDsKKy0JCWNhc2Ug
T1BfRElWSURFX0lOVE86CXJldHVybiBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7CistCQlkZWZh
dWx0OgorLQkJCURFX0FTU0VSVChERV9GQUxTRSk7CistCQkJcmV0dXJuIE9QRVJBVElPTlRZUEVf
TEFTVDsKKy0JfQorKyAgICBzd2l0Y2ggKG9wKQorKyAgICB7CisrICAgICAgICBjYXNlIE9QX0FE
RDogICAgICAgICAgICByZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CisrICAg
ICAgICBjYXNlIE9QX1NVQjogICAgICAgICAgICByZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllf
T1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9QX01VTDogICAgICAgICAgICByZXR1cm4gT1BFUkFU
SU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9QX0RJVjogICAgICAgICAg
ICByZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9Q
X0NPTVBfTVVMOiAgICAgICByZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5BUllfRlVOQ1RJT047Cisr
ICAgICAgICBjYXNlIE9QX09VVEVSX1BST0RVQ1Q6ICByZXR1cm4gT1BFUkFUSU9OVFlQRV9CSU5B
UllfRlVOQ1RJT047CisrICAgICAgICBjYXNlIE9QX1RSQU5TUE9TRTogICAgICByZXR1cm4gT1BF
UkFUSU9OVFlQRV9VTkFSWV9GVU5DVElPTjsKKysgICAgICAgIGNhc2UgT1BfSU5WRVJTRTogICAg
ICAgIHJldHVybiBPUEVSQVRJT05UWVBFX1VOQVJZX0ZVTkNUSU9OOworKyAgICAgICAgY2FzZSBP
UF9ERVRFUk1JTkFOVDogICAgcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT047Cisr
ICAgICAgICBjYXNlIE9QX1VOQVJZX1BMVVM6ICAgICByZXR1cm4gT1BFUkFUSU9OVFlQRV9VTkFS
WV9QUkVGSVhfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9QX05FR0FUSU9OOiAgICAgICByZXR1
cm4gT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9Q
X1BSRV9JTkNSRU1FTlQ6ICByZXR1cm4gT1BFUkFUSU9OVFlQRV9VTkFSWV9QUkVGSVhfT1BFUkFU
T1I7CisrICAgICAgICBjYXNlIE9QX1BSRV9ERUNSRU1FTlQ6ICByZXR1cm4gT1BFUkFUSU9OVFlQ
RV9VTkFSWV9QUkVGSVhfT1BFUkFUT1I7CisrICAgICAgICBjYXNlIE9QX1BPU1RfSU5DUkVNRU5U
OiByZXR1cm4gT1BFUkFUSU9OVFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9SOworKyAgICAgICAg
Y2FzZSBPUF9QT1NUX0RFQ1JFTUVOVDogcmV0dXJuIE9QRVJBVElPTlRZUEVfVU5BUllfUE9TVEZJ
WF9PUEVSQVRPUjsKKysgICAgICAgIGNhc2UgT1BfQUREX0lOVE86ICAgICAgIHJldHVybiBPUEVS
QVRJT05UWVBFX0FTU0lHTk1FTlQ7CisrICAgICAgICBjYXNlIE9QX1NVQlRSQUNUX0ZST006ICBy
ZXR1cm4gT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOworKyAgICAgICAgY2FzZSBPUF9NVUxUSVBM
WV9JTlRPOiAgcmV0dXJuIE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVDsKKysgICAgICAgIGNhc2Ug
T1BfRElWSURFX0lOVE86ICAgIHJldHVybiBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7CisrICAg
ICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIERFX0FTU0VSVChERV9GQUxTRSk7CisrICAgICAg
ICAgICAgcmV0dXJuIE9QRVJBVElPTlRZUEVfTEFTVDsKKysgICAgfQorIH0KKyAKKyBlbnVtIFRl
c3RNYXRyaXhUeXBlCisgeworLQlURVNUTUFUUklYVFlQRV9ERUZBVUxUID0gMCwKKy0JVEVTVE1B
VFJJWFRZUEVfTkVHQVRFRCwKKy0JVEVTVE1BVFJJWFRZUEVfSU5DUkVNRU5URUQsCistCVRFU1RN
QVRSSVhUWVBFX0RFQ1JFTUVOVEVELAorLQlURVNUTUFUUklYVFlQRV9ORUdBVEVEX0lOQ1JFTUVO
VEVELAorLQlURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRF9MRVNTLAorKyAgICBURVNUTUFUUklY
VFlQRV9ERUZBVUxUID0gMCwKKysgICAgVEVTVE1BVFJJWFRZUEVfTkVHQVRFRCwKKysgICAgVEVT
VE1BVFJJWFRZUEVfSU5DUkVNRU5URUQsCisrICAgIFRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVE
LAorKyAgICBURVNUTUFUUklYVFlQRV9ORUdBVEVEX0lOQ1JFTUVOVEVELAorKyAgICBURVNUTUFU
UklYVFlQRV9JTkNSRU1FTlRFRF9MRVNTLAorIAorLQlURVNUTUFUUklYVFlQRV9MQVNUCisrICAg
IFRFU1RNQVRSSVhUWVBFX0xBU1QKKyB9OworIAorIHN0YXRpYyBUZXN0TWF0cml4VHlwZSBnZXRP
cGVyYXRpb25UZXN0TWF0cml4VHlwZSAoTWF0cml4T3Agb3ApCisgeworLQlzd2l0Y2gob3ApCist
CXsKKy0JCWNhc2UgT1BfQUREOgkJCXJldHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworLQkJ
Y2FzZSBPUF9TVUI6CQkJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CistCQljYXNlIE9Q
X01VTDoJCQlyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNhc2UgT1BfRElWOgkJ
CXJldHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworLQkJY2FzZSBPUF9DT01QX01VTDoJCXJl
dHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworLQkJY2FzZSBPUF9PVVRFUl9QUk9EVUNUOgly
ZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNhc2UgT1BfVFJBTlNQT1NFOgkJcmV0
dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CistCQljYXNlIE9QX0lOVkVSU0U6CQlyZXR1cm4g
VEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNhc2UgT1BfREVURVJNSU5BTlQ6CXJldHVybiBU
RVNUTUFUUklYVFlQRV9ERUZBVUxUOworLQkJY2FzZSBPUF9VTkFSWV9QTFVTOgkJcmV0dXJuIFRF
U1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOworLQkJY2FzZSBPUF9ORUdBVElPTjoJCXJldHVybiBU
RVNUTUFUUklYVFlQRV9ORUdBVEVEX0lOQ1JFTUVOVEVEOworLQkJY2FzZSBPUF9QUkVfSU5DUkVN
RU5UOglyZXR1cm4gVEVTVE1BVFJJWFRZUEVfTkVHQVRFRDsKKy0JCWNhc2UgT1BfUFJFX0RFQ1JF
TUVOVDoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0lOQ1JFTUVOVEVEOworLQkJY2FzZSBPUF9QT1NU
X0lOQ1JFTUVOVDoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ7CistCQljYXNlIE9QX1BP
U1RfREVDUkVNRU5UOglyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNhc2UgT1Bf
QUREX0lOVE86CQlyZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKy0JCWNhc2UgT1BfU1VC
VFJBQ1RfRlJPTToJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0lOQ1JFTUVOVEVEX0xFU1M7CistCQlj
YXNlIE9QX01VTFRJUExZX0lOVE86CXJldHVybiBURVNUTUFUUklYVFlQRV9ORUdBVEVEOworLQkJ
Y2FzZSBPUF9ESVZJREVfSU5UTzoJcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFQ1JFTUVOVEVEOwor
LQorLQkJZGVmYXVsdDoKKy0JCQlERV9BU1NFUlQoREVfRkFMU0UpOworLQkJCXJldHVybiBURVNU
TUFUUklYVFlQRV9MQVNUOworLQl9CisrICAgIHN3aXRjaChvcCkKKysgICAgeworKyAgICAgICAg
Y2FzZSBPUF9BREQ6ICAgICAgICAgICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7Cisr
ICAgICAgICBjYXNlIE9QX1NVQjogICAgICAgICAgICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVG
QVVMVDsKKysgICAgICAgIGNhc2UgT1BfTVVMOiAgICAgICAgICAgIHJldHVybiBURVNUTUFUUklY
VFlQRV9ERUZBVUxUOworKyAgICAgICAgY2FzZSBPUF9ESVY6ICAgICAgICAgICAgcmV0dXJuIFRF
U1RNQVRSSVhUWVBFX0RFRkFVTFQ7CisrICAgICAgICBjYXNlIE9QX0NPTVBfTVVMOiAgICAgICBy
ZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKysgICAgICAgIGNhc2UgT1BfT1VURVJfUFJP
RFVDVDogIHJldHVybiBURVNUTUFUUklYVFlQRV9ERUZBVUxUOworKyAgICAgICAgY2FzZSBPUF9U
UkFOU1BPU0U6ICAgICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQ7CisrICAgICAgICBj
YXNlIE9QX0lOVkVSU0U6ICAgICAgICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKysg
ICAgICAgIGNhc2UgT1BfREVURVJNSU5BTlQ6ICAgIHJldHVybiBURVNUTUFUUklYVFlQRV9ERUZB
VUxUOworKyAgICAgICAgY2FzZSBPUF9VTkFSWV9QTFVTOiAgICAgcmV0dXJuIFRFU1RNQVRSSVhU
WVBFX0RFQ1JFTUVOVEVEOworKyAgICAgICAgY2FzZSBPUF9ORUdBVElPTjogICAgICAgcmV0dXJu
IFRFU1RNQVRSSVhUWVBFX05FR0FURURfSU5DUkVNRU5URUQ7CisrICAgICAgICBjYXNlIE9QX1BS
RV9JTkNSRU1FTlQ6ICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfTkVHQVRFRDsKKysgICAgICAgIGNh
c2UgT1BfUFJFX0RFQ1JFTUVOVDogIHJldHVybiBURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRDsK
KysgICAgICAgIGNhc2UgT1BfUE9TVF9JTkNSRU1FTlQ6IHJldHVybiBURVNUTUFUUklYVFlQRV9O
RUdBVEVEOworKyAgICAgICAgY2FzZSBPUF9QT1NUX0RFQ1JFTUVOVDogcmV0dXJuIFRFU1RNQVRS
SVhUWVBFX0RFRkFVTFQ7CisrICAgICAgICBjYXNlIE9QX0FERF9JTlRPOiAgICAgICByZXR1cm4g
VEVTVE1BVFJJWFRZUEVfREVGQVVMVDsKKysgICAgICAgIGNhc2UgT1BfU1VCVFJBQ1RfRlJPTTog
IHJldHVybiBURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRFRF9MRVNTOworKyAgICAgICAgY2FzZSBP
UF9NVUxUSVBMWV9JTlRPOiAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ7CisrICAgICAg
ICBjYXNlIE9QX0RJVklERV9JTlRPOiAgICByZXR1cm4gVEVTVE1BVFJJWFRZUEVfREVDUkVNRU5U
RUQ7CisrCisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIERFX0FTU0VSVChERV9GQUxT
RSk7CisrICAgICAgICAgICAgcmV0dXJuIFRFU1RNQVRSSVhUWVBFX0xBU1Q7CisrICAgIH0KKyB9
CisgCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25CaW5hcnkgKE1hdHJpeE9wIG9wKQorIHsKKy0J
cmV0dXJuIGdldE9wZXJhdGlvblR5cGUob3ApID09IE9QRVJBVElPTlRZUEVfQklOQVJZX09QRVJB
VE9SIHx8CistCSAgICAgICBnZXRPcGVyYXRpb25UeXBlKG9wKSA9PSBPUEVSQVRJT05UWVBFX0JJ
TkFSWV9GVU5DVElPTiB8fAorLQkgICAgICAgZ2V0T3BlcmF0aW9uVHlwZShvcCkgPT0gT1BFUkFU
SU9OVFlQRV9BU1NJR05NRU5UOworKyAgICByZXR1cm4gZ2V0T3BlcmF0aW9uVHlwZShvcCkgPT0g
T1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1IgfHwKKysgICAgICAgICAgIGdldE9wZXJhdGlv
blR5cGUob3ApID09IE9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OIHx8CisrICAgICAgICAg
ICBnZXRPcGVyYXRpb25UeXBlKG9wKSA9PSBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQ7CisgfQor
IAorIHN0YXRpYyBib29sIGlzT3BlcmF0aW9uTWF0cml4U2NhbGFyIChNYXRyaXhPcCBvcCkKKyB7
CistCXJldHVybiBvcCA9PSBPUF9BREQgfHwgb3AgPT0gT1BfU1VCIHx8IG9wID09IE9QX01VTCB8
fCBvcCA9PSBPUF9ESVY7CisrICAgIHJldHVybiBvcCA9PSBPUF9BREQgfHwgb3AgPT0gT1BfU1VC
IHx8IG9wID09IE9QX01VTCB8fCBvcCA9PSBPUF9ESVY7CisgfQorIAorIHN0YXRpYyBib29sIGlz
T3BlcmF0aW9uTWF0cml4VmVjdG9yIChNYXRyaXhPcCBvcCkKKyB7CistCXJldHVybiBvcCA9PSBP
UF9NVUw7CisrICAgIHJldHVybiBvcCA9PSBPUF9NVUw7CisgfQorIAorIHN0YXRpYyBib29sIGlz
T3BlcmF0aW9uQXJpdGhtZXRpY01hdHJpeE1hdHJpeCAoTWF0cml4T3Agb3ApCisgeworLQlyZXR1
cm4gb3AgPT0gT1BfTVVMOworKyAgICByZXR1cm4gb3AgPT0gT1BfTVVMOworIH0KKyAKKyBzdGF0
aWMgYm9vbCBpc09wZXJhdGlvbkNvbXBvbmVudHdpc2VNYXRyaXhNYXRyaXggKE1hdHJpeE9wIG9w
KQorIHsKKy0JcmV0dXJuIG9wID09IE9QX0FERCB8fCBvcCA9PSBPUF9TVUIgfHwgb3AgPT0gT1Bf
TVVMIHx8IG9wID09IE9QX0RJViB8fCBvcCA9PSBPUF9DT01QX01VTDsKKysgICAgcmV0dXJuIG9w
ID09IE9QX0FERCB8fCBvcCA9PSBPUF9TVUIgfHwgb3AgPT0gT1BfTVVMIHx8IG9wID09IE9QX0RJ
ViB8fCBvcCA9PSBPUF9DT01QX01VTDsKKyB9CisgCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25W
ZWN0b3JWZWN0b3IgKE1hdHJpeE9wIG9wKQorIHsKKy0JcmV0dXJuIG9wID09IE9QX09VVEVSX1BS
T0RVQ1Q7CisrICAgIHJldHVybiBvcCA9PSBPUF9PVVRFUl9QUk9EVUNUOworIH0KKyAKKyBzdGF0
aWMgYm9vbCBpc09wZXJhdGlvblVuYXJ5QW55TWF0cml4IChNYXRyaXhPcCBvcCkKKyB7CistCXJl
dHVybiAgb3AgPT0gT1BfVFJBTlNQT1NFCQkJIHx8CistCQkJb3AgPT0gT1BfVU5BUllfUExVUwkJ
CSB8fAorLQkJCW9wID09IE9QX05FR0FUSU9OCQkJIHx8CistCQkJb3AgPT0gT1BfUFJFX0lOQ1JF
TUVOVAkJIHx8CistCQkJb3AgPT0gT1BfUFJFX0RFQ1JFTUVOVAkJIHx8CistCQkJb3AgPT0gT1Bf
UE9TVF9JTkNSRU1FTlQJCSB8fAorLQkJCW9wID09IE9QX1BPU1RfREVDUkVNRU5UOworKyAgICBy
ZXR1cm4gIG9wID09IE9QX1RSQU5TUE9TRSAgICAgICAgICAgfHwKKysgICAgICAgICAgICBvcCA9
PSBPUF9VTkFSWV9QTFVTICAgICAgICAgIHx8CisrICAgICAgICAgICAgb3AgPT0gT1BfTkVHQVRJ
T04gICAgICAgICAgICB8fAorKyAgICAgICAgICAgIG9wID09IE9QX1BSRV9JTkNSRU1FTlQgICAg
ICAgfHwKKysgICAgICAgICAgICBvcCA9PSBPUF9QUkVfREVDUkVNRU5UICAgICAgIHx8CisrICAg
ICAgICAgICAgb3AgPT0gT1BfUE9TVF9JTkNSRU1FTlQgICAgICB8fAorKyAgICAgICAgICAgIG9w
ID09IE9QX1BPU1RfREVDUkVNRU5UOworIH0KKyAKKyBzdGF0aWMgYm9vbCBpc09wZXJhdGlvblVu
YXJ5U3ltbWV0cmljTWF0cml4IChNYXRyaXhPcCBvcCkKKyB7CistCXJldHVybiBvcCA9PSBPUF9J
TlZFUlNFIHx8IG9wID09IE9QX0RFVEVSTUlOQU5UOworKyAgICByZXR1cm4gb3AgPT0gT1BfSU5W
RVJTRSB8fCBvcCA9PSBPUF9ERVRFUk1JTkFOVDsKKyB9CisgCisgc3RhdGljIGJvb2wgaXNPcGVy
YXRpb25WYWx1ZU1vZGlmeWluZyAoTWF0cml4T3Agb3ApCisgeworLQlyZXR1cm4gIG9wID09IE9Q
X1BSRV9JTkNSRU1FTlQJCSB8fAorLQkJCW9wID09IE9QX1BSRV9ERUNSRU1FTlQJCSB8fAorLQkJ
CW9wID09IE9QX1BPU1RfSU5DUkVNRU5UCQkgfHwKKy0JCQlvcCA9PSBPUF9QT1NUX0RFQ1JFTUVO
VDsKKysgICAgcmV0dXJuICBvcCA9PSBPUF9QUkVfSU5DUkVNRU5UICAgICAgIHx8CisrICAgICAg
ICAgICAgb3AgPT0gT1BfUFJFX0RFQ1JFTUVOVCAgICAgICB8fAorKyAgICAgICAgICAgIG9wID09
IE9QX1BPU1RfSU5DUkVNRU5UICAgICAgfHwKKysgICAgICAgICAgICBvcCA9PSBPUF9QT1NUX0RF
Q1JFTUVOVDsKKyB9CisgCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25Bc3NpZ25tZW50IChNYXRy
aXhPcCBvcCkKKyB7CistCXJldHVybiAgb3AgPT0gT1BfQUREX0lOVE8JCSB8fAorLQkJCW9wID09
IE9QX1NVQlRSQUNUX0ZST00JIHx8CistCQkJb3AgPT0gT1BfTVVMVElQTFlfSU5UTwkgfHwKKy0J
CQlvcCA9PSBPUF9ESVZJREVfSU5UTzsKKysgICAgcmV0dXJuICBvcCA9PSBPUF9BRERfSU5UTyAg
ICAgICAgfHwKKysgICAgICAgICAgICBvcCA9PSBPUF9TVUJUUkFDVF9GUk9NICAgfHwKKysgICAg
ICAgICAgICBvcCA9PSBPUF9NVUxUSVBMWV9JTlRPICAgfHwKKysgICAgICAgICAgICBvcCA9PSBP
UF9ESVZJREVfSU5UTzsKKyB9CisgCisgc3RhdGljIGJvb2wgaXNPcGVyYXRpb25Bc3NpZ25tZW50
QW55TWF0cml4IChNYXRyaXhPcCBvcCkKKyB7CistCXJldHVybiAgb3AgPT0gT1BfQUREX0lOVE8J
CSB8fAorLQkJCW9wID09IE9QX1NVQlRSQUNUX0ZST00JIHx8CistCQkJb3AgPT0gT1BfRElWSURF
X0lOVE87CisrICAgIHJldHVybiAgb3AgPT0gT1BfQUREX0lOVE8gICAgICAgIHx8CisrICAgICAg
ICAgICAgb3AgPT0gT1BfU1VCVFJBQ1RfRlJPTSAgIHx8CisrICAgICAgICAgICAgb3AgPT0gT1Bf
RElWSURFX0lOVE87CisgfQorIAorIHN0YXRpYyBib29sIGlzT3BlcmF0aW9uQXNzaWdubWVudFN5
bW1ldHJpY01hdHJpeCAoTWF0cml4T3Agb3ApCisgeworLQlyZXR1cm4gb3AgPT0gT1BfTVVMVElQ
TFlfSU5UTzsKKysgICAgcmV0dXJuIG9wID09IE9QX01VTFRJUExZX0lOVE87CisgfQorIAorIC8v
IE9wZXJhdGlvbiBuYXR1cmUKKyAKKyBlbnVtIE9wZXJhdGlvbk5hdHVyZQorIHsKKy0JT1BFUkFU
SU9OTkFUVVJFX1BVUkUgPSAwLAorLQlPUEVSQVRJT05OQVRVUkVfTVVUQVRJTkcsCistCU9QRVJB
VElPTk5BVFVSRV9BU1NJR05NRU5ULAorKyAgICBPUEVSQVRJT05OQVRVUkVfUFVSRSA9IDAsCisr
ICAgIE9QRVJBVElPTk5BVFVSRV9NVVRBVElORywKKysgICAgT1BFUkFUSU9OTkFUVVJFX0FTU0lH
Tk1FTlQsCisgCistCU9QRVJBVElPTk5BVFVSRV9MQVNUCisrICAgIE9QRVJBVElPTk5BVFVSRV9M
QVNUCisgfTsKKyAKKyBzdGF0aWMgT3BlcmF0aW9uTmF0dXJlIGdldE9wZXJhdGlvbk5hdHVyZSAo
TWF0cml4T3Agb3ApCisgeworLQlpZiAoaXNPcGVyYXRpb25Bc3NpZ25tZW50KG9wKSkKKy0JCXJl
dHVybiBPUEVSQVRJT05OQVRVUkVfQVNTSUdOTUVOVDsKKysgICAgaWYgKGlzT3BlcmF0aW9uQXNz
aWdubWVudChvcCkpCisrICAgICAgICByZXR1cm4gT1BFUkFUSU9OTkFUVVJFX0FTU0lHTk1FTlQ7
CisgCistCWlmIChpc09wZXJhdGlvblZhbHVlTW9kaWZ5aW5nKG9wKSkKKy0JCXJldHVybiBPUEVS
QVRJT05OQVRVUkVfTVVUQVRJTkc7CisrICAgIGlmIChpc09wZXJhdGlvblZhbHVlTW9kaWZ5aW5n
KG9wKSkKKysgICAgICAgIHJldHVybiBPUEVSQVRJT05OQVRVUkVfTVVUQVRJTkc7CisgCistCXJl
dHVybiBPUEVSQVRJT05OQVRVUkVfUFVSRTsKKysgICAgcmV0dXJuIE9QRVJBVElPTk5BVFVSRV9Q
VVJFOworIH0KKyAKKyAvLyBJbnB1dCB2YWx1ZSBsb2FkZXIuCitAQCAtNDkzLDE0MyArNDkzLDE0
MyBAQCBzdGF0aWMgT3BlcmF0aW9uTmF0dXJlIGdldE9wZXJhdGlvbk5hdHVyZSAoTWF0cml4T3Ag
b3ApCisgdGVtcGxhdGUgPGludCBJbnB1dFQsIGludCBEYXRhVD4KKyB0eXBlbmFtZSBUeXBlVHJh
aXRzPERhdGFUPjo6VHlwZSBnZXRJbnB1dFZhbHVlIChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYg
ZXZhbEN0eCwgaW50IGlucHV0TmR4KTsKKyAKKy10ZW1wbGF0ZSA8PiBpbmxpbmUgZmxvYXQJCWdl
dElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJVFlQRV9GTE9BVD4JCQkoY29uc3QgU2hhZGVy
RXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsg
cmV0dXJuIHNfY29uc3RJbkZsb2F0W2lucHV0TmR4XTsJfQorLXRlbXBsYXRlIDw+IGlubGluZSB0
Y3U6OlZlYzIJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX1ZFQzI+
CShjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VO
UkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdEluVmVjMltpbnB1dE5keF07CX0KKy10ZW1wbGF0
ZSA8PiBpbmxpbmUgdGN1OjpWZWMzCWdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJVFlQ
RV9GTE9BVF9WRUMzPgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1
dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHNfY29uc3RJblZlYzNbaW5wdXROZHhd
Owl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjNAlnZXRJbnB1dFZhbHVlPElOUFVUVFlQ
RV9DT05TVCwJCVRZUEVfRkxPQVRfVkVDND4JKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFs
Q3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiBzX2NvbnN0SW5W
ZWM0W2lucHV0TmR4XTsJfQorLQorLXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDIJZ2V0SW5w
dXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX01BVDI+CShjb25zdCBTaGFkZXJF
dmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyBy
ZXR1cm4gdGN1OjpNYXQyKHNfY29uc3RJbk1hdDJ4MltpbnB1dE5keF0pOwkJfQorLXRlbXBsYXRl
IDw+IGlubGluZSB0Y3U6Ok1hdDJ4MwlnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwJCVRZ
UEVfRkxPQVRfTUFUMlgzPgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBp
bnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHRjdTo6TWF0MngzKHNfY29uc3RJ
bk1hdDJ4M1tpbnB1dE5keF0pOwl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0Mng0CWdl
dElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJVFlQRV9GTE9BVF9NQVQyWDQ+CShjb25zdCBT
aGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxD
dHgpOyByZXR1cm4gdGN1OjpNYXQyeDQoc19jb25zdEluTWF0Mng0W2lucHV0TmR4XSk7CX0KKy10
ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQzeDIJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09O
U1QsCQlUWVBFX0ZMT0FUX01BVDNYMj4JKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4
LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiB0Y3U6Ok1hdDN4Mihz
X2NvbnN0SW5NYXQzeDJbaW5wdXROZHhdKTsJfQorLXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1h
dDMJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX01BVDM+CShjb25z
dCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2
YWxDdHgpOyByZXR1cm4gdGN1OjpNYXQzKHNfY29uc3RJbk1hdDN4M1tpbnB1dE5keF0pOwkJfQor
LXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDN4NAlnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9D
T05TVCwJCVRZUEVfRkxPQVRfTUFUM1g0PgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxD
dHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHRjdTo6TWF0M3g0
KHNfY29uc3RJbk1hdDN4NFtpbnB1dE5keF0pOwl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6
TWF0NHgyCWdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAkJVFlQRV9GTE9BVF9NQVQ0WDI+
CShjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VO
UkVGKGV2YWxDdHgpOyByZXR1cm4gdGN1OjpNYXQ0eDIoc19jb25zdEluTWF0NHgyW2lucHV0TmR4
XSk7CX0KKy10ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQ0eDMJZ2V0SW5wdXRWYWx1ZTxJTlBV
VFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX01BVDRYMz4JKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0
JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiB0Y3U6
Ok1hdDR4MyhzX2NvbnN0SW5NYXQ0eDNbaW5wdXROZHhdKTsJfQorLXRlbXBsYXRlIDw+IGlubGlu
ZSB0Y3U6Ok1hdDQJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCQlUWVBFX0ZMT0FUX01B
VDQ+CShjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERF
X1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gdGN1OjpNYXQ0KHNfY29uc3RJbk1hdDR4NFtpbnB1dE5k
eF0pOwkJfQorLQorLXRlbXBsYXRlIDw+IGlubGluZSBmbG9hdAkJZ2V0SW5wdXRWYWx1ZTxJTlBV
VFRZUEVfRFlOQU1JQywJVFlQRV9GTE9BVD4JCQkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2
YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4
LmNvb3Jkcy54KCk7CQkJCQl9CistdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjMglnZXRJbnB1
dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLAlUWVBFX0ZMT0FUX1ZFQzI+CShjb25zdCBTaGFkZXJF
dmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGlucHV0TmR4KTsg
cmV0dXJuIGV2YWxDdHguY29vcmRzLnN3aXp6bGUoMCwgMSk7CQkJfQorLXRlbXBsYXRlIDw+IGlu
bGluZSB0Y3U6OlZlYzMJZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywJVFlQRV9GTE9B
VF9WRUMzPgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkg
eyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4LmNvb3Jkcy5zd2l6emxlKDAsIDEs
IDIpOwkJfQorLXRlbXBsYXRlIDw+IGlubGluZSB0Y3U6OlZlYzQJZ2V0SW5wdXRWYWx1ZTxJTlBV
VFRZUEVfRFlOQU1JQywJVFlQRV9GTE9BVF9WRUM0PgkoY29uc3QgU2hhZGVyRXZhbENvbnRleHQm
IGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFs
Q3R4LmNvb3Jkcy5zd2l6emxlKDAsIDEsIDIsIDMpOwl9CisrdGVtcGxhdGUgPD4gaW5saW5lIGZs
b2F0ICAgICAgICBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FU
PiAgICAgICAgIChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4
KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdEluRmxvYXRbaW5wdXROZHhdOyAg
fQorK3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6OlZlYzIgICAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZ
UEVfQ09OU1QsICAgICAgVFlQRV9GTE9BVF9WRUMyPiAgICAoY29uc3QgU2hhZGVyRXZhbENvbnRl
eHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHNf
Y29uc3RJblZlYzJbaW5wdXROZHhdOyAgIH0KKyt0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpWZWMz
ICAgIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgICAgIFRZUEVfRkxPQVRfVkVDMz4g
ICAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVf
VU5SRUYoZXZhbEN0eCk7IHJldHVybiBzX2NvbnN0SW5WZWMzW2lucHV0TmR4XTsgICB9CisrdGVt
cGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjNCAgICBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05T
VCwgICAgICBUWVBFX0ZMT0FUX1ZFQzQ+ICAgIChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZh
bEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1cm4gc19jb25zdElu
VmVjNFtpbnB1dE5keF07ICAgfQorKworK3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDIgICAg
Z2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgICAgVFlQRV9GTE9BVF9NQVQyPiAgICAo
Y29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJF
RihldmFsQ3R4KTsgcmV0dXJuIHRjdTo6TWF0MihzX2NvbnN0SW5NYXQyeDJbaW5wdXROZHhdKTsg
ICAgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0MngzICBnZXRJbnB1dFZhbHVlPElO
UFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FUX01BVDJYMz4gIChjb25zdCBTaGFkZXJFdmFs
Q29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxDdHgpOyByZXR1
cm4gdGN1OjpNYXQyeDMoc19jb25zdEluTWF0MngzW2lucHV0TmR4XSk7ICAgIH0KKyt0ZW1wbGF0
ZSA8PiBpbmxpbmUgdGN1OjpNYXQyeDQgIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAg
ICAgIFRZUEVfRkxPQVRfTUFUMlg0PiAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4
LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiB0Y3U6Ok1hdDJ4NChz
X2NvbnN0SW5NYXQyeDRbaW5wdXROZHhdKTsgICAgfQorK3RlbXBsYXRlIDw+IGlubGluZSB0Y3U6
Ok1hdDN4MiAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgICAgVFlQRV9GTE9BVF9N
QVQzWDI+ICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkg
eyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHRjdTo6TWF0M3gyKHNfY29uc3RJbk1hdDN4Mltp
bnB1dE5keF0pOyAgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0MyAgICBnZXRJbnB1
dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FUX01BVDM+ICAgIChjb25zdCBT
aGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGV2YWxD
dHgpOyByZXR1cm4gdGN1OjpNYXQzKHNfY29uc3RJbk1hdDN4M1tpbnB1dE5keF0pOyAgICAgIH0K
Kyt0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQzeDQgIGdldElucHV0VmFsdWU8SU5QVVRUWVBF
X0NPTlNULCAgICAgIFRZUEVfRkxPQVRfTUFUM1g0PiAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0
JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJldHVybiB0Y3U6
Ok1hdDN4NChzX2NvbnN0SW5NYXQzeDRbaW5wdXROZHhdKTsgICAgfQorK3RlbXBsYXRlIDw+IGlu
bGluZSB0Y3U6Ok1hdDR4MiAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgICAgVFlQ
RV9GTE9BVF9NQVQ0WDI+ICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBp
bnB1dE5keCkgeyBERV9VTlJFRihldmFsQ3R4KTsgcmV0dXJuIHRjdTo6TWF0NHgyKHNfY29uc3RJ
bk1hdDR4MltpbnB1dE5keF0pOyAgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0NHgz
ICBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICAgICBUWVBFX0ZMT0FUX01BVDRYMz4g
IChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VO
UkVGKGV2YWxDdHgpOyByZXR1cm4gdGN1OjpNYXQ0eDMoc19jb25zdEluTWF0NHgzW2lucHV0TmR4
XSk7ICAgIH0KKyt0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQ0ICAgIGdldElucHV0VmFsdWU8
SU5QVVRUWVBFX0NPTlNULCAgICAgIFRZUEVfRkxPQVRfTUFUND4gICAgKGNvbnN0IFNoYWRlckV2
YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpIHsgREVfVU5SRUYoZXZhbEN0eCk7IHJl
dHVybiB0Y3U6Ok1hdDQoc19jb25zdEluTWF0NHg0W2lucHV0TmR4XSk7ICAgICAgfQorKworK3Rl
bXBsYXRlIDw+IGlubGluZSBmbG9hdCAgICAgICAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlO
QU1JQywgICAgVFlQRV9GTE9BVD4gICAgICAgICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2
YWxDdHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4
LmNvb3Jkcy54KCk7ICAgICAgICAgICAgICAgICAgIH0KKyt0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1
OjpWZWMyICAgIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsICAgIFRZUEVfRkxPQVRf
VkVDMj4gICAgKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgp
IHsgREVfVU5SRUYoaW5wdXROZHgpOyByZXR1cm4gZXZhbEN0eC5jb29yZHMuc3dpenpsZSgwLCAx
KTsgICAgICAgICB9CisrdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6VmVjMyAgICBnZXRJbnB1dFZh
bHVlPElOUFVUVFlQRV9EWU5BTUlDLCAgICBUWVBFX0ZMT0FUX1ZFQzM+ICAgIChjb25zdCBTaGFk
ZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KSB7IERFX1VOUkVGKGlucHV0TmR4
KTsgcmV0dXJuIGV2YWxDdHguY29vcmRzLnN3aXp6bGUoMCwgMSwgMik7ICAgICAgfQorK3RlbXBs
YXRlIDw+IGlubGluZSB0Y3U6OlZlYzQgICAgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1J
QywgICAgVFlQRV9GTE9BVF9WRUM0PiAgICAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxD
dHgsIGludCBpbnB1dE5keCkgeyBERV9VTlJFRihpbnB1dE5keCk7IHJldHVybiBldmFsQ3R4LmNv
b3Jkcy5zd2l6emxlKDAsIDEsIDIsIDMpOyAgIH0KKyAKKyB0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1
OjpNYXQyIGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIFRZUEVfRkxPQVRfTUFUMj4g
KGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpCisgeworLQlE
RV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorLQl0Y3U6Ok1hdDIgbTsKKy0JbS5zZXRD
b2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkpOworLQltLnNldENvbHVtbigxLCBl
dmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CistCXJldHVybiBtOworKyAgICBERV9VTlJFRihp
bnB1dE5keCk7IC8vIE5vdCB1c2VkLgorKyAgICB0Y3U6Ok1hdDIgbTsKKysgICAgbS5zZXRDb2x1
bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkpOworKyAgICBtLnNldENvbHVtbigxLCBl
dmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CisrICAgIHJldHVybiBtOworIH0KKyAKKyB0ZW1w
bGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQyeDMgZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1J
QywgVFlQRV9GTE9BVF9NQVQyWDM+IChjb25zdCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwg
aW50IGlucHV0TmR4KQorIHsKKy0JREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKy0J
dGN1OjpNYXQyeDMgbTsKKy0JbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAs
MSwyKSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0uc3dpenpsZSgwLDEsMikpOwor
LQlyZXR1cm4gbTsKKysgICAgREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKysgICAg
dGN1OjpNYXQyeDMgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxl
KDAsMSwyKSk7CisrICAgIG0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0uc3dpenpsZSgwLDEs
MikpOworKyAgICByZXR1cm4gbTsKKyB9CisgCisgdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0
Mng0IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIFRZUEVfRkxPQVRfTUFUMlg0PiAo
Y29uc3QgU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkKKyB7CistCURF
X1VOUkVGKGlucHV0TmR4KTsgLy8gTm90IHVzZWQuCistCXRjdTo6TWF0Mng0IG07CistCW0uc2V0
Q29sdW1uKDAsIGV2YWxDdHguaW5bMF0pOworLQltLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFd
KTsKKy0JcmV0dXJuIG07CisrICAgIERFX1VOUkVGKGlucHV0TmR4KTsgLy8gTm90IHVzZWQuCisr
ICAgIHRjdTo6TWF0Mng0IG07CisrICAgIG0uc2V0Q29sdW1uKDAsIGV2YWxDdHguaW5bMF0pOwor
KyAgICBtLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdKTsKKysgICAgcmV0dXJuIG07CisgfQor
IAorIHRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDN4MiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQ
RV9EWU5BTUlDLCBUWVBFX0ZMT0FUX01BVDNYMj4gKGNvbnN0IFNoYWRlckV2YWxDb250ZXh0JiBl
dmFsQ3R4LCBpbnQgaW5wdXROZHgpCisgeworLQlERV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1
c2VkLgorLQl0Y3U6Ok1hdDN4MiBtOworLQltLnNldENvbHVtbigwLCBldmFsQ3R4LmluWzBdLnN3
aXp6bGUoMCwxKSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0uc3dpenpsZSgwLDEp
KTsKKy0JbS5zZXRDb2x1bW4oMiwgZXZhbEN0eC5pblsyXS5zd2l6emxlKDAsMSkpOworLQlyZXR1
cm4gbTsKKysgICAgREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKysgICAgdGN1OjpN
YXQzeDIgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkp
OworKyAgICBtLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CisrICAg
IG0uc2V0Q29sdW1uKDIsIGV2YWxDdHguaW5bMl0uc3dpenpsZSgwLDEpKTsKKysgICAgcmV0dXJu
IG07CisgfQorIAorIHRlbXBsYXRlIDw+IGlubGluZSB0Y3U6Ok1hdDMgZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfRFlOQU1JQywgVFlQRV9GTE9BVF9NQVQzPiAoY29uc3QgU2hhZGVyRXZhbENvbnRl
eHQmIGV2YWxDdHgsIGludCBpbnB1dE5keCkKKyB7CistCURFX1VOUkVGKGlucHV0TmR4KTsgLy8g
Tm90IHVzZWQuCistCXRjdTo6TWF0MyBtOworLQltLnNldENvbHVtbigwLCBldmFsQ3R4LmluWzBd
LnN3aXp6bGUoMCwxLDIpKTsKKy0JbS5zZXRDb2x1bW4oMSwgZXZhbEN0eC5pblsxXS5zd2l6emxl
KDAsMSwyKSk7CistCW0uc2V0Q29sdW1uKDIsIGV2YWxDdHguaW5bMl0uc3dpenpsZSgwLDEsMikp
OworLQlyZXR1cm4gbTsKKysgICAgREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKysg
ICAgdGN1OjpNYXQzIG07CisrICAgIG0uc2V0Q29sdW1uKDAsIGV2YWxDdHguaW5bMF0uc3dpenps
ZSgwLDEsMikpOworKyAgICBtLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwx
LDIpKTsKKysgICAgbS5zZXRDb2x1bW4oMiwgZXZhbEN0eC5pblsyXS5zd2l6emxlKDAsMSwyKSk7
CisrICAgIHJldHVybiBtOworIH0KKyAKKyB0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQzeDQg
Z2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgVFlQRV9GTE9BVF9NQVQzWDQ+IChjb25z
dCBTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KQorIHsKKy0JREVfVU5S
RUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKy0JdGN1OjpNYXQzeDQgbTsKKy0JbS5zZXRDb2x1
bW4oMCwgZXZhbEN0eC5pblswXSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0pOwor
LQltLnNldENvbHVtbigyLCBldmFsQ3R4LmluWzJdKTsKKy0JcmV0dXJuIG07CisrICAgIERFX1VO
UkVGKGlucHV0TmR4KTsgLy8gTm90IHVzZWQuCisrICAgIHRjdTo6TWF0M3g0IG07CisrICAgIG0u
c2V0Q29sdW1uKDAsIGV2YWxDdHguaW5bMF0pOworKyAgICBtLnNldENvbHVtbigxLCBldmFsQ3R4
LmluWzFdKTsKKysgICAgbS5zZXRDb2x1bW4oMiwgZXZhbEN0eC5pblsyXSk7CisrICAgIHJldHVy
biBtOworIH0KKyAKKyB0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQ0eDIgZ2V0SW5wdXRWYWx1
ZTxJTlBVVFRZUEVfRFlOQU1JQywgVFlQRV9GTE9BVF9NQVQ0WDI+IChjb25zdCBTaGFkZXJFdmFs
Q29udGV4dCYgZXZhbEN0eCwgaW50IGlucHV0TmR4KQorIHsKKy0JREVfVU5SRUYoaW5wdXROZHgp
OyAvLyBOb3QgdXNlZC4KKy0JdGN1OjpNYXQ0eDIgbTsKKy0JbS5zZXRDb2x1bW4oMCwgZXZhbEN0
eC5pblswXS5zd2l6emxlKDAsMSkpOworLQltLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdLnN3
aXp6bGUoMCwxKSk7CistCW0uc2V0Q29sdW1uKDIsIGV2YWxDdHguaW5bMl0uc3dpenpsZSgwLDEp
KTsKKy0JbS5zZXRDb2x1bW4oMywgZXZhbEN0eC5pblszXS5zd2l6emxlKDAsMSkpOworLQlyZXR1
cm4gbTsKKysgICAgREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKysgICAgdGN1OjpN
YXQ0eDIgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSkp
OworKyAgICBtLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdLnN3aXp6bGUoMCwxKSk7CisrICAg
IG0uc2V0Q29sdW1uKDIsIGV2YWxDdHguaW5bMl0uc3dpenpsZSgwLDEpKTsKKysgICAgbS5zZXRD
b2x1bW4oMywgZXZhbEN0eC5pblszXS5zd2l6emxlKDAsMSkpOworKyAgICByZXR1cm4gbTsKKyB9
CisgCisgdGVtcGxhdGUgPD4gaW5saW5lIHRjdTo6TWF0NHgzIGdldElucHV0VmFsdWU8SU5QVVRU
WVBFX0RZTkFNSUMsIFRZUEVfRkxPQVRfTUFUNFgzPiAoY29uc3QgU2hhZGVyRXZhbENvbnRleHQm
IGV2YWxDdHgsIGludCBpbnB1dE5keCkKKyB7CistCURFX1VOUkVGKGlucHV0TmR4KTsgLy8gTm90
IHVzZWQuCistCXRjdTo6TWF0NHgzIG07CistCW0uc2V0Q29sdW1uKDAsIGV2YWxDdHguaW5bMF0u
c3dpenpsZSgwLDEsMikpOworLQltLnNldENvbHVtbigxLCBldmFsQ3R4LmluWzFdLnN3aXp6bGUo
MCwxLDIpKTsKKy0JbS5zZXRDb2x1bW4oMiwgZXZhbEN0eC5pblsyXS5zd2l6emxlKDAsMSwyKSk7
CistCW0uc2V0Q29sdW1uKDMsIGV2YWxDdHguaW5bM10uc3dpenpsZSgwLDEsMikpOworLQlyZXR1
cm4gbTsKKysgICAgREVfVU5SRUYoaW5wdXROZHgpOyAvLyBOb3QgdXNlZC4KKysgICAgdGN1OjpN
YXQ0eDMgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXS5zd2l6emxlKDAsMSwy
KSk7CisrICAgIG0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0uc3dpenpsZSgwLDEsMikpOwor
KyAgICBtLnNldENvbHVtbigyLCBldmFsQ3R4LmluWzJdLnN3aXp6bGUoMCwxLDIpKTsKKysgICAg
bS5zZXRDb2x1bW4oMywgZXZhbEN0eC5pblszXS5zd2l6emxlKDAsMSwyKSk7CisrICAgIHJldHVy
biBtOworIH0KKyAKKyB0ZW1wbGF0ZSA8PiBpbmxpbmUgdGN1OjpNYXQ0IGdldElucHV0VmFsdWU8
SU5QVVRUWVBFX0RZTkFNSUMsIFRZUEVfRkxPQVRfTUFUND4gKGNvbnN0IFNoYWRlckV2YWxDb250
ZXh0JiBldmFsQ3R4LCBpbnQgaW5wdXROZHgpCisgeworLQlERV9VTlJFRihpbnB1dE5keCk7IC8v
IE5vdCB1c2VkLgorLQl0Y3U6Ok1hdDQgbTsKKy0JbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblsw
XSk7CistCW0uc2V0Q29sdW1uKDEsIGV2YWxDdHguaW5bMV0pOworLQltLnNldENvbHVtbigyLCBl
dmFsQ3R4LmluWzJdKTsKKy0JbS5zZXRDb2x1bW4oMywgZXZhbEN0eC5pblszXSk7CistCXJldHVy
biBtOworKyAgICBERV9VTlJFRihpbnB1dE5keCk7IC8vIE5vdCB1c2VkLgorKyAgICB0Y3U6Ok1h
dDQgbTsKKysgICAgbS5zZXRDb2x1bW4oMCwgZXZhbEN0eC5pblswXSk7CisrICAgIG0uc2V0Q29s
dW1uKDEsIGV2YWxDdHguaW5bMV0pOworKyAgICBtLnNldENvbHVtbigyLCBldmFsQ3R4LmluWzJd
KTsKKysgICAgbS5zZXRDb2x1bW4oMywgZXZhbEN0eC5pblszXSk7CisrICAgIHJldHVybiBtOwor
IH0KKyAKKyAvLyBSZWR1Y3Rpb24gZnJvbSBleHByZXNzaW9uIHJlc3VsdCB0byB2ZWMzLgorIAor
LWlubGluZSB0Y3U6OlZlYzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6OlZlYzImIHZhbHVlKQkJ
eyByZXR1cm4gdmFsdWUuc3dpenpsZSgwLDEsMCk7IH0KKy1pbmxpbmUgdGN1OjpWZWMzIHJlZHVj
ZVRvVmVjMyAoY29uc3QgdGN1OjpWZWMzJiB2YWx1ZSkJCXsgcmV0dXJuIHZhbHVlOyB9CistaW5s
aW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6VmVjNCYgdmFsdWUpCQl7IHJl
dHVybiB0Y3U6OlZlYzModmFsdWUueCgpLCB2YWx1ZS55KCksIHZhbHVlLnooKSt2YWx1ZS53KCkp
OyB9CistaW5saW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6TWF0MiYgdmFs
dWUpCQl7IHJldHVybiB0Y3U6OlZlYzModmFsdWUoMCwgMCksIHZhbHVlKDAsIDEpLCB2YWx1ZSgx
LCAwKSt2YWx1ZSgxLCAxKSk7IH0KKy1pbmxpbmUgdGN1OjpWZWMzIHJlZHVjZVRvVmVjMyAoY29u
c3QgdGN1OjpNYXQyeDMmIHZhbHVlKQl7IHJldHVybiB2YWx1ZS5nZXRDb2x1bW4oMCkgKyB2YWx1
ZS5nZXRDb2x1bW4oMSk7IH0KKy1pbmxpbmUgdGN1OjpWZWMzIHJlZHVjZVRvVmVjMyAoY29uc3Qg
dGN1OjpNYXQyeDQmIHZhbHVlKQl7IHJldHVybiB2YWx1ZS5nZXRDb2x1bW4oMCkuc3dpenpsZSgw
LDEsMikgKyB2YWx1ZS5nZXRDb2x1bW4oMSkuc3dpenpsZSgxLDIsMyk7IH0KKy1pbmxpbmUgdGN1
OjpWZWMzIHJlZHVjZVRvVmVjMyAoY29uc3QgdGN1OjpNYXQzeDImIHZhbHVlKQl7IHJldHVybiB0
Y3U6OlZlYzModmFsdWUoMCwwKSt2YWx1ZSgxLDApLCB2YWx1ZSgwLDEpK3ZhbHVlKDEsMSksIHZh
bHVlKDAsMikrdmFsdWUoMSwyKSk7IH0KKy1pbmxpbmUgdGN1OjpWZWMzIHJlZHVjZVRvVmVjMyAo
Y29uc3QgdGN1OjpNYXQzJiB2YWx1ZSkJCXsgcmV0dXJuIHZhbHVlLmdldENvbHVtbigwKSArIHZh
bHVlLmdldENvbHVtbigxKSArIHZhbHVlLmdldENvbHVtbigyKTsgfQorLWlubGluZSB0Y3U6OlZl
YzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6Ok1hdDN4NCYgdmFsdWUpCXsgcmV0dXJuIHZhbHVl
LmdldENvbHVtbigwKS5zd2l6emxlKDAsMSwyKSArIHZhbHVlLmdldENvbHVtbigxKS5zd2l6emxl
KDEsMiwzKSArIHZhbHVlLmdldENvbHVtbigyKS5zd2l6emxlKDIsMywwKTsgfQorLWlubGluZSB0
Y3U6OlZlYzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6Ok1hdDR4MiYgdmFsdWUpCXsgcmV0dXJu
IHRjdTo6VmVjMyh2YWx1ZSgwLDApK3ZhbHVlKDEsMCkrdmFsdWUoMCwzKSwgdmFsdWUoMCwxKSt2
YWx1ZSgxLDEpK3ZhbHVlKDEsMyksIHZhbHVlKDAsMikrdmFsdWUoMSwyKSk7IH0KKy1pbmxpbmUg
dGN1OjpWZWMzIHJlZHVjZVRvVmVjMyAoY29uc3QgdGN1OjpNYXQ0eDMmIHZhbHVlKQl7IHJldHVy
biB2YWx1ZS5nZXRDb2x1bW4oMCkgKyB2YWx1ZS5nZXRDb2x1bW4oMSkgKyB2YWx1ZS5nZXRDb2x1
bW4oMikgKyB2YWx1ZS5nZXRDb2x1bW4oMyk7IH0KKy1pbmxpbmUgdGN1OjpWZWMzIHJlZHVjZVRv
VmVjMyAoY29uc3QgdGN1OjpNYXQ0JiB2YWx1ZSkJCXsgcmV0dXJuIHZhbHVlLmdldENvbHVtbigw
KS5zd2l6emxlKDAsMSwyKSArIHZhbHVlLmdldENvbHVtbigxKS5zd2l6emxlKDEsMiwzKSArIHZh
bHVlLmdldENvbHVtbigyKS5zd2l6emxlKDIsMywwKSArIHZhbHVlLmdldENvbHVtbigzKS5zd2l6
emxlKDMsMCwxKTsgfQorK2lubGluZSB0Y3U6OlZlYzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6
OlZlYzImIHZhbHVlKSAgICAgIHsgcmV0dXJuIHZhbHVlLnN3aXp6bGUoMCwxLDApOyB9CisraW5s
aW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6VmVjMyYgdmFsdWUpICAgICAg
eyByZXR1cm4gdmFsdWU7IH0KKytpbmxpbmUgdGN1OjpWZWMzIHJlZHVjZVRvVmVjMyAoY29uc3Qg
dGN1OjpWZWM0JiB2YWx1ZSkgICAgICB7IHJldHVybiB0Y3U6OlZlYzModmFsdWUueCgpLCB2YWx1
ZS55KCksIHZhbHVlLnooKSt2YWx1ZS53KCkpOyB9CisraW5saW5lIHRjdTo6VmVjMyByZWR1Y2VU
b1ZlYzMgKGNvbnN0IHRjdTo6TWF0MiYgdmFsdWUpICAgICAgeyByZXR1cm4gdGN1OjpWZWMzKHZh
bHVlKDAsIDApLCB2YWx1ZSgwLCAxKSwgdmFsdWUoMSwgMCkrdmFsdWUoMSwgMSkpOyB9CisraW5s
aW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6TWF0MngzJiB2YWx1ZSkgICAg
eyByZXR1cm4gdmFsdWUuZ2V0Q29sdW1uKDApICsgdmFsdWUuZ2V0Q29sdW1uKDEpOyB9CisraW5s
aW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6TWF0Mng0JiB2YWx1ZSkgICAg
eyByZXR1cm4gdmFsdWUuZ2V0Q29sdW1uKDApLnN3aXp6bGUoMCwxLDIpICsgdmFsdWUuZ2V0Q29s
dW1uKDEpLnN3aXp6bGUoMSwyLDMpOyB9CisraW5saW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMg
KGNvbnN0IHRjdTo6TWF0M3gyJiB2YWx1ZSkgICAgeyByZXR1cm4gdGN1OjpWZWMzKHZhbHVlKDAs
MCkrdmFsdWUoMSwwKSwgdmFsdWUoMCwxKSt2YWx1ZSgxLDEpLCB2YWx1ZSgwLDIpK3ZhbHVlKDEs
MikpOyB9CisraW5saW5lIHRjdTo6VmVjMyByZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6TWF0MyYg
dmFsdWUpICAgICAgeyByZXR1cm4gdmFsdWUuZ2V0Q29sdW1uKDApICsgdmFsdWUuZ2V0Q29sdW1u
KDEpICsgdmFsdWUuZ2V0Q29sdW1uKDIpOyB9CisraW5saW5lIHRjdTo6VmVjMyByZWR1Y2VUb1Zl
YzMgKGNvbnN0IHRjdTo6TWF0M3g0JiB2YWx1ZSkgICAgeyByZXR1cm4gdmFsdWUuZ2V0Q29sdW1u
KDApLnN3aXp6bGUoMCwxLDIpICsgdmFsdWUuZ2V0Q29sdW1uKDEpLnN3aXp6bGUoMSwyLDMpICsg
dmFsdWUuZ2V0Q29sdW1uKDIpLnN3aXp6bGUoMiwzLDApOyB9CisraW5saW5lIHRjdTo6VmVjMyBy
ZWR1Y2VUb1ZlYzMgKGNvbnN0IHRjdTo6TWF0NHgyJiB2YWx1ZSkgICAgeyByZXR1cm4gdGN1OjpW
ZWMzKHZhbHVlKDAsMCkrdmFsdWUoMSwwKSt2YWx1ZSgwLDMpLCB2YWx1ZSgwLDEpK3ZhbHVlKDEs
MSkrdmFsdWUoMSwzKSwgdmFsdWUoMCwyKSt2YWx1ZSgxLDIpKTsgfQorK2lubGluZSB0Y3U6OlZl
YzMgcmVkdWNlVG9WZWMzIChjb25zdCB0Y3U6Ok1hdDR4MyYgdmFsdWUpICAgIHsgcmV0dXJuIHZh
bHVlLmdldENvbHVtbigwKSArIHZhbHVlLmdldENvbHVtbigxKSArIHZhbHVlLmdldENvbHVtbigy
KSArIHZhbHVlLmdldENvbHVtbigzKTsgfQorK2lubGluZSB0Y3U6OlZlYzMgcmVkdWNlVG9WZWMz
IChjb25zdCB0Y3U6Ok1hdDQmIHZhbHVlKSAgICAgIHsgcmV0dXJuIHZhbHVlLmdldENvbHVtbigw
KS5zd2l6emxlKDAsMSwyKSArIHZhbHVlLmdldENvbHVtbigxKS5zd2l6emxlKDEsMiwzKSArIHZh
bHVlLmdldENvbHVtbigyKS5zd2l6emxlKDIsMywwKSArIHZhbHVlLmdldENvbHVtbigzKS5zd2l6
emxlKDMsMCwxKTsgfQorIAorIC8vIG1hdHJpeENvbXBNdWx0CisgCisgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIGludCBSb3dzLCBpbnQgQ29scz4KKyB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiBt
YXRyaXhDb21wTXVsdCAoY29uc3QgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4mIGEsIGNvbnN0
IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBiKQorIHsKKy0JdGN1OjpNYXRyaXg8VCwgUm93
cywgQ29scz4gcmV0VmFsOworKyAgICB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiByZXRWYWw7
CisgCistCWZvciAoaW50IHIgPSAwOyByIDwgUm93czsgKytyKQorLQkJZm9yIChpbnQgYyA9IDA7
IGMgPCBDb2xzOyArK2MpCistCQkJcmV0VmFsKHIsYykgPSBhKHIsYykgKiBiKHIsIGMpOworKyAg
ICBmb3IgKGludCByID0gMDsgciA8IFJvd3M7ICsrcikKKysgICAgICAgIGZvciAoaW50IGMgPSAw
OyBjIDwgQ29sczsgKytjKQorKyAgICAgICAgICAgIHJldFZhbChyLGMpID0gYShyLGMpICogYihy
LCBjKTsKKyAKKy0JcmV0dXJuIHJldFZhbDsKKysgICAgcmV0dXJuIHJldFZhbDsKKyB9CisgCisg
Ly8gdHJhbnNwb3NlCitAQCAtNjM3LDEzICs2MzcsMTMgQEAgdGN1OjpNYXRyaXg8VCwgUm93cywg
Q29scz4gbWF0cml4Q29tcE11bHQgKGNvbnN0IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBh
LAorIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgUm93cywgaW50IENvbHM+CisgdGN1OjpNYXRy
aXg8VCwgQ29scywgUm93cz4gdHJhbnNwb3NlIChjb25zdCB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBD
b2xzPiYgbWF0KQorIHsKKy0JdGN1OjpNYXRyaXg8VCwgQ29scywgUm93cz4gcmV0VmFsOworKyAg
ICB0Y3U6Ok1hdHJpeDxULCBDb2xzLCBSb3dzPiByZXRWYWw7CisgCistCWZvciAoaW50IHIgPSAw
OyByIDwgUm93czsgKytyKQorLQkJZm9yIChpbnQgYyA9IDA7IGMgPCBDb2xzOyArK2MpCistCQkJ
cmV0VmFsKGMsIHIpID0gbWF0KHIsIGMpOworKyAgICBmb3IgKGludCByID0gMDsgciA8IFJvd3M7
ICsrcikKKysgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgQ29sczsgKytjKQorKyAgICAgICAg
ICAgIHJldFZhbChjLCByKSA9IG1hdChyLCBjKTsKKyAKKy0JcmV0dXJuIHJldFZhbDsKKysgICAg
cmV0dXJuIHJldFZhbDsKKyB9CisgCisgLy8gb3V0ZXJQcm9kdWN0CitAQCAtNjUxLDEzICs2NTEs
MTMgQEAgdGN1OjpNYXRyaXg8VCwgQ29scywgUm93cz4gdHJhbnNwb3NlIChjb25zdCB0Y3U6Ok1h
dHJpeDxULCBSb3dzLCBDb2xzPiYgbWF0KQorIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgUm93
cywgaW50IENvbHM+CisgdGN1OjpNYXRyaXg8VCwgQ29scywgUm93cz4gb3V0ZXJQcm9kdWN0IChj
b25zdCB0Y3U6OlZlY3RvcjxULCBDb2xzPiYgYSwgY29uc3QgdGN1OjpWZWN0b3I8VCwgUm93cz4m
IGIpCisgeworLQl0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiByZXRWYWw7CisrICAgIHRjdTo6
TWF0cml4PFQsIFJvd3MsIENvbHM+IHJldFZhbDsKKyAKKy0JZm9yIChpbnQgciA9IDA7IHIgPCBS
b3dzOyArK3IpCistCQlmb3IgKGludCBjID0gMDsgYyA8IENvbHM7ICsrYykKKy0JCQlyZXRWYWwo
cixjKSA9IGFbY10gKiBiW3JdOworKyAgICBmb3IgKGludCByID0gMDsgciA8IFJvd3M7ICsrcikK
KysgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgQ29sczsgKytjKQorKyAgICAgICAgICAgIHJl
dFZhbChyLGMpID0gYVtjXSAqIGJbcl07CisgCistCXJldHVybiB0cmFuc3Bvc2UocmV0VmFsKTsg
Ly8gdG8gZ2wtZm9ybSAoY29sdW1uLW1ham9yKQorKyAgICByZXR1cm4gdHJhbnNwb3NlKHJldFZh
bCk7IC8vIHRvIGdsLWZvcm0gKGNvbHVtbi1tYWpvcikKKyB9CisgCisgLy8gRGV0ZXJtaW5hbnQK
K0BAIC02NjgsNTEgKzY2OCw1MSBAQCBmbG9hdCBkZXRlcm1pbmFudCAoY29uc3QgdGN1OjpNYXRy
aXg8ZmxvYXQsIFNpemUsIFNpemU+JiBtYXQpOworIHRlbXBsYXRlIDw+CisgZmxvYXQgZGV0ZXJt
aW5hbnQ8Mj4gKGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiYgbWF0KQorIHsKKy0JcmV0
dXJuIG1hdCgwLDApICogbWF0KDEsMSkgLSBtYXQoMSwwKSAqIG1hdCgwLDEpOworKyAgICByZXR1
cm4gbWF0KDAsMCkgKiBtYXQoMSwxKSAtIG1hdCgxLDApICogbWF0KDAsMSk7CisgfQorIAorIHRl
bXBsYXRlIDw+CisgZmxvYXQgZGV0ZXJtaW5hbnQ8Mz4gKGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0
LCAzLCAzPiYgbWF0KQorIHsKKy0JcmV0dXJuCSsgbWF0KDAsMCkgKiBtYXQoMSwxKSAqIG1hdCgy
LDIpCistCQkJKyBtYXQoMCwxKSAqIG1hdCgxLDIpICogbWF0KDIsMCkKKy0JCQkrIG1hdCgwLDIp
ICogbWF0KDEsMCkgKiBtYXQoMiwxKQorLQkJCS0gbWF0KDAsMCkgKiBtYXQoMSwyKSAqIG1hdCgy
LDEpCistCQkJLSBtYXQoMCwxKSAqIG1hdCgxLDApICogbWF0KDIsMikKKy0JCQktIG1hdCgwLDIp
ICogbWF0KDEsMSkgKiBtYXQoMiwwKTsKKysgICAgcmV0dXJuICArIG1hdCgwLDApICogbWF0KDEs
MSkgKiBtYXQoMiwyKQorKyAgICAgICAgICAgICsgbWF0KDAsMSkgKiBtYXQoMSwyKSAqIG1hdCgy
LDApCisrICAgICAgICAgICAgKyBtYXQoMCwyKSAqIG1hdCgxLDApICogbWF0KDIsMSkKKysgICAg
ICAgICAgICAtIG1hdCgwLDApICogbWF0KDEsMikgKiBtYXQoMiwxKQorKyAgICAgICAgICAgIC0g
bWF0KDAsMSkgKiBtYXQoMSwwKSAqIG1hdCgyLDIpCisrICAgICAgICAgICAgLSBtYXQoMCwyKSAq
IG1hdCgxLDEpICogbWF0KDIsMCk7CisgfQorIAorIHRlbXBsYXRlIDw+CisgZmxvYXQgZGV0ZXJt
aW5hbnQ8ND4gKGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCA0LCA0PiYgbWF0KQorIHsKKy0JY29u
c3QgZmxvYXQgbWlub3JNYXRyaWNlc1s0XVszKjNdID0KKy0JeworLQkJeworLQkJCW1hdCgxLDEp
LAltYXQoMiwxKSwJbWF0KDMsMSksCistCQkJbWF0KDEsMiksCW1hdCgyLDIpLAltYXQoMywyKSwK
Ky0JCQltYXQoMSwzKSwJbWF0KDIsMyksCW1hdCgzLDMpLAorLQkJfSwKKy0JCXsKKy0JCQltYXQo
MSwwKSwJbWF0KDIsMCksCW1hdCgzLDApLAorLQkJCW1hdCgxLDIpLAltYXQoMiwyKSwJbWF0KDMs
MiksCistCQkJbWF0KDEsMyksCW1hdCgyLDMpLAltYXQoMywzKSwKKy0JCX0sCistCQl7CistCQkJ
bWF0KDEsMCksCW1hdCgyLDApLAltYXQoMywwKSwKKy0JCQltYXQoMSwxKSwJbWF0KDIsMSksCW1h
dCgzLDEpLAorLQkJCW1hdCgxLDMpLAltYXQoMiwzKSwJbWF0KDMsMyksCistCQl9LAorLQkJewor
LQkJCW1hdCgxLDApLAltYXQoMiwwKSwJbWF0KDMsMCksCistCQkJbWF0KDEsMSksCW1hdCgyLDEp
LAltYXQoMywxKSwKKy0JCQltYXQoMSwyKSwJbWF0KDIsMiksCW1hdCgzLDIpLAorLQkJfQorLQl9
OworLQorLQlyZXR1cm4JKyBtYXQoMCwwKSAqIGRldGVybWluYW50KHRjdTo6TWF0MyhtaW5vck1h
dHJpY2VzWzBdKSkKKy0JCQktIG1hdCgwLDEpICogZGV0ZXJtaW5hbnQodGN1OjpNYXQzKG1pbm9y
TWF0cmljZXNbMV0pKQorLQkJCSsgbWF0KDAsMikgKiBkZXRlcm1pbmFudCh0Y3U6Ok1hdDMobWlu
b3JNYXRyaWNlc1syXSkpCistCQkJLSBtYXQoMCwzKSAqIGRldGVybWluYW50KHRjdTo6TWF0Myht
aW5vck1hdHJpY2VzWzNdKSk7CisrICAgIGNvbnN0IGZsb2F0IG1pbm9yTWF0cmljZXNbNF1bMyoz
XSA9CisrICAgIHsKKysgICAgICAgIHsKKysgICAgICAgICAgICBtYXQoMSwxKSwgICBtYXQoMiwx
KSwgICBtYXQoMywxKSwKKysgICAgICAgICAgICBtYXQoMSwyKSwgICBtYXQoMiwyKSwgICBtYXQo
MywyKSwKKysgICAgICAgICAgICBtYXQoMSwzKSwgICBtYXQoMiwzKSwgICBtYXQoMywzKSwKKysg
ICAgICAgIH0sCisrICAgICAgICB7CisrICAgICAgICAgICAgbWF0KDEsMCksICAgbWF0KDIsMCks
ICAgbWF0KDMsMCksCisrICAgICAgICAgICAgbWF0KDEsMiksICAgbWF0KDIsMiksICAgbWF0KDMs
MiksCisrICAgICAgICAgICAgbWF0KDEsMyksICAgbWF0KDIsMyksICAgbWF0KDMsMyksCisrICAg
ICAgICB9LAorKyAgICAgICAgeworKyAgICAgICAgICAgIG1hdCgxLDApLCAgIG1hdCgyLDApLCAg
IG1hdCgzLDApLAorKyAgICAgICAgICAgIG1hdCgxLDEpLCAgIG1hdCgyLDEpLCAgIG1hdCgzLDEp
LAorKyAgICAgICAgICAgIG1hdCgxLDMpLCAgIG1hdCgyLDMpLCAgIG1hdCgzLDMpLAorKyAgICAg
ICAgfSwKKysgICAgICAgIHsKKysgICAgICAgICAgICBtYXQoMSwwKSwgICBtYXQoMiwwKSwgICBt
YXQoMywwKSwKKysgICAgICAgICAgICBtYXQoMSwxKSwgICBtYXQoMiwxKSwgICBtYXQoMywxKSwK
KysgICAgICAgICAgICBtYXQoMSwyKSwgICBtYXQoMiwyKSwgICBtYXQoMywyKSwKKysgICAgICAg
IH0KKysgICAgfTsKKysKKysgICAgcmV0dXJuICArIG1hdCgwLDApICogZGV0ZXJtaW5hbnQodGN1
OjpNYXQzKG1pbm9yTWF0cmljZXNbMF0pKQorKyAgICAgICAgICAgIC0gbWF0KDAsMSkgKiBkZXRl
cm1pbmFudCh0Y3U6Ok1hdDMobWlub3JNYXRyaWNlc1sxXSkpCisrICAgICAgICAgICAgKyBtYXQo
MCwyKSAqIGRldGVybWluYW50KHRjdTo6TWF0MyhtaW5vck1hdHJpY2VzWzJdKSkKKysgICAgICAg
ICAgICAtIG1hdCgwLDMpICogZGV0ZXJtaW5hbnQodGN1OjpNYXQzKG1pbm9yTWF0cmljZXNbM10p
KTsKKyB9CisgCisgLy8gSW52ZXJzZQorQEAgLTcyMywxMjAgKzcyMywxMjAgQEAgdGN1OjpNYXRy
aXg8ZmxvYXQsIFNpemUsIFNpemU+IGludmVyc2UgKGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCBT
aXplLCBTaXplPiYgbWEKKyB0ZW1wbGF0ZSA8PgorIHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiBp
bnZlcnNlPDI+IChjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMiwgMj4mIG1hdCkKKyB7CistCWNv
bnN0IGZsb2F0CQkJCQlkZXQJCT0gZGV0ZXJtaW5hbnQobWF0KTsKKy0JdGN1OjpNYXRyaXg8Zmxv
YXQsIDIsIDI+CXJldFZhbDsKKysgICAgY29uc3QgZmxvYXQgICAgICAgICAgICAgICAgIGRldCAg
ICAgPSBkZXRlcm1pbmFudChtYXQpOworKyAgICB0Y3U6Ok1hdHJpeDxmbG9hdCwgMiwgMj4gICAg
cmV0VmFsOworIAorLQlERV9BU1NFUlQoZGV0ICE9IDAuMGYpOworKyAgICBERV9BU1NFUlQoZGV0
ICE9IDAuMGYpOworIAorLQlyZXRWYWwoMCwgMCkgPSAgbWF0KDEsIDEpIC8gZGV0OworLQlyZXRW
YWwoMCwgMSkgPSAtbWF0KDAsIDEpIC8gZGV0OworLQlyZXRWYWwoMSwgMCkgPSAtbWF0KDEsIDAp
IC8gZGV0OworLQlyZXRWYWwoMSwgMSkgPSAgbWF0KDAsIDApIC8gZGV0OworKyAgICByZXRWYWwo
MCwgMCkgPSAgbWF0KDEsIDEpIC8gZGV0OworKyAgICByZXRWYWwoMCwgMSkgPSAtbWF0KDAsIDEp
IC8gZGV0OworKyAgICByZXRWYWwoMSwgMCkgPSAtbWF0KDEsIDApIC8gZGV0OworKyAgICByZXRW
YWwoMSwgMSkgPSAgbWF0KDAsIDApIC8gZGV0OworIAorLQlyZXR1cm4gcmV0VmFsOworKyAgICBy
ZXR1cm4gcmV0VmFsOworIH0KKyAKKyB0ZW1wbGF0ZSA8PgorIHRjdTo6TWF0cml4PGZsb2F0LCAz
LCAzPiBpbnZlcnNlPDM+IChjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMywgMz4mIG1hdCkKKyB7
CistCS8vIEJsb2Nrd2lzZSBpbnZlcnNpb24KKy0KKy0JREVfQVNTRVJUKGRldGVybWluYW50KG1h
dCkgIT0gMC4wZik7CistCistCWNvbnN0IGZsb2F0IGFyZWFBWzIqMl0gPQorLQl7CistCQltYXQo
MCwwKSwJbWF0KDAsMSksCistCQltYXQoMSwwKSwJbWF0KDEsMSkKKy0JfTsKKy0JY29uc3QgZmxv
YXQgYXJlYUJbMl0gPQorLQl7CistCQltYXQoMCwyKSwKKy0JCW1hdCgxLDIpLAorLQl9OworLQlj
b25zdCBmbG9hdCBhcmVhQ1syXSA9CistCXsKKy0JCW1hdCgyLDApLAltYXQoMiwxKSwKKy0JfTsK
Ky0JY29uc3QgZmxvYXQgYXJlYURbMV0gPQorLQl7CistCQltYXQoMiwyKQorLQl9OworLQljb25z
dCBmbG9hdCBudWxsRmllbGRbNF0gPSB7IDAuMGYgfTsKKy0KKy0JY29uc3QgdGN1OjpNYXRyaXg8
ZmxvYXQsIDIsIDI+CWludkEgPSBpbnZlcnNlKHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPihhcmVh
QSkpOworLQljb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMiwgMT4JbWF0QiA9ICAgICAgICAgdGN1
OjpNYXRyaXg8ZmxvYXQsIDIsIDE+KGFyZWFCKTsKKy0JY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQs
IDEsIDI+CW1hdEMgPSAgICAgICAgIHRjdTo6TWF0cml4PGZsb2F0LCAxLCAyPihhcmVhQyk7Cist
CWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAxLCAxPgltYXREID0gICAgICAgICB0Y3U6Ok1hdHJp
eDxmbG9hdCwgMSwgMT4oYXJlYUQpOworLQorLQljb25zdCBmbG9hdAkJCQkJCXNjaHVyQ29tcGxl
bWVudCA9IDEuMGYgLyAobWF0RCAtIG1hdEMqaW52QSptYXRCKSgwLDApOworLQljb25zdCB0Y3U6
Ok1hdHJpeDxmbG9hdCwgMiwgMj4JemVyb01hdCAgICAgICAgID0gTWF0MihudWxsRmllbGQpOwor
LQorLQljb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMiwgMj4JYmxvY2tBID0gaW52QSArIGludkEq
bWF0QipzY2h1ckNvbXBsZW1lbnQqbWF0QyppbnZBOworLQljb25zdCB0Y3U6Ok1hdHJpeDxmbG9h
dCwgMiwgMT4JYmxvY2tCID0gKHplcm9NYXQtaW52QSkqbWF0QipzY2h1ckNvbXBsZW1lbnQ7Cist
CWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAxLCAyPglibG9ja0MgPSBtYXRDKmludkEqKC1zY2h1
ckNvbXBsZW1lbnQpOworLQljb25zdCBmbG9hdAkJCQkJCWJsb2NrRCA9IHNjaHVyQ29tcGxlbWVu
dDsKKy0KKy0JY29uc3QgZmxvYXQgcmVzdWx0WzMqM10gPQorLQl7CistCQlibG9ja0EoMCwwKSwJ
YmxvY2tBKDAsMSksCWJsb2NrQigwLDApLAorLQkJYmxvY2tBKDEsMCksCWJsb2NrQSgxLDEpLAli
bG9ja0IoMSwwKSwKKy0JCWJsb2NrQygwLDApLAlibG9ja0MoMCwxKSwJYmxvY2tELAorLQl9Owor
LQorLQlyZXR1cm4gTWF0MyhyZXN1bHQpOworKyAgICAvLyBCbG9ja3dpc2UgaW52ZXJzaW9uCisr
CisrICAgIERFX0FTU0VSVChkZXRlcm1pbmFudChtYXQpICE9IDAuMGYpOworKworKyAgICBjb25z
dCBmbG9hdCBhcmVhQVsyKjJdID0KKysgICAgeworKyAgICAgICAgbWF0KDAsMCksICAgbWF0KDAs
MSksCisrICAgICAgICBtYXQoMSwwKSwgICBtYXQoMSwxKQorKyAgICB9OworKyAgICBjb25zdCBm
bG9hdCBhcmVhQlsyXSA9CisrICAgIHsKKysgICAgICAgIG1hdCgwLDIpLAorKyAgICAgICAgbWF0
KDEsMiksCisrICAgIH07CisrICAgIGNvbnN0IGZsb2F0IGFyZWFDWzJdID0KKysgICAgeworKyAg
ICAgICAgbWF0KDIsMCksICAgbWF0KDIsMSksCisrICAgIH07CisrICAgIGNvbnN0IGZsb2F0IGFy
ZWFEWzFdID0KKysgICAgeworKyAgICAgICAgbWF0KDIsMikKKysgICAgfTsKKysgICAgY29uc3Qg
ZmxvYXQgbnVsbEZpZWxkWzRdID0geyAwLjBmIH07CisrCisrICAgIGNvbnN0IHRjdTo6TWF0cml4
PGZsb2F0LCAyLCAyPiAgaW52QSA9IGludmVyc2UodGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+KGFy
ZWFBKSk7CisrICAgIGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAxPiAgbWF0QiA9ICAgICAg
ICAgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDE+KGFyZWFCKTsKKysgICAgY29uc3QgdGN1OjpNYXRy
aXg8ZmxvYXQsIDEsIDI+ICBtYXRDID0gICAgICAgICB0Y3U6Ok1hdHJpeDxmbG9hdCwgMSwgMj4o
YXJlYUMpOworKyAgICBjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMSwgMT4gIG1hdEQgPSAgICAg
ICAgIHRjdTo6TWF0cml4PGZsb2F0LCAxLCAxPihhcmVhRCk7CisrCisrICAgIGNvbnN0IGZsb2F0
ICAgICAgICAgICAgICAgICAgICAgc2NodXJDb21wbGVtZW50ID0gMS4wZiAvIChtYXREIC0gbWF0
QyppbnZBKm1hdEIpKDAsMCk7CisrICAgIGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiAg
emVyb01hdCAgICAgICAgID0gTWF0MihudWxsRmllbGQpOworKworKyAgICBjb25zdCB0Y3U6Ok1h
dHJpeDxmbG9hdCwgMiwgMj4gIGJsb2NrQSA9IGludkEgKyBpbnZBKm1hdEIqc2NodXJDb21wbGVt
ZW50Km1hdEMqaW52QTsKKysgICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDE+ICBibG9j
a0IgPSAoemVyb01hdC1pbnZBKSptYXRCKnNjaHVyQ29tcGxlbWVudDsKKysgICAgY29uc3QgdGN1
OjpNYXRyaXg8ZmxvYXQsIDEsIDI+ICBibG9ja0MgPSBtYXRDKmludkEqKC1zY2h1ckNvbXBsZW1l
bnQpOworKyAgICBjb25zdCBmbG9hdCAgICAgICAgICAgICAgICAgICAgIGJsb2NrRCA9IHNjaHVy
Q29tcGxlbWVudDsKKysKKysgICAgY29uc3QgZmxvYXQgcmVzdWx0WzMqM10gPQorKyAgICB7Cisr
ICAgICAgICBibG9ja0EoMCwwKSwgICAgYmxvY2tBKDAsMSksICAgIGJsb2NrQigwLDApLAorKyAg
ICAgICAgYmxvY2tBKDEsMCksICAgIGJsb2NrQSgxLDEpLCAgICBibG9ja0IoMSwwKSwKKysgICAg
ICAgIGJsb2NrQygwLDApLCAgICBibG9ja0MoMCwxKSwgICAgYmxvY2tELAorKyAgICB9OworKwor
KyAgICByZXR1cm4gTWF0MyhyZXN1bHQpOworIH0KKyAKKyB0ZW1wbGF0ZSA8PgorIHRjdTo6TWF0
cml4PGZsb2F0LCA0LCA0PiBpbnZlcnNlPDQ+IChjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgNCwg
ND4mIG1hdCkKKyB7CistCS8vIEJsb2Nrd2lzZSBpbnZlcnNpb24KKy0KKy0JREVfQVNTRVJUKGRl
dGVybWluYW50KG1hdCkgIT0gMC4wZik7CistCistCWNvbnN0IGZsb2F0IGFyZWFBWzIqMl0gPQor
LQl7CistCQltYXQoMCwwKSwJbWF0KDAsMSksCistCQltYXQoMSwwKSwJbWF0KDEsMSkKKy0JfTsK
Ky0JY29uc3QgZmxvYXQgYXJlYUJbMioyXSA9CistCXsKKy0JCW1hdCgwLDIpLAltYXQoMCwzKSwK
Ky0JCW1hdCgxLDIpLAltYXQoMSwzKQorLQl9OworLQljb25zdCBmbG9hdCBhcmVhQ1syKjJdID0K
Ky0JeworLQkJbWF0KDIsMCksCW1hdCgyLDEpLAorLQkJbWF0KDMsMCksCW1hdCgzLDEpCistCX07
CistCWNvbnN0IGZsb2F0IGFyZWFEWzIqMl0gPQorLQl7CistCQltYXQoMiwyKSwJbWF0KDIsMyks
CistCQltYXQoMywyKSwJbWF0KDMsMykKKy0JfTsKKy0JY29uc3QgZmxvYXQgbnVsbEZpZWxkWzRd
ID0geyAwLjBmIH07CistCistCWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiBpbnZBID0g
aW52ZXJzZShNYXQyKGFyZWFBKSk7CistCWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiBt
YXRCID0gICAgICAgICBNYXQyKGFyZWFCKTsKKy0JY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIs
IDI+IG1hdEMgPSAgICAgICAgIE1hdDIoYXJlYUMpOworLQljb25zdCB0Y3U6Ok1hdHJpeDxmbG9h
dCwgMiwgMj4gbWF0RCA9ICAgICAgICAgTWF0MihhcmVhRCk7CistCistCWNvbnN0IHRjdTo6TWF0
cml4PGZsb2F0LCAyLCAyPiBzY2h1ckNvbXBsZW1lbnQgPSBpbnZlcnNlKG1hdEQgLSBtYXRDKmlu
dkEqbWF0Qik7CistCWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiB6ZXJvTWF0ICAgICAg
ICAgPSBNYXQyKG51bGxGaWVsZCk7CistCistCWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAy
PiBibG9ja0EgPSBpbnZBICsgaW52QSptYXRCKnNjaHVyQ29tcGxlbWVudCptYXRDKmludkE7Cist
CWNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiBibG9ja0IgPSAoemVyb01hdC1pbnZBKSpt
YXRCKnNjaHVyQ29tcGxlbWVudDsKKy0JY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+IGJs
b2NrQyA9ICh6ZXJvTWF0LXNjaHVyQ29tcGxlbWVudCkqbWF0QyppbnZBOworLQljb25zdCB0Y3U6
Ok1hdHJpeDxmbG9hdCwgMiwgMj4gYmxvY2tEID0gc2NodXJDb21wbGVtZW50OworLQorLQljb25z
dCBmbG9hdCByZXN1bHRbNCo0XSA9CistCXsKKy0JCWJsb2NrQSgwLDApLAlibG9ja0EoMCwxKSwJ
YmxvY2tCKDAsMCksCWJsb2NrQigwLDEpLAorLQkJYmxvY2tBKDEsMCksCWJsb2NrQSgxLDEpLAli
bG9ja0IoMSwwKSwJYmxvY2tCKDEsMSksCistCQlibG9ja0MoMCwwKSwJYmxvY2tDKDAsMSksCWJs
b2NrRCgwLDApLAlibG9ja0QoMCwxKSwKKy0JCWJsb2NrQygxLDApLAlibG9ja0MoMSwxKSwJYmxv
Y2tEKDEsMCksCWJsb2NrRCgxLDEpLAorLQl9OworLQorLQlyZXR1cm4gTWF0NChyZXN1bHQpOwor
KyAgICAvLyBCbG9ja3dpc2UgaW52ZXJzaW9uCisrCisrICAgIERFX0FTU0VSVChkZXRlcm1pbmFu
dChtYXQpICE9IDAuMGYpOworKworKyAgICBjb25zdCBmbG9hdCBhcmVhQVsyKjJdID0KKysgICAg
eworKyAgICAgICAgbWF0KDAsMCksICAgbWF0KDAsMSksCisrICAgICAgICBtYXQoMSwwKSwgICBt
YXQoMSwxKQorKyAgICB9OworKyAgICBjb25zdCBmbG9hdCBhcmVhQlsyKjJdID0KKysgICAgewor
KyAgICAgICAgbWF0KDAsMiksICAgbWF0KDAsMyksCisrICAgICAgICBtYXQoMSwyKSwgICBtYXQo
MSwzKQorKyAgICB9OworKyAgICBjb25zdCBmbG9hdCBhcmVhQ1syKjJdID0KKysgICAgeworKyAg
ICAgICAgbWF0KDIsMCksICAgbWF0KDIsMSksCisrICAgICAgICBtYXQoMywwKSwgICBtYXQoMywx
KQorKyAgICB9OworKyAgICBjb25zdCBmbG9hdCBhcmVhRFsyKjJdID0KKysgICAgeworKyAgICAg
ICAgbWF0KDIsMiksICAgbWF0KDIsMyksCisrICAgICAgICBtYXQoMywyKSwgICBtYXQoMywzKQor
KyAgICB9OworKyAgICBjb25zdCBmbG9hdCBudWxsRmllbGRbNF0gPSB7IDAuMGYgfTsKKysKKysg
ICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+IGludkEgPSBpbnZlcnNlKE1hdDIoYXJl
YUEpKTsKKysgICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+IG1hdEIgPSAgICAgICAg
IE1hdDIoYXJlYUIpOworKyAgICBjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgMiwgMj4gbWF0QyA9
ICAgICAgICAgTWF0MihhcmVhQyk7CisrICAgIGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAy
PiBtYXREID0gICAgICAgICBNYXQyKGFyZWFEKTsKKysKKysgICAgY29uc3QgdGN1OjpNYXRyaXg8
ZmxvYXQsIDIsIDI+IHNjaHVyQ29tcGxlbWVudCA9IGludmVyc2UobWF0RCAtIG1hdEMqaW52QSpt
YXRCKTsKKysgICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+IHplcm9NYXQgICAgICAg
ICA9IE1hdDIobnVsbEZpZWxkKTsKKysKKysgICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIs
IDI+IGJsb2NrQSA9IGludkEgKyBpbnZBKm1hdEIqc2NodXJDb21wbGVtZW50Km1hdEMqaW52QTsK
KysgICAgY29uc3QgdGN1OjpNYXRyaXg8ZmxvYXQsIDIsIDI+IGJsb2NrQiA9ICh6ZXJvTWF0LWlu
dkEpKm1hdEIqc2NodXJDb21wbGVtZW50OworKyAgICBjb25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwg
MiwgMj4gYmxvY2tDID0gKHplcm9NYXQtc2NodXJDb21wbGVtZW50KSptYXRDKmludkE7CisrICAg
IGNvbnN0IHRjdTo6TWF0cml4PGZsb2F0LCAyLCAyPiBibG9ja0QgPSBzY2h1ckNvbXBsZW1lbnQ7
CisrCisrICAgIGNvbnN0IGZsb2F0IHJlc3VsdFs0KjRdID0KKysgICAgeworKyAgICAgICAgYmxv
Y2tBKDAsMCksICAgIGJsb2NrQSgwLDEpLCAgICBibG9ja0IoMCwwKSwgICAgYmxvY2tCKDAsMSks
CisrICAgICAgICBibG9ja0EoMSwwKSwgICAgYmxvY2tBKDEsMSksICAgIGJsb2NrQigxLDApLCAg
ICBibG9ja0IoMSwxKSwKKysgICAgICAgIGJsb2NrQygwLDApLCAgICBibG9ja0MoMCwxKSwgICAg
YmxvY2tEKDAsMCksICAgIGJsb2NrRCgwLDEpLAorKyAgICAgICAgYmxvY2tDKDEsMCksICAgIGJs
b2NrQygxLDEpLCAgICBibG9ja0QoMSwwKSwgICAgYmxvY2tEKDEsMSksCisrICAgIH07CisrCisr
ICAgIHJldHVybiBNYXQ0KHJlc3VsdCk7CisgfQorIAorIC8vIG5lZ2F0ZQorQEAgLTg0NCwxMyAr
ODQ0LDEzIEBAIHRjdTo6TWF0cml4PGZsb2F0LCA0LCA0PiBpbnZlcnNlPDQ+IChjb25zdCB0Y3U6
Ok1hdHJpeDxmbG9hdCwgNCwgND4mIG1hdCkKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IFJv
d3MsIGludCBDb2xzPgorIHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IG5lZ2F0ZSAoY29uc3Qg
dGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4mIG1hdCkKKyB7CistCXRjdTo6TWF0cml4PFQsIFJv
d3MsIENvbHM+IHJldFZhbDsKKysgICAgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4gcmV0VmFs
OworIAorLQlmb3IgKGludCByID0gMDsgciA8IFJvd3M7ICsrcikKKy0JCWZvciAoaW50IGMgPSAw
OyBjIDwgQ29sczsgKytjKQorLQkJCXJldFZhbChyLGMpID0gLW1hdChyLCBjKTsKKysgICAgZm9y
IChpbnQgciA9IDA7IHIgPCBSb3dzOyArK3IpCisrICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8
IENvbHM7ICsrYykKKysgICAgICAgICAgICByZXRWYWwocixjKSA9IC1tYXQociwgYyk7CisgCist
CXJldHVybiByZXRWYWw7CisrICAgIHJldHVybiByZXRWYWw7CisgfQorIAorIC8vIGluY3JlbWVu
dC9kZWNyZW1lbnQKK0BAIC04NTgsMjUgKzg1OCwyNSBAQCB0Y3U6Ok1hdHJpeDxULCBSb3dzLCBD
b2xzPiBuZWdhdGUgKGNvbnN0IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBtYXQpCisgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGludCBSb3dzLCBpbnQgQ29scz4KKyB0Y3U6Ok1hdHJpeDxULCBS
b3dzLCBDb2xzPiBpbmNyZW1lbnQgKGNvbnN0IHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+JiBt
YXQpCisgeworLQl0Y3U6Ok1hdHJpeDxULCBSb3dzLCBDb2xzPiByZXRWYWw7CisrICAgIHRjdTo6
TWF0cml4PFQsIFJvd3MsIENvbHM+IHJldFZhbDsKKyAKKy0JZm9yIChpbnQgciA9IDA7IHIgPCBS
b3dzOyArK3IpCistCQlmb3IgKGludCBjID0gMDsgYyA8IENvbHM7ICsrYykKKy0JCQlyZXRWYWwo
cixjKSA9IG1hdChyLCBjKSArIDEuMGY7CisrICAgIGZvciAoaW50IHIgPSAwOyByIDwgUm93czsg
KytyKQorKyAgICAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCBDb2xzOyArK2MpCisrICAgICAgICAg
ICAgcmV0VmFsKHIsYykgPSBtYXQociwgYykgKyAxLjBmOworIAorLQlyZXR1cm4gcmV0VmFsOwor
KyAgICByZXR1cm4gcmV0VmFsOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IFJv
d3MsIGludCBDb2xzPgorIHRjdTo6TWF0cml4PFQsIFJvd3MsIENvbHM+IGRlY3JlbWVudCAoY29u
c3QgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4mIG1hdCkKKyB7CistCXRjdTo6TWF0cml4PFQs
IFJvd3MsIENvbHM+IHJldFZhbDsKKysgICAgdGN1OjpNYXRyaXg8VCwgUm93cywgQ29scz4gcmV0
VmFsOworIAorLQlmb3IgKGludCByID0gMDsgciA8IFJvd3M7ICsrcikKKy0JCWZvciAoaW50IGMg
PSAwOyBjIDwgQ29sczsgKytjKQorLQkJCXJldFZhbChyLGMpID0gbWF0KHIsIGMpIC0gMS4wZjsK
KysgICAgZm9yIChpbnQgciA9IDA7IHIgPCBSb3dzOyArK3IpCisrICAgICAgICBmb3IgKGludCBj
ID0gMDsgYyA8IENvbHM7ICsrYykKKysgICAgICAgICAgICByZXRWYWwocixjKSA9IG1hdChyLCBj
KSAtIDEuMGY7CisgCistCXJldHVybiByZXRWYWw7CisrICAgIHJldHVybiByZXRWYWw7CisgfQor
IAorIC8vIEV2YWx1YXRvciB0ZW1wbGF0ZS4KK0BAIC04ODksNDIzICs4ODksNDIzIEBAIHN0cnVj
dCBFdmFsdWF0b3I7CisgdGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBl
PgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfQURELCBJbjBEYXRhVHlwZSwgSW4xRGF0YVR5cGU+Cisg
eworLQlzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElu
cHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4xVHlwZSkKKy0JeworLQkJdHlwZW5hbWUgVHlw
ZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUJaW4wCT0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZ
TkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2
YWxDdHgsIDApCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBV
VFRZUEVfQ09OU1QsCUluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKy0JCXR5cGVuYW1lIFR5cGVU
cmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlCWluMQk9IChpbjFUeXBlID09IElOUFVUVFlQRV9EWU5B
TUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMURhdGFUeXBlPihldmFs
Q3R4LCAxKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRU
WVBFX0NPTlNULAlJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CistCQlldmFsQ3R4LmNvbG9yLnh5
eigpID0gcmVkdWNlVG9WZWMzKGluMCArIGluMSk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZh
bHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5w
dXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAgICAgIHR5cGVuYW1lIFR5cGVUcmFpdHM8SW4w
RGF0YVR5cGU+OjpUeXBlICBpbjAgPSAoaW4wVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBn
ZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9D
T05TVCwgICBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCk7CisrICAgICAgICB0eXBlbmFtZSBUeXBl
VHJhaXRzPEluMURhdGFUeXBlPjo6VHlwZSAgaW4xID0gKGluMVR5cGUgPT0gSU5QVVRUWVBFX0RZ
TkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+KGV2
YWxDdHgsIDEpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfQ09OU1QsICAgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpOworKyAgICAgICAgZXZh
bEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhpbjAgKyBpbjEpOworKyAgICB9CisgfTsK
KyAKKyB0ZW1wbGF0ZSA8aW50IEluMERhdGFUeXBlLCBpbnQgSW4xRGF0YVR5cGU+Cisgc3RydWN0
IEV2YWx1YXRvcjxPUF9TVUIsIEluMERhdGFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRp
YyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgSW5wdXRUeXBlIGlu
MFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQl0eXBlbmFtZSBUeXBlVHJhaXRzPElu
MERhdGFUeXBlPjo6VHlwZQlpbjAJPSAoaW4wVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBn
ZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkK
Ky0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05T
VCwJSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworLQkJdHlwZW5hbWUgVHlwZVRyYWl0czxJbjFE
YXRhVHlwZT46OlR5cGUJaW4xCT0gKGluMVR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0
SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpCist
CQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1Qs
CUluMURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKy0JCWV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1
Y2VUb1ZlYzMoaW4wIC0gaW4xKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hh
ZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4x
VHlwZSkKKysgICAgeworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRhVHlwZT46
OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFs
dWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgIElu
MERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIHR5cGVuYW1lIFR5cGVUcmFpdHM8SW4x
RGF0YVR5cGU+OjpUeXBlICBpbjEgPSAoaW4xVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBn
ZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkK
KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9D
T05TVCwgICBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CisrICAgICAgICBldmFsQ3R4LmNvbG9y
Lnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCAtIGluMSk7CisrICAgIH0KKyB9OworIAorIHRlbXBs
YXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9y
PE9QX01VTCwgSW4wRGF0YVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZh
bHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5w
dXRUeXBlIGluMVR5cGUpCistCXsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+
OjpUeXBlCWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFs
dWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJ
CQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRh
VHlwZT4oZXZhbEN0eCwgMCk7CistCQl0eXBlbmFtZSBUeXBlVHJhaXRzPEluMURhdGFUeXBlPjo6
VHlwZQlpbjEJPSAoaW4xVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVl
PElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkKKy0JCQkJCQkJCQkJ
CQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwJSW4xRGF0YVR5
cGU+KGV2YWxDdHgsIDEpOworLQkJZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhp
bjAgKiBpbjEpOworLQl9CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29u
dGV4dCYgZXZhbEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorKyAg
ICB7CisrICAgICAgICB0eXBlbmFtZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZSAgaW4w
ID0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZ
UEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4wRGF0YVR5cGU+
KGV2YWxDdHgsIDApOworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjFEYXRhVHlwZT46
OlR5cGUgIGluMSA9IChpbjFUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFs
dWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKQorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgIElu
MURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSBy
ZWR1Y2VUb1ZlYzMoaW4wICogaW4xKTsKKysgICAgfQorIH07CisgCisgdGVtcGxhdGUgPGludCBJ
bjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfRElWLCBJ
bjBEYXRhVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hh
ZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4x
VHlwZSkKKy0JeworLQkJdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUJaW4w
CT0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZ
UEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCistCQkJCQkJCQkJCQkJCQkJCQkJ
CQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCUluMERhdGFUeXBlPihldmFs
Q3R4LCAwKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlCWluMQk9
IChpbjFUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBF
X0RZTkFNSUMsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJ
ICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjFEYXRhVHlwZT4oZXZhbEN0
eCwgMSk7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCAvIGluMSk7
CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFs
Q3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAg
ICAgIHR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBlICBpbjAgPSAoaW4wVHlw
ZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlD
LCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICBJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCk7CisrICAgICAgICB0eXBlbmFtZSBUeXBlVHJhaXRzPEluMURhdGFUeXBlPjo6VHlwZSAgaW4x
ID0gKGluMVR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZ
UEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4xRGF0YVR5cGU+
KGV2YWxDdHgsIDEpOworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVj
MyhpbjAgLyBpbjEpOworKyAgICB9CisgfTsKKyAKKyB0ZW1wbGF0ZSA8aW50IEluMERhdGFUeXBl
LCBpbnQgSW4xRGF0YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9DT01QX01VTCwgSW4wRGF0
YVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0Jc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2
YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUp
CistCXsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBlCWluMAk9IChp
bjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZ
TkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAg
ICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCk7CistCQl0eXBlbmFtZSBUeXBlVHJhaXRzPEluMURhdGFUeXBlPjo6VHlwZQlpbjEJPSAoaW4x
VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5B
TUlDLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAg
OiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05TVCwJSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEp
OworLQkJZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhtYXRyaXhDb21wTXVsdChp
bjAsIGluMSkpOworLQl9CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29u
dGV4dCYgZXZhbEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorKyAg
ICB7CisrICAgICAgICB0eXBlbmFtZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZSAgaW4w
ID0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZ
UEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCisrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4wRGF0YVR5cGU+
KGV2YWxDdHgsIDApOworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjFEYXRhVHlwZT46
OlR5cGUgIGluMSA9IChpbjFUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFs
dWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMURhdGFUeXBlPihldmFsQ3R4LCAxKQorKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgIElu
MURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSBy
ZWR1Y2VUb1ZlYzMobWF0cml4Q29tcE11bHQoaW4wLCBpbjEpKTsKKysgICAgfQorIH07CisgCisg
dGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBFdmFs
dWF0b3I8T1BfT1VURVJfUFJPRFVDVCwgSW4wRGF0YVR5cGUsIEluMURhdGFUeXBlPgorIHsKKy0J
c3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5
cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCistCXsKKy0JCXR5cGVuYW1lIFR5cGVUcmFp
dHM8SW4wRGF0YVR5cGU+OjpUeXBlCWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
KSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBF
X0NPTlNULAlJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCk7CistCQl0eXBlbmFtZSBUeXBlVHJhaXRz
PEluMURhdGFUeXBlPjo6VHlwZQlpbjEJPSAoaW4xVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykg
PyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlwZT4oZXZhbEN0eCwg
MSkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9D
T05TVCwJSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpOworLQkJZXZhbEN0eC5jb2xvci54eXooKSA9
IHJlZHVjZVRvVmVjMyhvdXRlclByb2R1Y3QoaW4wLCBpbjEpKTsKKy0JfQorKyAgICBzdGF0aWMg
dm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBU
eXBlLCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRy
YWl0czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5B
TUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFs
Q3R4LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5Q
VVRUWVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIHR5cGVu
YW1lIFR5cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlICBpbjEgPSAoaW4xVHlwZSA9PSBJTlBV
VFRZUEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRh
VHlwZT4oZXZhbEN0eCwgMSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1
dFZhbHVlPElOUFVUVFlQRV9DT05TVCwgICBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CisrICAg
ICAgICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKG91dGVyUHJvZHVjdChpbjAs
IGluMSkpOworKyAgICB9CisgfTsKKyAKKyB0ZW1wbGF0ZSA8aW50IEluMERhdGFUeXBlLCBpbnQg
SW4xRGF0YVR5cGU+Cisgc3RydWN0IEV2YWx1YXRvcjxPUF9UUkFOU1BPU0UsIEluMERhdGFUeXBl
LCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29u
dGV4dCYgZXZhbEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7
CistCQlERV9VTlJFRihpbjFUeXBlKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5
cGU+OjpUeXBlCWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0
VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJ
CQkJCQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBE
YXRhVHlwZT4oZXZhbEN0eCwgMCk7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9W
ZWMzKHRyYW5zcG9zZShpbjApKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hh
ZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4x
VHlwZSkKKysgICAgeworKyAgICAgICAgREVfVU5SRUYoaW4xVHlwZSk7CisrICAgICAgICB0eXBl
bmFtZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZSAgaW4wID0gKGluMFR5cGUgPT0gSU5Q
VVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4wRGF0
YVR5cGU+KGV2YWxDdHgsIDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0SW5w
dXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworKyAg
ICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyh0cmFuc3Bvc2UoaW4wKSk7
CisrICAgIH0KKyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRh
VHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX0lOVkVSU0UsIEluMERhdGFUeXBlLCBJbjFEYXRh
VHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZh
bEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQlERV9V
TlJFRihpbjFUeXBlKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBl
CWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5Q
VVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJ
CQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4o
ZXZhbEN0eCwgMCk7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGludmVy
c2UoaW4wKSk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250
ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCisrICAg
IHsKKysgICAgICAgIERFX1VOUkVGKGluMVR5cGUpOworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRy
YWl0czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5B
TUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFs
Q3R4LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5Q
VVRUWVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIGV2YWxD
dHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW52ZXJzZShpbjApKTsKKysgICAgfQorIH07
CisgCisgdGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVj
dCBFdmFsdWF0b3I8T1BfREVURVJNSU5BTlQsIEluMERhdGFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7
CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgSW5w
dXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQlERV9VTlJFRihpbjFU
eXBlKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBlCWluMAk9IChp
bjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZ
TkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAg
ICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCk7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gVmVjMyhkZXRlcm1pbmFudChpbjApKTsKKy0J
fQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgs
IElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAg
REVfVU5SRUYoaW4xVHlwZSk7CisrICAgICAgICB0eXBlbmFtZSBUeXBlVHJhaXRzPEluMERhdGFU
eXBlPjo6VHlwZSAgaW4wID0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5w
dXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCisrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1Qs
ICAgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXoo
KSA9IFZlYzMoZGV0ZXJtaW5hbnQoaW4wKSk7CisrICAgIH0KKyB9OworIAorIHRlbXBsYXRlIDxp
bnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX1VO
QVJZX1BMVVMsIEluMERhdGFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2
YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElu
cHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQlERV9VTlJFRihpbjFUeXBlKTsKKy0JCXR5cGVuYW1l
IFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBlCWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQ
RV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBl
PihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8
SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCk7CistCQlldmFsQ3R4LmNv
bG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCk7CistCX0KKysgICAgc3RhdGljIHZvaWQgZXZh
bHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5w
dXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAgICAgIERFX1VOUkVGKGluMVR5cGUpOworKyAg
ICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBU
eXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFN
SUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKTsKKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW4wKTsK
KysgICAgfQorIH07CisgCisgdGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFU
eXBlPgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfTkVHQVRJT04sIEluMERhdGFUeXBlLCBJbjFEYXRh
VHlwZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZh
bEN0eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQlERV9V
TlJFRihpbjFUeXBlKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBl
CWluMAk9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5Q
VVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJ
CQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4o
ZXZhbEN0eCwgMCk7CistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKG5lZ2F0
ZShpbjApKTsKKy0JfQorKyAgICBzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRl
eHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAg
eworKyAgICAgICAgREVfVU5SRUYoaW4xVHlwZSk7CisrICAgICAgICB0eXBlbmFtZSBUeXBlVHJh
aXRzPEluMERhdGFUeXBlPjo6VHlwZSAgaW4wID0gKGluMFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFN
SUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+KGV2YWxD
dHgsIDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBV
VFRZUEVfQ09OU1QsICAgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworKyAgICAgICAgZXZhbEN0
eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhuZWdhdGUoaW4wKSk7CisrICAgIH0KKyB9Owor
IAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3Qg
RXZhbHVhdG9yPE9QX1BSRV9JTkNSRU1FTlQsIEluMERhdGFUeXBlLCBJbjFEYXRhVHlwZT4KKyB7
CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0eCwgSW5w
dXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQlERV9VTlJFRihpbjFU
eXBlKTsKKy0JCXR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0YVR5cGU+OjpUeXBlCWluMAk9IChp
bjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZ
TkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAg
ICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNULAlJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCk7CisrICAgIHN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0
eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorKyAgICB7CisrICAgICAg
ICBERV9VTlJFRihpbjFUeXBlKTsKKysgICAgICAgIHR5cGVuYW1lIFR5cGVUcmFpdHM8SW4wRGF0
YVR5cGU+OjpUeXBlICBpbjAgPSAoaW4wVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyBnZXRJ
bnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCkKKysg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9DT05T
VCwgICBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCk7CisgCistCQkvLyBtb2RpZnlpbmcgcmVkdWN0
aW9uOiBzdW0gbW9kaWZpZWQgdmFsdWUgdG9vCistCQlldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVk
dWNlVG9WZWMzKGluY3JlbWVudChpbjApKSArIHJlZHVjZVRvVmVjMyhpbmNyZW1lbnQoaW4wKSk7
CistCX0KKysgICAgICAgIC8vIG1vZGlmeWluZyByZWR1Y3Rpb246IHN1bSBtb2RpZmllZCB2YWx1
ZSB0b28KKysgICAgICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW5jcmVt
ZW50KGluMCkpICsgcmVkdWNlVG9WZWMzKGluY3JlbWVudChpbjApKTsKKysgICAgfQorIH07Cisg
CisgdGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBlPgorIHN0cnVjdCBF
dmFsdWF0b3I8T1BfUFJFX0RFQ1JFTUVOVCwgSW4wRGF0YVR5cGUsIEluMURhdGFUeXBlPgorIHsK
Ky0Jc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1
dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCistCXsKKy0JCURFX1VOUkVGKGluMVR5
cGUpOworLQkJdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUJaW4wCT0gKGlu
MFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlO
QU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAg
IDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCUluMERhdGFUeXBlPihldmFsQ3R4LCAw
KTsKKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4
LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAgICAg
IERFX1VOUkVGKGluMVR5cGUpOworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRh
VHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElu
cHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNU
LCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKyAKKy0JCS8vIG1vZGlmeWluZyByZWR1Y3Rp
b246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28KKy0JCWV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1
Y2VUb1ZlYzMoZGVjcmVtZW50KGluMCkpICsgcmVkdWNlVG9WZWMzKGRlY3JlbWVudChpbjApKTsK
Ky0JfQorKyAgICAgICAgLy8gbW9kaWZ5aW5nIHJlZHVjdGlvbjogc3VtIG1vZGlmaWVkIHZhbHVl
IHRvbworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhkZWNyZW1l
bnQoaW4wKSkgKyByZWR1Y2VUb1ZlYzMoZGVjcmVtZW50KGluMCkpOworKyAgICB9CisgfTsKKyAK
KyB0ZW1wbGF0ZSA8aW50IEluMERhdGFUeXBlLCBpbnQgSW4xRGF0YVR5cGU+Cisgc3RydWN0IEV2
YWx1YXRvcjxPUF9QT1NUX0lOQ1JFTUVOVCwgSW4wRGF0YVR5cGUsIEluMURhdGFUeXBlPgorIHsK
Ky0Jc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1
dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCistCXsKKy0JCURFX1VOUkVGKGluMVR5
cGUpOworLQkJdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUJaW4wCT0gKGlu
MFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlO
QU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAg
IDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsCUluMERhdGFUeXBlPihldmFsQ3R4LCAw
KTsKKysgICAgc3RhdGljIHZvaWQgZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4
LCBJbnB1dFR5cGUgaW4wVHlwZSwgSW5wdXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAgICAg
IERFX1VOUkVGKGluMVR5cGUpOworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0czxJbjBEYXRh
VHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKSA/IGdldElu
cHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKQorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0NPTlNU
LCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKyAKKy0JCS8vIG1vZGlmeWluZyByZWR1Y3Rp
b246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28KKy0JCWV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1
Y2VUb1ZlYzMoaW4wKSArIHJlZHVjZVRvVmVjMyhpbmNyZW1lbnQoaW4wKSk7CistCX0KKysgICAg
ICAgIC8vIG1vZGlmeWluZyByZWR1Y3Rpb246IHN1bSBtb2RpZmllZCB2YWx1ZSB0b28KKysgICAg
ICAgIGV2YWxDdHguY29sb3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW4wKSArIHJlZHVjZVRvVmVj
MyhpbmNyZW1lbnQoaW4wKSk7CisrICAgIH0KKyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0
YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBzdHJ1Y3QgRXZhbHVhdG9yPE9QX1BPU1RfREVDUkVN
RU5ULCBJbjBEYXRhVHlwZSwgSW4xRGF0YVR5cGU+CisgeworLQlzdGF0aWMgdm9pZCBldmFsdWF0
ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5
cGUgaW4xVHlwZSkKKy0JeworLQkJREVfVU5SRUYoaW4xVHlwZSk7CistCQl0eXBlbmFtZSBUeXBl
VHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZQlpbjAJPSAoaW4wVHlwZSA9PSBJTlBVVFRZUEVfRFlO
QU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlwZT4oZXZh
bEN0eCwgMCkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVU
VFlQRV9DT05TVCwJSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworKyAgICBzdGF0aWMgdm9pZCBl
dmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBlLCBJ
bnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAgREVfVU5SRUYoaW4xVHlwZSk7Cisr
ICAgICAgICB0eXBlbmFtZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZSAgaW4wID0gKGlu
MFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlO
QU1JQywgSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApCisrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4wRGF0YVR5cGU+KGV2YWxD
dHgsIDApOworIAorLQkJLy8gbW9kaWZ5aW5nIHJlZHVjdGlvbjogc3VtIG1vZGlmaWVkIHZhbHVl
IHRvbworLQkJZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhpbjApICsgcmVkdWNl
VG9WZWMzKGRlY3JlbWVudChpbjApKTsKKy0JfQorKyAgICAgICAgLy8gbW9kaWZ5aW5nIHJlZHVj
dGlvbjogc3VtIG1vZGlmaWVkIHZhbHVlIHRvbworKyAgICAgICAgZXZhbEN0eC5jb2xvci54eXoo
KSA9IHJlZHVjZVRvVmVjMyhpbjApICsgcmVkdWNlVG9WZWMzKGRlY3JlbWVudChpbjApKTsKKysg
ICAgfQorIH07CisgCisgdGVtcGxhdGUgPGludCBJbjBEYXRhVHlwZSwgaW50IEluMURhdGFUeXBl
PgorIHN0cnVjdCBFdmFsdWF0b3I8T1BfQUREX0lOVE8sIEluMERhdGFUeXBlLCBJbjFEYXRhVHlw
ZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0
eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQl0eXBlbmFt
ZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZQlpbjAJPSAoaW4wVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlw
ZT4oZXZhbEN0eCwgMCkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVl
PElOUFVUVFlQRV9DT05TVCwJSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworLQkJdHlwZW5hbWUg
VHlwZVRyYWl0czxJbjFEYXRhVHlwZT46OlR5cGUJaW4xCT0gKGluMVR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+
KGV2YWxDdHgsIDEpCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfQ09OU1QsCUluMURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKy0JCWV2YWxDdHguY29s
b3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW4wICsgaW4xKTsKKy0JfQorKyAgICBzdGF0aWMgdm9p
ZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBl
LCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0
czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
KSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRU
WVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIHR5cGVuYW1l
IFR5cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlICBpbjEgPSAoaW4xVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlw
ZT4oZXZhbEN0eCwgMSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZh
bHVlPElOUFVUVFlQRV9DT05TVCwgICBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CisrICAgICAg
ICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCArIGluMSk7CisrICAgIH0K
KyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBz
dHJ1Y3QgRXZhbHVhdG9yPE9QX1NVQlRSQUNUX0ZST00sIEluMERhdGFUeXBlLCBJbjFEYXRhVHlw
ZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0
eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQl0eXBlbmFt
ZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZQlpbjAJPSAoaW4wVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlw
ZT4oZXZhbEN0eCwgMCkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVl
PElOUFVUVFlQRV9DT05TVCwJSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworLQkJdHlwZW5hbWUg
VHlwZVRyYWl0czxJbjFEYXRhVHlwZT46OlR5cGUJaW4xCT0gKGluMVR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+
KGV2YWxDdHgsIDEpCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfQ09OU1QsCUluMURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKy0JCWV2YWxDdHguY29s
b3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW4wIC0gaW4xKTsKKy0JfQorKyAgICBzdGF0aWMgdm9p
ZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBl
LCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0
czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
KSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRU
WVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIHR5cGVuYW1l
IFR5cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlICBpbjEgPSAoaW4xVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlw
ZT4oZXZhbEN0eCwgMSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZh
bHVlPElOUFVUVFlQRV9DT05TVCwgICBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CisrICAgICAg
ICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCAtIGluMSk7CisrICAgIH0K
KyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBz
dHJ1Y3QgRXZhbHVhdG9yPE9QX01VTFRJUExZX0lOVE8sIEluMERhdGFUeXBlLCBJbjFEYXRhVHlw
ZT4KKyB7CistCXN0YXRpYyB2b2lkIGV2YWx1YXRlIChTaGFkZXJFdmFsQ29udGV4dCYgZXZhbEN0
eCwgSW5wdXRUeXBlIGluMFR5cGUsIElucHV0VHlwZSBpbjFUeXBlKQorLQl7CistCQl0eXBlbmFt
ZSBUeXBlVHJhaXRzPEluMERhdGFUeXBlPjo6VHlwZQlpbjAJPSAoaW4wVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlw
ZT4oZXZhbEN0eCwgMCkKKy0JCQkJCQkJCQkJCQkJCQkJCQkJCSAgICAgOiBnZXRJbnB1dFZhbHVl
PElOUFVUVFlQRV9DT05TVCwJSW4wRGF0YVR5cGU+KGV2YWxDdHgsIDApOworLQkJdHlwZW5hbWUg
VHlwZVRyYWl0czxJbjFEYXRhVHlwZT46OlR5cGUJaW4xCT0gKGluMVR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+
KGV2YWxDdHgsIDEpCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfQ09OU1QsCUluMURhdGFUeXBlPihldmFsQ3R4LCAxKTsKKy0JCWV2YWxDdHguY29s
b3IueHl6KCkgPSByZWR1Y2VUb1ZlYzMoaW4wICogaW4xKTsKKy0JfQorKyAgICBzdGF0aWMgdm9p
ZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgsIElucHV0VHlwZSBpbjBUeXBl
LCBJbnB1dFR5cGUgaW4xVHlwZSkKKysgICAgeworKyAgICAgICAgdHlwZW5hbWUgVHlwZVRyYWl0
czxJbjBEYXRhVHlwZT46OlR5cGUgIGluMCA9IChpbjBUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
KSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMERhdGFUeXBlPihldmFsQ3R4
LCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldElucHV0VmFsdWU8SU5QVVRU
WVBFX0NPTlNULCAgIEluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKysgICAgICAgIHR5cGVuYW1l
IFR5cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlICBpbjEgPSAoaW4xVHlwZSA9PSBJTlBVVFRZ
UEVfRFlOQU1JQykgPyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjFEYXRhVHlw
ZT4oZXZhbEN0eCwgMSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZh
bHVlPElOUFVUVFlQRV9DT05TVCwgICBJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CisrICAgICAg
ICBldmFsQ3R4LmNvbG9yLnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCAqIGluMSk7CisrICAgIH0K
KyB9OworIAorIHRlbXBsYXRlIDxpbnQgSW4wRGF0YVR5cGUsIGludCBJbjFEYXRhVHlwZT4KKyBz
dHJ1Y3QgRXZhbHVhdG9yPE9QX0RJVklERV9JTlRPLCBJbjBEYXRhVHlwZSwgSW4xRGF0YVR5cGU+
CisgeworLQlzdGF0aWMgdm9pZCBldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgs
IElucHV0VHlwZSBpbjBUeXBlLCBJbnB1dFR5cGUgaW4xVHlwZSkKKy0JeworLQkJdHlwZW5hbWUg
VHlwZVRyYWl0czxJbjBEYXRhVHlwZT46OlR5cGUJaW4wCT0gKGluMFR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4wRGF0YVR5cGU+
KGV2YWxDdHgsIDApCistCQkJCQkJCQkJCQkJCQkJCQkJCQkgICAgIDogZ2V0SW5wdXRWYWx1ZTxJ
TlBVVFRZUEVfQ09OU1QsCUluMERhdGFUeXBlPihldmFsQ3R4LCAwKTsKKy0JCXR5cGVuYW1lIFR5
cGVUcmFpdHM8SW4xRGF0YVR5cGU+OjpUeXBlCWluMQk9IChpbjFUeXBlID09IElOUFVUVFlQRV9E
WU5BTUlDKSA/IGdldElucHV0VmFsdWU8SU5QVVRUWVBFX0RZTkFNSUMsIEluMURhdGFUeXBlPihl
dmFsQ3R4LCAxKQorLQkJCQkJCQkJCQkJCQkJCQkJCQkJICAgICA6IGdldElucHV0VmFsdWU8SU5Q
VVRUWVBFX0NPTlNULAlJbjFEYXRhVHlwZT4oZXZhbEN0eCwgMSk7CistCQlldmFsQ3R4LmNvbG9y
Lnh5eigpID0gcmVkdWNlVG9WZWMzKGluMCAvIGluMSk7CistCX0KKysgICAgc3RhdGljIHZvaWQg
ZXZhbHVhdGUgKFNoYWRlckV2YWxDb250ZXh0JiBldmFsQ3R4LCBJbnB1dFR5cGUgaW4wVHlwZSwg
SW5wdXRUeXBlIGluMVR5cGUpCisrICAgIHsKKysgICAgICAgIHR5cGVuYW1lIFR5cGVUcmFpdHM8
SW4wRGF0YVR5cGU+OjpUeXBlICBpbjAgPSAoaW4wVHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykg
PyBnZXRJbnB1dFZhbHVlPElOUFVUVFlQRV9EWU5BTUlDLCBJbjBEYXRhVHlwZT4oZXZhbEN0eCwg
MCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBnZXRJbnB1dFZhbHVlPElOUFVUVFlQ
RV9DT05TVCwgICBJbjBEYXRhVHlwZT4oZXZhbEN0eCwgMCk7CisrICAgICAgICB0eXBlbmFtZSBU
eXBlVHJhaXRzPEluMURhdGFUeXBlPjo6VHlwZSAgaW4xID0gKGluMVR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMpID8gZ2V0SW5wdXRWYWx1ZTxJTlBVVFRZUEVfRFlOQU1JQywgSW4xRGF0YVR5cGU+
KGV2YWxDdHgsIDEpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0SW5wdXRWYWx1
ZTxJTlBVVFRZUEVfQ09OU1QsICAgSW4xRGF0YVR5cGU+KGV2YWxDdHgsIDEpOworKyAgICAgICAg
ZXZhbEN0eC5jb2xvci54eXooKSA9IHJlZHVjZVRvVmVjMyhpbjAgLyBpbjEpOworKyAgICB9Cisg
fTsKKyAKKyBNYXRyaXhTaGFkZXJFdmFsRnVuYyBnZXRFdmFsRnVuYyAoY29uc3QgU2hhZGVySW5w
dXQmIGluMCwgY29uc3QgU2hhZGVySW5wdXQmIGluMSwgTWF0cml4T3Agb3ApCisgeworLQkvLyBF
dmFsdWF0b3IgaXMgc2VsZWN0ZWQgYmFzZWQgb24gb3AgYW5kIGlucHV0IGRhdGEgdHlwZXMuCist
CS8vIEZvciBlZmZpY2llbnQgbG9va3VwIHRoZSB0eXBlcyBhbmQgb3AgZW51bXMgYXJlIHBhY2tl
ZCB0b2dldGhlciB0byBmb3JtIGEgMTktYml0IGtleToKKy0JLy8gWzE4Li4xNCBPUF0gWzEzLi43
IFRZUEUwXSBbNi4uMCBUWVBFMV0KKy0KKy0JREVfU1RBVElDX0FTU0VSVChUWVBFX0xBU1QJPD0g
KDE8PDcpKTsKKy0JREVfU1RBVElDX0FTU0VSVChPUF9MQVNUCTw9ICgxPDw1KSk7CistCistI2Rl
ZmluZSBQQUNLX0VWQUxfQ0FTRShPUCwgSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKQkoKChPUCkg
PDwgMTQpIHwgKChJTjBEQVRBVFlQRSkgPDwgNykgfCAoSU4xREFUQVRZUEUpKQorLQorLSNkZWZp
bmUgTUFLRV9FVkFMX0NBU0UoT1AsIElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSkJXAorLQljYXNl
IFBBQ0tfRVZBTF9DQVNFKE9QLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpOglcCistCQlyZXR1
cm4gRXZhbHVhdG9yPE9QLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEU+OjpldmFsdWF0ZQorLQor
LSNkZWZpbmUgTUFLRV9TQ0FMQVJfT1BTKElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSkJCVwKKy0J
TUFLRV9FVkFMX0NBU0UoT1BfQURELCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpOwlcCistCU1B
S0VfRVZBTF9DQVNFKE9QX1NVQiwgSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKTsJXAorLQlNQUtF
X0VWQUxfQ0FTRShPUF9NVUwsIElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSk7CVwKKy0JTUFLRV9F
VkFMX0NBU0UoT1BfRElWLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCistCistI2RlZmluZSBN
QUtFX0NXSVNFX09QUyhJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCQkJXAorLQlNQUtFX0VWQUxf
Q0FTRShPUF9BREQsCQlJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpOwlcCistCU1BS0VfRVZBTF9D
QVNFKE9QX1NVQiwJCUlOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSk7CVwKKy0JTUFLRV9FVkFMX0NB
U0UoT1BfRElWLAkJSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKTsJXAorLQlNQUtFX0VWQUxfQ0FT
RShPUF9DT01QX01VTCwJSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKQorLQorLSNkZWZpbmUgTUFL
RV9NVUxfT1AoSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKQkJCVwKKy0JTUFLRV9FVkFMX0NBU0Uo
T1BfTVVMLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCistCistI2RlZmluZSBNQUtFX1ZFQ1ZF
Q19PUChJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCQkJXAorLQlNQUtFX0VWQUxfQ0FTRShPUF9P
VVRFUl9QUk9EVUNULCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCistCistI2RlZmluZSBNQUtF
X1VOQVJZX09QKElOMERBVEFUWVBFKQkJCQkJCQkJXAorLQlNQUtFX0VWQUxfQ0FTRShPUF9UUkFO
U1BPU0UsCQlJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKTsJXAorLQlNQUtFX0VWQUxfQ0FTRShPUF9V
TkFSWV9QTFVTLAkJSU4wREFUQVRZUEUsIFRZUEVfTEFTVCk7CVwKKy0JTUFLRV9FVkFMX0NBU0Uo
T1BfTkVHQVRJT04sCQkJSU4wREFUQVRZUEUsIFRZUEVfTEFTVCk7CVwKKy0JTUFLRV9FVkFMX0NB
U0UoT1BfUFJFX0lOQ1JFTUVOVCwJSU4wREFUQVRZUEUsIFRZUEVfTEFTVCk7CVwKKy0JTUFLRV9F
VkFMX0NBU0UoT1BfUFJFX0RFQ1JFTUVOVCwJSU4wREFUQVRZUEUsIFRZUEVfTEFTVCk7CVwKKy0J
TUFLRV9FVkFMX0NBU0UoT1BfUE9TVF9JTkNSRU1FTlQsCUlOMERBVEFUWVBFLCBUWVBFX0xBU1Qp
OwlcCistCU1BS0VfRVZBTF9DQVNFKE9QX1BPU1RfREVDUkVNRU5ULAlJTjBEQVRBVFlQRSwgVFlQ
RV9MQVNUKQorLQorLSNkZWZpbmUgTUFLRV9VTkFSWV9TWU1NRVRSSUNfT1AoSU4wREFUQVRZUEUp
CQkJCQlcCistCU1BS0VfVU5BUllfT1AoSU4wREFUQVRZUEUpOwkJCQkJCQkJCVwKKy0JTUFLRV9F
VkFMX0NBU0UoT1BfREVURVJNSU5BTlQsCUlOMERBVEFUWVBFLCBUWVBFX0xBU1QpOwlcCistCU1B
S0VfRVZBTF9DQVNFKE9QX0lOVkVSU0UsCQlJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKQorLQorLSNk
ZWZpbmUgTUFLRV9BU1NJR05NRU5UX09QKElOMERBVEFUWVBFKQkJCQkJCQkJXAorLQlNQUtFX0VW
QUxfQ0FTRShPUF9BRERfSU5UTywJCQlJTjBEQVRBVFlQRSwgSU4wREFUQVRZUEUpOwlcCistCU1B
S0VfRVZBTF9DQVNFKE9QX1NVQlRSQUNUX0ZST00sCUlOMERBVEFUWVBFLCBJTjBEQVRBVFlQRSk7
CVwKKy0JTUFLRV9FVkFMX0NBU0UoT1BfRElWSURFX0lOVE8sCQlJTjBEQVRBVFlQRSwgSU4wREFU
QVRZUEUpCistCistI2RlZmluZSBNQUtFX0FTU0lHTk1FTlRfU1lNTUVUUklDX09QKElOMERBVEFU
WVBFKQkJCQkJXAorLQlNQUtFX0FTU0lHTk1FTlRfT1AoSU4wREFUQVRZUEUpOwkJCQkJCQkJXAor
LQlNQUtFX0VWQUxfQ0FTRShPUF9NVUxUSVBMWV9JTlRPLAlJTjBEQVRBVFlQRSwgSU4wREFUQVRZ
UEUpCistCistCXN3aXRjaCAoUEFDS19FVkFMX0NBU0Uob3AsIGluMC5kYXRhVHlwZSwgaW4xLmRh
dGFUeXBlKSkKKy0JeworLQkJLy8gTWF0cml4LXNjYWxhci4KKy0JCU1BS0VfU0NBTEFSX09QUyhU
WVBFX0ZMT0FUX01BVDIsCVRZUEVfRkxPQVQpOworLQkJTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxP
QVRfTUFUMlgzLAlUWVBFX0ZMT0FUKTsKKy0JCU1BS0VfU0NBTEFSX09QUyhUWVBFX0ZMT0FUX01B
VDJYNCwJVFlQRV9GTE9BVCk7CistCQlNQUtFX1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQzWDIs
CVRZUEVfRkxPQVQpOworLQkJTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxPQVRfTUFUMywJVFlQRV9G
TE9BVCk7CistCQlNQUtFX1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQzWDQsCVRZUEVfRkxPQVQp
OworLQkJTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxPQVRfTUFUNFgyLAlUWVBFX0ZMT0FUKTsKKy0J
CU1BS0VfU0NBTEFSX09QUyhUWVBFX0ZMT0FUX01BVDRYMywJVFlQRV9GTE9BVCk7CistCQlNQUtF
X1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQ0LAlUWVBFX0ZMT0FUKTsKKy0KKy0JCS8vIE1hdHJp
eC12ZWN0b3IuCistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDIsCVRZUEVfRkxPQVRfVkVD
Mik7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDJYMywJVFlQRV9GTE9BVF9WRUMyKTsK
Ky0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMlg0LAlUWVBFX0ZMT0FUX1ZFQzIpOworLQkJ
TUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDIsCVRZUEVfRkxPQVRfVkVDMyk7CistCQlNQUtF
X01VTF9PUChUWVBFX0ZMT0FUX01BVDMsCVRZUEVfRkxPQVRfVkVDMyk7CistCQlNQUtFX01VTF9P
UChUWVBFX0ZMT0FUX01BVDNYNCwJVFlQRV9GTE9BVF9WRUMzKTsKKy0JCU1BS0VfTVVMX09QKFRZ
UEVfRkxPQVRfTUFUNFgyLAlUWVBFX0ZMT0FUX1ZFQzQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9G
TE9BVF9NQVQ0WDMsCVRZUEVfRkxPQVRfVkVDNCk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FU
X01BVDQsCVRZUEVfRkxPQVRfVkVDNCk7CistCistCQkvLyBWZWN0b3ItbWF0cml4LgorLQkJTUFL
RV9NVUxfT1AoVFlQRV9GTE9BVF9WRUMyLCBUWVBFX0ZMT0FUX01BVDIpOworLQkJTUFLRV9NVUxf
T1AoVFlQRV9GTE9BVF9WRUMzLCBUWVBFX0ZMT0FUX01BVDJYMyk7CistCQlNQUtFX01VTF9PUChU
WVBFX0ZMT0FUX1ZFQzQsIFRZUEVfRkxPQVRfTUFUMlg0KTsKKy0JCU1BS0VfTVVMX09QKFRZUEVf
RkxPQVRfVkVDMiwgVFlQRV9GTE9BVF9NQVQzWDIpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9B
VF9WRUMzLCBUWVBFX0ZMT0FUX01BVDMpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9WRUM0
LCBUWVBFX0ZMT0FUX01BVDNYNCk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX1ZFQzIsIFRZ
UEVfRkxPQVRfTUFUNFgyKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfVkVDMywgVFlQRV9G
TE9BVF9NQVQ0WDMpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9WRUM0LCBUWVBFX0ZMT0FU
X01BVDQpOworLQorLQkJLy8gTWF0cml4LW1hdHJpeC4KKy0JCU1BS0VfQ1dJU0VfT1BTKFRZUEVf
RkxPQVRfTUFUMiwJCVRZUEVfRkxPQVRfTUFUMik7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FU
X01BVDIsCQlUWVBFX0ZMT0FUX01BVDIpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQy
LAkJVFlQRV9GTE9BVF9NQVQzWDIpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyLAkJ
VFlQRV9GTE9BVF9NQVQ0WDIpOworLQorLQkJTUFLRV9DV0lTRV9PUFMoVFlQRV9GTE9BVF9NQVQy
WDMsCVRZUEVfRkxPQVRfTUFUMlgzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMlgz
LAkJVFlQRV9GTE9BVF9NQVQyKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMlgzLAkJ
VFlQRV9GTE9BVF9NQVQzWDIpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDMsCQlU
WVBFX0ZMT0FUX01BVDRYMik7CistCistCQlNQUtFX0NXSVNFX09QUyhUWVBFX0ZMT0FUX01BVDJY
NCwJVFlQRV9GTE9BVF9NQVQyWDQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDQs
CQlUWVBFX0ZMT0FUX01BVDIpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDQsCQlU
WVBFX0ZMT0FUX01BVDNYMik7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDJYNCwJCVRZ
UEVfRkxPQVRfTUFUNFgyKTsKKy0KKy0JCU1BS0VfQ1dJU0VfT1BTKFRZUEVfRkxPQVRfTUFUM1gy
LAlUWVBFX0ZMT0FUX01BVDNYMik7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDNYMiwJ
CVRZUEVfRkxPQVRfTUFUMlgzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUM1gyLAkJ
VFlQRV9GTE9BVF9NQVQzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUM1gyLAkJVFlQ
RV9GTE9BVF9NQVQ0WDMpOworLQorLQkJTUFLRV9DV0lTRV9PUFMoVFlQRV9GTE9BVF9NQVQzLAkJ
VFlQRV9GTE9BVF9NQVQzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMywJCVRZUEVf
RkxPQVRfTUFUMlgzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMywJCVRZUEVfRkxP
QVRfTUFUMyk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDMsCQlUWVBFX0ZMT0FUX01B
VDRYMyk7CistCistCQlNQUtFX0NXSVNFX09QUyhUWVBFX0ZMT0FUX01BVDNYNCwJVFlQRV9GTE9B
VF9NQVQzWDQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDQsCQlUWVBFX0ZMT0FU
X01BVDJYMyk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDNYNCwJCVRZUEVfRkxPQVRf
TUFUMyk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDNYNCwJCVRZUEVfRkxPQVRfTUFU
NFgzKTsKKy0KKy0JCU1BS0VfQ1dJU0VfT1BTKFRZUEVfRkxPQVRfTUFUNFgyLAlUWVBFX0ZMT0FU
X01BVDRYMik7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDRYMiwJCVRZUEVfRkxPQVRf
TUFUMlg0KTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUNFgyLAkJVFlQRV9GTE9BVF9N
QVQzWDQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0WDIsCQlUWVBFX0ZMT0FUX01B
VDQpOworLQorLQkJTUFLRV9DV0lTRV9PUFMoVFlQRV9GTE9BVF9NQVQ0WDMsCVRZUEVfRkxPQVRf
TUFUNFgzKTsKKy0JCU1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUNFgzLAkJVFlQRV9GTE9BVF9N
QVQyWDQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0WDMsCQlUWVBFX0ZMT0FUX01B
VDNYNCk7CistCQlNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDRYMywJCVRZUEVfRkxPQVRfTUFU
NCk7CistCistCQlNQUtFX0NXSVNFX09QUyhUWVBFX0ZMT0FUX01BVDQsCQlUWVBFX0ZMT0FUX01B
VDQpOworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0LAkJVFlQRV9GTE9BVF9NQVQyWDQp
OworLQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0LAkJVFlQRV9GTE9BVF9NQVQzWDQpOwor
LQkJTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0LAkJVFlQRV9GTE9BVF9NQVQ0KTsKKy0KKy0J
CS8vIFZlY3Rvci12ZWN0b3IuCistCQlNQUtFX1ZFQ1ZFQ19PUChUWVBFX0ZMT0FUX1ZFQzIsCQlU
WVBFX0ZMT0FUX1ZFQzIpOworLQkJTUFLRV9WRUNWRUNfT1AoVFlQRV9GTE9BVF9WRUMyLAkJVFlQ
RV9GTE9BVF9WRUMzKTsKKy0JCU1BS0VfVkVDVkVDX09QKFRZUEVfRkxPQVRfVkVDMiwJCVRZUEVf
RkxPQVRfVkVDNCk7CistCQlNQUtFX1ZFQ1ZFQ19PUChUWVBFX0ZMT0FUX1ZFQzMsCQlUWVBFX0ZM
T0FUX1ZFQzIpOworLQkJTUFLRV9WRUNWRUNfT1AoVFlQRV9GTE9BVF9WRUMzLAkJVFlQRV9GTE9B
VF9WRUMzKTsKKy0JCU1BS0VfVkVDVkVDX09QKFRZUEVfRkxPQVRfVkVDMywJCVRZUEVfRkxPQVRf
VkVDNCk7CistCQlNQUtFX1ZFQ1ZFQ19PUChUWVBFX0ZMT0FUX1ZFQzQsCQlUWVBFX0ZMT0FUX1ZF
QzIpOworLQkJTUFLRV9WRUNWRUNfT1AoVFlQRV9GTE9BVF9WRUM0LAkJVFlQRV9GTE9BVF9WRUMz
KTsKKy0JCU1BS0VfVkVDVkVDX09QKFRZUEVfRkxPQVRfVkVDNCwJCVRZUEVfRkxPQVRfVkVDNCk7
CistCistCQkvLyBVbmFyeSBNYXRyaXguCistCQlNQUtFX1VOQVJZX1NZTU1FVFJJQ19PUChUWVBF
X0ZMT0FUX01BVDIpOworLQkJTUFLRV9VTkFSWV9PUChUWVBFX0ZMT0FUX01BVDJYMyk7CistCQlN
QUtFX1VOQVJZX09QKFRZUEVfRkxPQVRfTUFUMlg0KTsKKy0JCU1BS0VfVU5BUllfT1AoVFlQRV9G
TE9BVF9NQVQzWDIpOworLQkJTUFLRV9VTkFSWV9TWU1NRVRSSUNfT1AoVFlQRV9GTE9BVF9NQVQz
KTsKKy0JCU1BS0VfVU5BUllfT1AoVFlQRV9GTE9BVF9NQVQzWDQpOworLQkJTUFLRV9VTkFSWV9P
UChUWVBFX0ZMT0FUX01BVDRYMik7CistCQlNQUtFX1VOQVJZX09QKFRZUEVfRkxPQVRfTUFUNFgz
KTsKKy0JCU1BS0VfVU5BUllfU1lNTUVUUklDX09QKFRZUEVfRkxPQVRfTUFUNCk7CistCistCQkv
LyBBc3NpZ25tZW50cworLQkJTUFLRV9BU1NJR05NRU5UX1NZTU1FVFJJQ19PUChUWVBFX0ZMT0FU
X01BVDIpOworLQkJTUFLRV9BU1NJR05NRU5UX09QKFRZUEVfRkxPQVRfTUFUMlgzKTsKKy0JCU1B
S0VfQVNTSUdOTUVOVF9PUChUWVBFX0ZMT0FUX01BVDJYNCk7CistCQlNQUtFX0FTU0lHTk1FTlRf
T1AoVFlQRV9GTE9BVF9NQVQzWDIpOworLQkJTUFLRV9BU1NJR05NRU5UX1NZTU1FVFJJQ19PUChU
WVBFX0ZMT0FUX01BVDMpOworLQkJTUFLRV9BU1NJR05NRU5UX09QKFRZUEVfRkxPQVRfTUFUM1g0
KTsKKy0JCU1BS0VfQVNTSUdOTUVOVF9PUChUWVBFX0ZMT0FUX01BVDRYMik7CistCQlNQUtFX0FT
U0lHTk1FTlRfT1AoVFlQRV9GTE9BVF9NQVQ0WDMpOworLQkJTUFLRV9BU1NJR05NRU5UX1NZTU1F
VFJJQ19PUChUWVBFX0ZMT0FUX01BVDQpOworLQorLQkJZGVmYXVsdDoKKy0JCQlERV9BU1NFUlQo
REVfRkFMU0UpOworLQkJCXJldHVybiBERV9OVUxMOworLQl9CisrICAgIC8vIEV2YWx1YXRvciBp
cyBzZWxlY3RlZCBiYXNlZCBvbiBvcCBhbmQgaW5wdXQgZGF0YSB0eXBlcy4KKysgICAgLy8gRm9y
IGVmZmljaWVudCBsb29rdXAgdGhlIHR5cGVzIGFuZCBvcCBlbnVtcyBhcmUgcGFja2VkIHRvZ2V0
aGVyIHRvIGZvcm0gYSAxOS1iaXQga2V5OgorKyAgICAvLyBbMTguLjE0IE9QXSBbMTMuLjcgVFlQ
RTBdIFs2Li4wIFRZUEUxXQorKworKyAgICBERV9TVEFUSUNfQVNTRVJUKFRZUEVfTEFTVCAgPD0g
KDE8PDcpKTsKKysgICAgREVfU1RBVElDX0FTU0VSVChPUF9MQVNUICAgIDw9ICgxPDw1KSk7Cisr
CisrI2RlZmluZSBQQUNLX0VWQUxfQ0FTRShPUCwgSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKSAg
ICAoKChPUCkgPDwgMTQpIHwgKChJTjBEQVRBVFlQRSkgPDwgNykgfCAoSU4xREFUQVRZUEUpKQor
KworKyNkZWZpbmUgTUFLRV9FVkFMX0NBU0UoT1AsIElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSkg
ICAgXAorKyAgICBjYXNlIFBBQ0tfRVZBTF9DQVNFKE9QLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZ
UEUpOiAgXAorKyAgICAgICAgcmV0dXJuIEV2YWx1YXRvcjxPUCwgSU4wREFUQVRZUEUsIElOMURB
VEFUWVBFPjo6ZXZhbHVhdGUKKysKKysjZGVmaW5lIE1BS0VfU0NBTEFSX09QUyhJTjBEQVRBVFlQ
RSwgSU4xREFUQVRZUEUpICAgICAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfQURELCBJTjBE
QVRBVFlQRSwgSU4xREFUQVRZUEUpOyAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfU1VCLCBJ
TjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpOyAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1BfTVVM
LCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpOyAgIFwKKysgICAgTUFLRV9FVkFMX0NBU0UoT1Bf
RElWLCBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpCisrCisrI2RlZmluZSBNQUtFX0NXSVNFX09Q
UyhJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUpICAgICAgICAgICAgXAorKyAgICBNQUtFX0VWQUxf
Q0FTRShPUF9BREQsICAgICAgSU4wREFUQVRZUEUsIElOMURBVEFUWVBFKTsgIFwKKysgICAgTUFL
RV9FVkFMX0NBU0UoT1BfU1VCLCAgICAgIElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSk7ICBcCisr
ICAgIE1BS0VfRVZBTF9DQVNFKE9QX0RJViwgICAgICBJTjBEQVRBVFlQRSwgSU4xREFUQVRZUEUp
OyAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9DT01QX01VTCwgSU4wREFUQVRZUEUsIElOMURB
VEFUWVBFKQorKworKyNkZWZpbmUgTUFLRV9NVUxfT1AoSU4wREFUQVRZUEUsIElOMURBVEFUWVBF
KSAgICAgICAgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9NVUwsIElOMERBVEFUWVBFLCBJ
TjFEQVRBVFlQRSkKKysKKysjZGVmaW5lIE1BS0VfVkVDVkVDX09QKElOMERBVEFUWVBFLCBJTjFE
QVRBVFlQRSkgICAgICAgICAgICBcCisrICAgIE1BS0VfRVZBTF9DQVNFKE9QX09VVEVSX1BST0RV
Q1QsIElOMERBVEFUWVBFLCBJTjFEQVRBVFlQRSkKKysKKysjZGVmaW5lIE1BS0VfVU5BUllfT1Ao
SU4wREFUQVRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBNQUtFX0VW
QUxfQ0FTRShPUF9UUkFOU1BPU0UsICAgICAgICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKTsgICAg
XAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9VTkFSWV9QTFVTLCAgICAgICBJTjBEQVRBVFlQRSwg
VFlQRV9MQVNUKTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9ORUdBVElPTiwgICAgICAg
ICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9Q
UkVfSU5DUkVNRU5ULCAgICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKTsgICAgXAorKyAgICBNQUtF
X0VWQUxfQ0FTRShPUF9QUkVfREVDUkVNRU5ULCAgICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKTsg
ICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9QT1NUX0lOQ1JFTUVOVCwgICBJTjBEQVRBVFlQ
RSwgVFlQRV9MQVNUKTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9QT1NUX0RFQ1JFTUVO
VCwgICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNUKQorKworKyNkZWZpbmUgTUFLRV9VTkFSWV9TWU1N
RVRSSUNfT1AoSU4wREFUQVRZUEUpICAgICAgICAgICAgICAgICAgICBcCisrICAgIE1BS0VfVU5B
UllfT1AoSU4wREFUQVRZUEUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysg
ICAgTUFLRV9FVkFMX0NBU0UoT1BfREVURVJNSU5BTlQsICBJTjBEQVRBVFlQRSwgVFlQRV9MQVNU
KTsgICAgXAorKyAgICBNQUtFX0VWQUxfQ0FTRShPUF9JTlZFUlNFLCAgICAgIElOMERBVEFUWVBF
LCBUWVBFX0xBU1QpCisrCisrI2RlZmluZSBNQUtFX0FTU0lHTk1FTlRfT1AoSU4wREFUQVRZUEUp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIE1BS0VfRVZBTF9DQVNFKE9QX0FE
RF9JTlRPLCAgICAgICAgIElOMERBVEFUWVBFLCBJTjBEQVRBVFlQRSk7ICBcCisrICAgIE1BS0Vf
RVZBTF9DQVNFKE9QX1NVQlRSQUNUX0ZST00sICAgIElOMERBVEFUWVBFLCBJTjBEQVRBVFlQRSk7
ICBcCisrICAgIE1BS0VfRVZBTF9DQVNFKE9QX0RJVklERV9JTlRPLCAgICAgIElOMERBVEFUWVBF
LCBJTjBEQVRBVFlQRSkKKysKKysjZGVmaW5lIE1BS0VfQVNTSUdOTUVOVF9TWU1NRVRSSUNfT1Ao
SU4wREFUQVRZUEUpICAgICAgICAgICAgICAgICAgIFwKKysgICAgTUFLRV9BU1NJR05NRU5UX09Q
KElOMERBVEFUWVBFKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgTUFL
RV9FVkFMX0NBU0UoT1BfTVVMVElQTFlfSU5UTywgICAgSU4wREFUQVRZUEUsIElOMERBVEFUWVBF
KQorKworKyAgICBzd2l0Y2ggKFBBQ0tfRVZBTF9DQVNFKG9wLCBpbjAuZGF0YVR5cGUsIGluMS5k
YXRhVHlwZSkpCisrICAgIHsKKysgICAgICAgIC8vIE1hdHJpeC1zY2FsYXIuCisrICAgICAgICBN
QUtFX1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQyLCAgICBUWVBFX0ZMT0FUKTsKKysgICAgICAg
IE1BS0VfU0NBTEFSX09QUyhUWVBFX0ZMT0FUX01BVDJYMywgIFRZUEVfRkxPQVQpOworKyAgICAg
ICAgTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxPQVRfTUFUMlg0LCAgVFlQRV9GTE9BVCk7CisrICAg
ICAgICBNQUtFX1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQzWDIsICBUWVBFX0ZMT0FUKTsKKysg
ICAgICAgIE1BS0VfU0NBTEFSX09QUyhUWVBFX0ZMT0FUX01BVDMsICAgIFRZUEVfRkxPQVQpOwor
KyAgICAgICAgTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxPQVRfTUFUM1g0LCAgVFlQRV9GTE9BVCk7
CisrICAgICAgICBNQUtFX1NDQUxBUl9PUFMoVFlQRV9GTE9BVF9NQVQ0WDIsICBUWVBFX0ZMT0FU
KTsKKysgICAgICAgIE1BS0VfU0NBTEFSX09QUyhUWVBFX0ZMT0FUX01BVDRYMywgIFRZUEVfRkxP
QVQpOworKyAgICAgICAgTUFLRV9TQ0FMQVJfT1BTKFRZUEVfRkxPQVRfTUFUNCwgICAgVFlQRV9G
TE9BVCk7CisrCisrICAgICAgICAvLyBNYXRyaXgtdmVjdG9yLgorKyAgICAgICAgTUFLRV9NVUxf
T1AoVFlQRV9GTE9BVF9NQVQyLCAgICBUWVBFX0ZMT0FUX1ZFQzIpOworKyAgICAgICAgTUFLRV9N
VUxfT1AoVFlQRV9GTE9BVF9NQVQyWDMsICBUWVBFX0ZMT0FUX1ZFQzIpOworKyAgICAgICAgTUFL
RV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDQsICBUWVBFX0ZMT0FUX1ZFQzIpOworKyAgICAgICAg
TUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDIsICBUWVBFX0ZMT0FUX1ZFQzMpOworKyAgICAg
ICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzLCAgICBUWVBFX0ZMT0FUX1ZFQzMpOworKyAg
ICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDQsICBUWVBFX0ZMT0FUX1ZFQzMpOwor
KyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0WDIsICBUWVBFX0ZMT0FUX1ZFQzQp
OworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0WDMsICBUWVBFX0ZMT0FUX1ZF
QzQpOworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQ0LCAgICBUWVBFX0ZMT0FU
X1ZFQzQpOworKworKyAgICAgICAgLy8gVmVjdG9yLW1hdHJpeC4KKysgICAgICAgIE1BS0VfTVVM
X09QKFRZUEVfRkxPQVRfVkVDMiwgVFlQRV9GTE9BVF9NQVQyKTsKKysgICAgICAgIE1BS0VfTVVM
X09QKFRZUEVfRkxPQVRfVkVDMywgVFlQRV9GTE9BVF9NQVQyWDMpOworKyAgICAgICAgTUFLRV9N
VUxfT1AoVFlQRV9GTE9BVF9WRUM0LCBUWVBFX0ZMT0FUX01BVDJYNCk7CisrICAgICAgICBNQUtF
X01VTF9PUChUWVBFX0ZMT0FUX1ZFQzIsIFRZUEVfRkxPQVRfTUFUM1gyKTsKKysgICAgICAgIE1B
S0VfTVVMX09QKFRZUEVfRkxPQVRfVkVDMywgVFlQRV9GTE9BVF9NQVQzKTsKKysgICAgICAgIE1B
S0VfTVVMX09QKFRZUEVfRkxPQVRfVkVDNCwgVFlQRV9GTE9BVF9NQVQzWDQpOworKyAgICAgICAg
TUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9WRUMyLCBUWVBFX0ZMT0FUX01BVDRYMik7CisrICAgICAg
ICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX1ZFQzMsIFRZUEVfRkxPQVRfTUFUNFgzKTsKKysgICAg
ICAgIE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfVkVDNCwgVFlQRV9GTE9BVF9NQVQ0KTsKKysKKysg
ICAgICAgIC8vIE1hdHJpeC1tYXRyaXguCisrICAgICAgICBNQUtFX0NXSVNFX09QUyhUWVBFX0ZM
T0FUX01BVDIsICAgICBUWVBFX0ZMT0FUX01BVDIpOworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQ
RV9GTE9BVF9NQVQyLCAgICAgICAgVFlQRV9GTE9BVF9NQVQyKTsKKysgICAgICAgIE1BS0VfTVVM
X09QKFRZUEVfRkxPQVRfTUFUMiwgICAgICAgIFRZUEVfRkxPQVRfTUFUM1gyKTsKKysgICAgICAg
IE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMiwgICAgICAgIFRZUEVfRkxPQVRfTUFUNFgyKTsK
KysKKysgICAgICAgIE1BS0VfQ1dJU0VfT1BTKFRZUEVfRkxPQVRfTUFUMlgzLCAgIFRZUEVfRkxP
QVRfTUFUMlgzKTsKKysgICAgICAgIE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUMlgzLCAgICAg
IFRZUEVfRkxPQVRfTUFUMik7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDJY
MywgICAgICBUWVBFX0ZMT0FUX01BVDNYMik7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZM
T0FUX01BVDJYMywgICAgICBUWVBFX0ZMT0FUX01BVDRYMik7CisrCisrICAgICAgICBNQUtFX0NX
SVNFX09QUyhUWVBFX0ZMT0FUX01BVDJYNCwgICBUWVBFX0ZMT0FUX01BVDJYNCk7CisrICAgICAg
ICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDJYNCwgICAgICBUWVBFX0ZMT0FUX01BVDIpOwor
KyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDQsICAgICAgVFlQRV9GTE9BVF9N
QVQzWDIpOworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQyWDQsICAgICAgVFlQ
RV9GTE9BVF9NQVQ0WDIpOworKworKyAgICAgICAgTUFLRV9DV0lTRV9PUFMoVFlQRV9GTE9BVF9N
QVQzWDIsICAgVFlQRV9GTE9BVF9NQVQzWDIpOworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9G
TE9BVF9NQVQzWDIsICAgICAgVFlQRV9GTE9BVF9NQVQyWDMpOworKyAgICAgICAgTUFLRV9NVUxf
T1AoVFlQRV9GTE9BVF9NQVQzWDIsICAgICAgVFlQRV9GTE9BVF9NQVQzKTsKKysgICAgICAgIE1B
S0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUM1gyLCAgICAgIFRZUEVfRkxPQVRfTUFUNFgzKTsKKysK
KysgICAgICAgIE1BS0VfQ1dJU0VfT1BTKFRZUEVfRkxPQVRfTUFUMywgICAgIFRZUEVfRkxPQVRf
TUFUMyk7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDMsICAgICAgICBUWVBF
X0ZMT0FUX01BVDJYMyk7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDMsICAg
ICAgICBUWVBFX0ZMT0FUX01BVDMpOworKyAgICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9N
QVQzLCAgICAgICAgVFlQRV9GTE9BVF9NQVQ0WDMpOworKworKyAgICAgICAgTUFLRV9DV0lTRV9P
UFMoVFlQRV9GTE9BVF9NQVQzWDQsICAgVFlQRV9GTE9BVF9NQVQzWDQpOworKyAgICAgICAgTUFL
RV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDQsICAgICAgVFlQRV9GTE9BVF9NQVQyWDMpOworKyAg
ICAgICAgTUFLRV9NVUxfT1AoVFlQRV9GTE9BVF9NQVQzWDQsICAgICAgVFlQRV9GTE9BVF9NQVQz
KTsKKysgICAgICAgIE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUM1g0LCAgICAgIFRZUEVfRkxP
QVRfTUFUNFgzKTsKKysKKysgICAgICAgIE1BS0VfQ1dJU0VfT1BTKFRZUEVfRkxPQVRfTUFUNFgy
LCAgIFRZUEVfRkxPQVRfTUFUNFgyKTsKKysgICAgICAgIE1BS0VfTVVMX09QKFRZUEVfRkxPQVRf
TUFUNFgyLCAgICAgIFRZUEVfRkxPQVRfTUFUMlg0KTsKKysgICAgICAgIE1BS0VfTVVMX09QKFRZ
UEVfRkxPQVRfTUFUNFgyLCAgICAgIFRZUEVfRkxPQVRfTUFUM1g0KTsKKysgICAgICAgIE1BS0Vf
TVVMX09QKFRZUEVfRkxPQVRfTUFUNFgyLCAgICAgIFRZUEVfRkxPQVRfTUFUNCk7CisrCisrICAg
ICAgICBNQUtFX0NXSVNFX09QUyhUWVBFX0ZMT0FUX01BVDRYMywgICBUWVBFX0ZMT0FUX01BVDRY
Myk7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDRYMywgICAgICBUWVBFX0ZM
T0FUX01BVDJYNCk7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01BVDRYMywgICAg
ICBUWVBFX0ZMT0FUX01BVDNYNCk7CisrICAgICAgICBNQUtFX01VTF9PUChUWVBFX0ZMT0FUX01B
VDRYMywgICAgICBUWVBFX0ZMT0FUX01BVDQpOworKworKyAgICAgICAgTUFLRV9DV0lTRV9PUFMo
VFlQRV9GTE9BVF9NQVQ0LCAgICAgVFlQRV9GTE9BVF9NQVQ0KTsKKysgICAgICAgIE1BS0VfTVVM
X09QKFRZUEVfRkxPQVRfTUFUNCwgICAgICAgIFRZUEVfRkxPQVRfTUFUMlg0KTsKKysgICAgICAg
IE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUNCwgICAgICAgIFRZUEVfRkxPQVRfTUFUM1g0KTsK
KysgICAgICAgIE1BS0VfTVVMX09QKFRZUEVfRkxPQVRfTUFUNCwgICAgICAgIFRZUEVfRkxPQVRf
TUFUNCk7CisrCisrICAgICAgICAvLyBWZWN0b3ItdmVjdG9yLgorKyAgICAgICAgTUFLRV9WRUNW
RUNfT1AoVFlQRV9GTE9BVF9WRUMyLCAgICAgVFlQRV9GTE9BVF9WRUMyKTsKKysgICAgICAgIE1B
S0VfVkVDVkVDX09QKFRZUEVfRkxPQVRfVkVDMiwgICAgIFRZUEVfRkxPQVRfVkVDMyk7CisrICAg
ICAgICBNQUtFX1ZFQ1ZFQ19PUChUWVBFX0ZMT0FUX1ZFQzIsICAgICBUWVBFX0ZMT0FUX1ZFQzQp
OworKyAgICAgICAgTUFLRV9WRUNWRUNfT1AoVFlQRV9GTE9BVF9WRUMzLCAgICAgVFlQRV9GTE9B
VF9WRUMyKTsKKysgICAgICAgIE1BS0VfVkVDVkVDX09QKFRZUEVfRkxPQVRfVkVDMywgICAgIFRZ
UEVfRkxPQVRfVkVDMyk7CisrICAgICAgICBNQUtFX1ZFQ1ZFQ19PUChUWVBFX0ZMT0FUX1ZFQzMs
ICAgICBUWVBFX0ZMT0FUX1ZFQzQpOworKyAgICAgICAgTUFLRV9WRUNWRUNfT1AoVFlQRV9GTE9B
VF9WRUM0LCAgICAgVFlQRV9GTE9BVF9WRUMyKTsKKysgICAgICAgIE1BS0VfVkVDVkVDX09QKFRZ
UEVfRkxPQVRfVkVDNCwgICAgIFRZUEVfRkxPQVRfVkVDMyk7CisrICAgICAgICBNQUtFX1ZFQ1ZF
Q19PUChUWVBFX0ZMT0FUX1ZFQzQsICAgICBUWVBFX0ZMT0FUX1ZFQzQpOworKworKyAgICAgICAg
Ly8gVW5hcnkgTWF0cml4LgorKyAgICAgICAgTUFLRV9VTkFSWV9TWU1NRVRSSUNfT1AoVFlQRV9G
TE9BVF9NQVQyKTsKKysgICAgICAgIE1BS0VfVU5BUllfT1AoVFlQRV9GTE9BVF9NQVQyWDMpOwor
KyAgICAgICAgTUFLRV9VTkFSWV9PUChUWVBFX0ZMT0FUX01BVDJYNCk7CisrICAgICAgICBNQUtF
X1VOQVJZX09QKFRZUEVfRkxPQVRfTUFUM1gyKTsKKysgICAgICAgIE1BS0VfVU5BUllfU1lNTUVU
UklDX09QKFRZUEVfRkxPQVRfTUFUMyk7CisrICAgICAgICBNQUtFX1VOQVJZX09QKFRZUEVfRkxP
QVRfTUFUM1g0KTsKKysgICAgICAgIE1BS0VfVU5BUllfT1AoVFlQRV9GTE9BVF9NQVQ0WDIpOwor
KyAgICAgICAgTUFLRV9VTkFSWV9PUChUWVBFX0ZMT0FUX01BVDRYMyk7CisrICAgICAgICBNQUtF
X1VOQVJZX1NZTU1FVFJJQ19PUChUWVBFX0ZMT0FUX01BVDQpOworKworKyAgICAgICAgLy8gQXNz
aWdubWVudHMKKysgICAgICAgIE1BS0VfQVNTSUdOTUVOVF9TWU1NRVRSSUNfT1AoVFlQRV9GTE9B
VF9NQVQyKTsKKysgICAgICAgIE1BS0VfQVNTSUdOTUVOVF9PUChUWVBFX0ZMT0FUX01BVDJYMyk7
CisrICAgICAgICBNQUtFX0FTU0lHTk1FTlRfT1AoVFlQRV9GTE9BVF9NQVQyWDQpOworKyAgICAg
ICAgTUFLRV9BU1NJR05NRU5UX09QKFRZUEVfRkxPQVRfTUFUM1gyKTsKKysgICAgICAgIE1BS0Vf
QVNTSUdOTUVOVF9TWU1NRVRSSUNfT1AoVFlQRV9GTE9BVF9NQVQzKTsKKysgICAgICAgIE1BS0Vf
QVNTSUdOTUVOVF9PUChUWVBFX0ZMT0FUX01BVDNYNCk7CisrICAgICAgICBNQUtFX0FTU0lHTk1F
TlRfT1AoVFlQRV9GTE9BVF9NQVQ0WDIpOworKyAgICAgICAgTUFLRV9BU1NJR05NRU5UX09QKFRZ
UEVfRkxPQVRfTUFUNFgzKTsKKysgICAgICAgIE1BS0VfQVNTSUdOTUVOVF9TWU1NRVRSSUNfT1Ao
VFlQRV9GTE9BVF9NQVQ0KTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgREVf
QVNTRVJUKERFX0ZBTFNFKTsKKysgICAgICAgICAgICByZXR1cm4gREVfTlVMTDsKKysgICAgfQor
IAorICN1bmRlZiBQQUNLX0VWQUxfQ0FTRQorICN1bmRlZiBNQUtFX0VWQUxfQ0FTRQorQEAgLTEz
MjAsMzUgKzEzMjAsMzUgQEAgTWF0cml4U2hhZGVyRXZhbEZ1bmMgZ2V0RXZhbEZ1bmMgKGNvbnN0
IFNoYWRlcklucHV0JiBpbjAsIGNvbnN0IFNoYWRlcklucHV0JiBpbjEKKyB0ZW1wbGF0ZSA8aW50
IFNpemU+Cisgdm9pZCB3cml0ZVZlY3RvckNvbnN0cnVjdG9yIChzdGQ6Om9zdHJlYW0mIHN0ciwg
Y29uc3QgdGN1OjpWZWN0b3I8ZmxvYXQsIFNpemU+JiB2KQorIHsKKy0Jc3RyIDw8ICJ2ZWMiIDw8
IFNpemUgPDwgIigiOworLQlmb3IgKGludCBuZHggPSAwOyBuZHggPCBTaXplOyBuZHgrKykKKy0J
eworLQkJaWYgKG5keCAhPSAwKQorLQkJCXN0ciA8PCAiLCAiOworLQkJc3RyIDw8IGRlOjpmbG9h
dFRvU3RyaW5nKHZbbmR4XSwgMSk7CistCX0KKy0Jc3RyIDw8ICIpIjsKKysgICAgc3RyIDw8ICJ2
ZWMiIDw8IFNpemUgPDwgIigiOworKyAgICBmb3IgKGludCBuZHggPSAwOyBuZHggPCBTaXplOyBu
ZHgrKykKKysgICAgeworKyAgICAgICAgaWYgKG5keCAhPSAwKQorKyAgICAgICAgICAgIHN0ciA8
PCAiLCAiOworKyAgICAgICAgc3RyIDw8IGRlOjpmbG9hdFRvU3RyaW5nKHZbbmR4XSwgMSk7Cisr
ICAgIH0KKysgICAgc3RyIDw8ICIpIjsKKyB9CisgCisgdGVtcGxhdGUgPGludCBDb2xzLCBpbnQg
Um93cz4KKyB2b2lkIHdyaXRlTWF0cml4Q29uc3RydWN0b3IgKHN0ZDo6b3N0cmVhbSYgc3RyLCBj
b25zdCB0Y3U6Ok1hdHJpeDxmbG9hdCwgUm93cywgQ29scz4mIG0pCisgeworLQlpZiAoUm93cyA9
PSBDb2xzKQorLQkJc3RyIDw8ICJtYXQiIDw8IENvbHM7CistCWVsc2UKKy0JCXN0ciA8PCAibWF0
IiA8PCBDb2xzIDw8ICJ4IiA8PCBSb3dzOworLQorLQlzdHIgPDwgIigiOworLQlmb3IgKGludCBj
b2xOZHggPSAwOyBjb2xOZHggPCBDb2xzOyBjb2xOZHgrKykKKy0JeworLQkJZm9yIChpbnQgcm93
TmR4ID0gMDsgcm93TmR4IDwgUm93czsgcm93TmR4KyspCistCQl7CistCQkJaWYgKHJvd05keCA+
IDAgfHwgY29sTmR4ID4gMCkKKy0JCQkJc3RyIDw8ICIsICI7CistCQkJc3RyIDw8IGRlOjpmbG9h
dFRvU3RyaW5nKG0ocm93TmR4LCBjb2xOZHgpLCAxKTsKKy0JCX0KKy0JfQorLQlzdHIgPDwgIiki
OworKyAgICBpZiAoUm93cyA9PSBDb2xzKQorKyAgICAgICAgc3RyIDw8ICJtYXQiIDw8IENvbHM7
CisrICAgIGVsc2UKKysgICAgICAgIHN0ciA8PCAibWF0IiA8PCBDb2xzIDw8ICJ4IiA8PCBSb3dz
OworKworKyAgICBzdHIgPDwgIigiOworKyAgICBmb3IgKGludCBjb2xOZHggPSAwOyBjb2xOZHgg
PCBDb2xzOyBjb2xOZHgrKykKKysgICAgeworKyAgICAgICAgZm9yIChpbnQgcm93TmR4ID0gMDsg
cm93TmR4IDwgUm93czsgcm93TmR4KyspCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYgKHJv
d05keCA+IDAgfHwgY29sTmR4ID4gMCkKKysgICAgICAgICAgICAgICAgc3RyIDw8ICIsICI7Cisr
ICAgICAgICAgICAgc3RyIDw8IGRlOjpmbG9hdFRvU3RyaW5nKG0ocm93TmR4LCBjb2xOZHgpLCAx
KTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBzdHIgPDwgIikiOworIH0KKyAKKyB9IC8vIE1h
dHJpeENhc2VVdGlscworQEAgLTEzNTgsNTMgKzEzNTgsNTMgQEAgdXNpbmcgbmFtZXNwYWNlIE1h
dHJpeENhc2VVdGlsczsKKyBjbGFzcyBNYXRyaXhTaGFkZXJFdmFsdWF0b3IgOiBwdWJsaWMgU2hh
ZGVyRXZhbHVhdG9yCisgeworIHB1YmxpYzoKKy0JCQkJCQkJTWF0cml4U2hhZGVyRXZhbHVhdG9y
CShNYXRyaXhTaGFkZXJFdmFsRnVuYyBldmFsRnVuYywgSW5wdXRUeXBlIGluVHlwZTAsIElucHV0
VHlwZSBpblR5cGUxKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0cml4U2hhZGVy
RXZhbHVhdG9yICAgKE1hdHJpeFNoYWRlckV2YWxGdW5jIGV2YWxGdW5jLCBJbnB1dFR5cGUgaW5U
eXBlMCwgSW5wdXRUeXBlIGluVHlwZTEpOworIAorLQl2aXJ0dWFsIHZvaWQJCQlldmFsdWF0ZQkJ
CQkoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpOworKyAgICB2aXJ0dWFsIHZvaWQgICAgICAg
ICAgICBldmFsdWF0ZSAgICAgICAgICAgICAgICAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgp
OworIAorIHByaXZhdGU6CistCU1hdHJpeFNoYWRlckV2YWxGdW5jCW1fbWF0RXZhbEZ1bmM7Cist
CUlucHV0VHlwZQkJCQltX2luVHlwZTA7CistCUlucHV0VHlwZQkJCQltX2luVHlwZTE7CisrICAg
IE1hdHJpeFNoYWRlckV2YWxGdW5jICAgIG1fbWF0RXZhbEZ1bmM7CisrICAgIElucHV0VHlwZSAg
ICAgICAgICAgICAgIG1faW5UeXBlMDsKKysgICAgSW5wdXRUeXBlICAgICAgICAgICAgICAgbV9p
blR5cGUxOworIH07CisgCisgTWF0cml4U2hhZGVyRXZhbHVhdG9yOjpNYXRyaXhTaGFkZXJFdmFs
dWF0b3IgKE1hdHJpeFNoYWRlckV2YWxGdW5jIGV2YWxGdW5jLCBJbnB1dFR5cGUgaW5UeXBlMCwg
SW5wdXRUeXBlIGluVHlwZTEpCistCTogbV9tYXRFdmFsRnVuYwkoZXZhbEZ1bmMpCistCSwgbV9p
blR5cGUwCQkoaW5UeXBlMCkKKy0JLCBtX2luVHlwZTEJCShpblR5cGUxKQorKyAgICA6IG1fbWF0
RXZhbEZ1bmMgKGV2YWxGdW5jKQorKyAgICAsIG1faW5UeXBlMCAgICAgKGluVHlwZTApCisrICAg
ICwgbV9pblR5cGUxICAgICAoaW5UeXBlMSkKKyB7CisgfQorIAorIHZvaWQgTWF0cml4U2hhZGVy
RXZhbHVhdG9yOjpldmFsdWF0ZSAoU2hhZGVyRXZhbENvbnRleHQmIGV2YWxDdHgpCisgeworLQlt
X21hdEV2YWxGdW5jKGV2YWxDdHgsIG1faW5UeXBlMCwgbV9pblR5cGUxKTsKKysgICAgbV9tYXRF
dmFsRnVuYyhldmFsQ3R4LCBtX2luVHlwZTAsIG1faW5UeXBlMSk7CisgfQorIAorIGNsYXNzIFNo
YWRlck1hdHJpeENhc2UgOiBwdWJsaWMgU2hhZGVyUmVuZGVyQ2FzZQorIHsKKyBwdWJsaWM6Cist
CQkJCQkJCVNoYWRlck1hdHJpeENhc2UJCQkoQ29udGV4dCYgY29udGV4dCwgY29uc3QgY2hhciog
bmFtZSwgY29uc3QgY2hhciogZGVzYywgY29uc3QgU2hhZGVySW5wdXQmIGluMCwgY29uc3QgU2hh
ZGVySW5wdXQmIGluMSwgTWF0cml4T3Agb3AsIGJvb2wgaXNWZXJ0ZXhDYXNlKTsKKy0JCQkJCQkJ
flNoYWRlck1hdHJpeENhc2UJCQkodm9pZCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlck1hdHJpeENhc2UgICAgICAgICAgICAoQ29udGV4dCYgY29udGV4dCwgY29uc3QgY2hh
ciogbmFtZSwgY29uc3QgY2hhciogZGVzYywgY29uc3QgU2hhZGVySW5wdXQmIGluMCwgY29uc3Qg
U2hhZGVySW5wdXQmIGluMSwgTWF0cml4T3Agb3AsIGJvb2wgaXNWZXJ0ZXhDYXNlKTsKKysgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgflNoYWRlck1hdHJpeENhc2UgICAgICAgICAgICh2b2lk
KTsKKyAKKy0Jdm9pZAkJCQkJaW5pdAkJCQkJCSh2b2lkKTsKKysgICAgdm9pZCAgICAgICAgICAg
ICAgICAgICAgaW5pdCAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKyAKKyBwcm90ZWN0
ZWQ6CistCXN0ZDo6c3RyaW5nCQkJCWdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24JKGNvbnN0IGds
dTo6RGF0YVR5cGUmIG1hdFR5cGUsIGNvbnN0IGNoYXIqIHZhck5hbWUpOworLQl2b2lkCQkJCQlz
ZXR1cFVuaWZvcm1zCQkJCShpbnQgcHJvZ3JhbUlELCBjb25zdCB0Y3U6OlZlYzQmIGNvbnN0Q29v
cmRzKTsKKysgICAgc3RkOjpzdHJpbmcgICAgICAgICAgICAgZ2VuR0xTTE1hdFRvVmVjM1JlZHVj
dGlvbiAgIChjb25zdCBnbHU6OkRhdGFUeXBlJiBtYXRUeXBlLCBjb25zdCBjaGFyKiB2YXJOYW1l
KTsKKysgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgc2V0dXBVbmlmb3JtcyAgICAgICAgICAg
ICAgIChpbnQgcHJvZ3JhbUlELCBjb25zdCB0Y3U6OlZlYzQmIGNvbnN0Q29vcmRzKTsKKyAKKyBw
cml2YXRlOgorLQlTaGFkZXJJbnB1dAkJCQltX2luMDsKKy0JU2hhZGVySW5wdXQJCQkJbV9pbjE7
CistCU1hdHJpeE9wCQkJCW1fb3A7CistCU1hdHJpeFNoYWRlckV2YWx1YXRvcgltX21hdEV2YWx1
YXRvcjsKKysgICAgU2hhZGVySW5wdXQgICAgICAgICAgICAgbV9pbjA7CisrICAgIFNoYWRlcklu
cHV0ICAgICAgICAgICAgIG1faW4xOworKyAgICBNYXRyaXhPcCAgICAgICAgICAgICAgICBtX29w
OworKyAgICBNYXRyaXhTaGFkZXJFdmFsdWF0b3IgICBtX21hdEV2YWx1YXRvcjsKKyB9OworIAor
IFNoYWRlck1hdHJpeENhc2U6OlNoYWRlck1hdHJpeENhc2UgKENvbnRleHQmIGNvbnRleHQsIGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGRlc2MsIGNvbnN0IFNoYWRlcklucHV0JiBpbjAs
IGNvbnN0IFNoYWRlcklucHV0JiBpbjEsIE1hdHJpeE9wIG9wLCBib29sIGlzVmVydGV4Q2FzZSkK
Ky0JOiBTaGFkZXJSZW5kZXJDYXNlCShjb250ZXh0LmdldFRlc3RDb250ZXh0KCksIGNvbnRleHQu
Z2V0UmVuZGVyQ29udGV4dCgpLCBjb250ZXh0LmdldENvbnRleHRJbmZvKCksIG5hbWUsIGRlc2Ms
IGlzVmVydGV4Q2FzZSwgbV9tYXRFdmFsdWF0b3IpCistCSwgbV9pbjAJCQkJKGluMCkKKy0JLCBt
X2luMQkJCQkoaW4xKQorLQksIG1fb3AJCQkJKG9wKQorLQksIG1fbWF0RXZhbHVhdG9yCShnZXRF
dmFsRnVuYyhpbjAsIGluMSwgb3ApLCBpbjAuaW5wdXRUeXBlLCBpbjEuaW5wdXRUeXBlKQorKyAg
ICA6IFNoYWRlclJlbmRlckNhc2UgIChjb250ZXh0LmdldFRlc3RDb250ZXh0KCksIGNvbnRleHQu
Z2V0UmVuZGVyQ29udGV4dCgpLCBjb250ZXh0LmdldENvbnRleHRJbmZvKCksIG5hbWUsIGRlc2Ms
IGlzVmVydGV4Q2FzZSwgbV9tYXRFdmFsdWF0b3IpCisrICAgICwgbV9pbjAgICAgICAgICAgICAg
KGluMCkKKysgICAgLCBtX2luMSAgICAgICAgICAgICAoaW4xKQorKyAgICAsIG1fb3AgICAgICAg
ICAgICAgIChvcCkKKysgICAgLCBtX21hdEV2YWx1YXRvciAgICAoZ2V0RXZhbEZ1bmMoaW4wLCBp
bjEsIG9wKSwgaW4wLmlucHV0VHlwZSwgaW4xLmlucHV0VHlwZSkKKyB7CisgfQorIAorQEAgLTE0
MTQsMzc0ICsxNDE0LDM3NCBAQCBTaGFkZXJNYXRyaXhDYXNlOjp+U2hhZGVyTWF0cml4Q2FzZSAo
dm9pZCkKKyAKKyB2b2lkIFNoYWRlck1hdHJpeENhc2U6OmluaXQgKHZvaWQpCisgeworLQlzdGQ6
Om9zdHJpbmdzdHJlYW0JdnR4OworLQlzdGQ6Om9zdHJpbmdzdHJlYW0JZnJhZzsKKy0Jc3RkOjpv
c3RyaW5nc3RyZWFtJglvcAkJCQk9IG1faXNWZXJ0ZXhDYXNlID8gdnR4IDogZnJhZzsKKy0KKy0J
Ym9vbAkJCQlpc0luRHluTWF0MAkJPSBpc0RhdGFUeXBlTWF0cml4KG1faW4wLmRhdGFUeXBlKSAm
JiBtX2luMC5pbnB1dFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUM7CistCWJvb2wJCQkJaXNJbkR5
bk1hdDEJCT0gaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkgJiYgbV9pbjEuaW5wdXRU
eXBlID09IElOUFVUVFlQRV9EWU5BTUlDOworLQlzdHJpbmcJCQkJaW5WYWx1ZTA7CistCXN0cmlu
ZwkJCQlpblZhbHVlMTsKKy0JRGF0YVR5cGUJCQlyZXN1bHRUeXBlCQk9IFRZUEVfTEFTVDsKKy0J
UHJlY2lzaW9uCQkJcmVzdWx0UHJlYwkJPSBtX2luMC5wcmVjaXNpb247CistCXZlY3RvcjxzdHJp
bmc+CQlwYXNzVmFyczsKKy0JaW50CQkJCQludW1JbnB1dHMJCT0gKGlzT3BlcmF0aW9uQmluYXJ5
KG1fb3ApKSA/ICgyKSA6ICgxKTsKKy0KKy0Jc3RkOjpzdHJpbmcJCQlvcGVyYXRpb25WYWx1ZTA7
CistCXN0ZDo6c3RyaW5nCQkJb3BlcmF0aW9uVmFsdWUxOworLQorLQlERV9BU1NFUlQoIWlzSW5E
eW5NYXQwIHx8ICFpc0luRHluTWF0MSk7IC8vIE9ubHkgc2luZ2xlIGR5bmFtaWMgbWF0cml4IGlu
cHV0IGlzIGFsbG93ZWQuCistCURFX1VOUkVGKGlzSW5EeW5NYXQwICYmIGlzSW5EeW5NYXQxKTsK
Ky0KKy0JLy8gQ29tcHV0ZSByZXN1bHQgdHlwZS4KKy0JaWYgKG1fb3AgPT0gT1BfTVVMICYmIGlz
RGF0YVR5cGVNYXRyaXgobV9pbjAuZGF0YVR5cGUpICYmIGlzRGF0YVR5cGVNYXRyaXgobV9pbjEu
ZGF0YVR5cGUpKQorLQl7CistCQlyZXN1bHRUeXBlID0gZ2V0RGF0YVR5cGVNYXRyaXgoZ2V0RGF0
YVR5cGVNYXRyaXhOdW1Db2x1bW5zKG1faW4xLmRhdGFUeXBlKSwgZ2V0RGF0YVR5cGVNYXRyaXhO
dW1Sb3dzKG1faW4wLmRhdGFUeXBlKSk7CistCX0KKy0JZWxzZSBpZiAobV9vcCA9PSBPUF9PVVRF
Ul9QUk9EVUNUKQorLQl7CistCQlyZXN1bHRUeXBlID0gZ2V0RGF0YVR5cGVNYXRyaXgoZ2V0RGF0
YVR5cGVTY2FsYXJTaXplKG1faW4xLmRhdGFUeXBlKSwgZ2V0RGF0YVR5cGVTY2FsYXJTaXplKG1f
aW4wLmRhdGFUeXBlKSk7CistCX0KKy0JZWxzZSBpZiAobV9vcCA9PSBPUF9UUkFOU1BPU0UpCist
CXsKKy0JCXJlc3VsdFR5cGUgPSBnZXREYXRhVHlwZU1hdHJpeChnZXREYXRhVHlwZU1hdHJpeE51
bVJvd3MobV9pbjAuZGF0YVR5cGUpLCBnZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnMobV9pbjAu
ZGF0YVR5cGUpKTsKKy0JfQorLQllbHNlIGlmIChtX29wID09IE9QX0lOVkVSU0UpCistCXsKKy0J
CXJlc3VsdFR5cGUgPSBtX2luMC5kYXRhVHlwZTsKKy0JfQorLQllbHNlIGlmIChtX29wID09IE9Q
X0RFVEVSTUlOQU5UKQorLQl7CistCQlyZXN1bHRUeXBlID0gVFlQRV9GTE9BVDsKKy0JfQorLQll
bHNlIGlmIChnZXRPcGVyYXRpb25UeXBlKG1fb3ApID09IE9QRVJBVElPTlRZUEVfVU5BUllfUFJF
RklYX09QRVJBVE9SIHx8CistCQkJIGdldE9wZXJhdGlvblR5cGUobV9vcCkgPT0gT1BFUkFUSU9O
VFlQRV9VTkFSWV9QT1NURklYX09QRVJBVE9SKQorLQl7CistCQlyZXN1bHRUeXBlID0gbV9pbjAu
ZGF0YVR5cGU7CistCX0KKy0JZWxzZSBpZiAoaXNEYXRhVHlwZU1hdHJpeChtX2luMC5kYXRhVHlw
ZSkgJiYgaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkpCistCXsKKy0JCURFX0FTU0VS
VChtX2luMC5kYXRhVHlwZSA9PSBtX2luMS5kYXRhVHlwZSk7CistCQlyZXN1bHRUeXBlID0gbV9p
bjAuZGF0YVR5cGU7CistCX0KKy0JZWxzZSBpZiAoaXNEYXRhVHlwZU1hdHJpeChtX2luMC5kYXRh
VHlwZSkgfHwgaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkpCistCXsKKy0JCWludAkJ
CW1hdE5keAkJPSBpc0RhdGFUeXBlTWF0cml4KG1faW4wLmRhdGFUeXBlKSA/IDAgOiAxOworLQkJ
RGF0YVR5cGUJbWF0cml4VHlwZQk9IG1hdE5keCA9PSAwID8gbV9pbjAuZGF0YVR5cGUgOiBtX2lu
MS5kYXRhVHlwZTsKKy0JCURhdGFUeXBlCW90aGVyVHlwZQk9IG1hdE5keCA9PSAwID8gbV9pbjEu
ZGF0YVR5cGUgOiBtX2luMC5kYXRhVHlwZTsKKy0KKy0JCWlmIChvdGhlclR5cGUgPT0gVFlQRV9G
TE9BVCkKKy0JCQlyZXN1bHRUeXBlID0gbWF0cml4VHlwZTsKKy0JCWVsc2UKKy0JCXsKKy0JCQlE
RV9BU1NFUlQoaXNEYXRhVHlwZVZlY3RvcihvdGhlclR5cGUpKTsKKy0JCQlyZXN1bHRUeXBlID0g
Z2V0RGF0YVR5cGVGbG9hdFZlYyhtYXROZHggPT0gMCA/IGdldERhdGFUeXBlTWF0cml4TnVtUm93
cyhtYXRyaXhUeXBlKSA6IGdldERhdGFUeXBlTWF0cml4TnVtQ29sdW1ucyhtYXRyaXhUeXBlKSk7
CistCQl9CistCX0KKy0JZWxzZQorLQl7CistCQlERV9BU1NFUlQoREVfRkFMU0UpOworLQl9Cist
CistCXZ0eCA8PCAiI3ZlcnNpb24gMzAwIGVzXG4iOworLQlmcmFnIDw8ICIjdmVyc2lvbiAzMDAg
ZXNcbiI7CistCistCXZ0eCA8PCAiaW4gaGlnaHAgdmVjNCBhX3Bvc2l0aW9uO1xuIjsKKy0JZnJh
ZyA8PCAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBkRVFQX0ZyYWdDb2xv
cjtcbiI7CistCWlmIChtX2lzVmVydGV4Q2FzZSkKKy0JeworLQkJdnR4IDw8ICJvdXQgbWVkaXVt
cCB2ZWM0IHZfY29sb3I7XG4iOworLQkJZnJhZyA8PCAiaW4gbWVkaXVtcCB2ZWM0IHZfY29sb3I7
XG4iOworLQl9CistCistCS8vIElucHV0IGRlY2xhcmF0aW9ucy4KKy0JZm9yIChpbnQgaW5OZHgg
PSAwOyBpbk5keCA8IG51bUlucHV0czsgaW5OZHgrKykKKy0JeworLQkJY29uc3QgU2hhZGVySW5w
dXQmCWluCQkJPSBpbk5keCA+IDAgPyBtX2luMSA6IG1faW4wOworLQkJY29uc3QgY2hhcioJCQlw
cmVjTmFtZQk9IGdldFByZWNpc2lvbk5hbWUoaW4ucHJlY2lzaW9uKTsKKy0JCWNvbnN0IGNoYXIq
CQkJdHlwZU5hbWUJPSBnZXREYXRhVHlwZU5hbWUoaW4uZGF0YVR5cGUpOworLQkJc3RyaW5nJgkJ
CQlpblZhbHVlCQk9IGluTmR4ID4gMCA/IGluVmFsdWUxIDogaW5WYWx1ZTA7CistCistCQlpZiAo
aW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDKQorLQkJeworLQkJCXZ0eCA8PCAiaW4g
IiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiBhXyI7CistCistCQkJaWYgKGlz
RGF0YVR5cGVNYXRyaXgoaW4uZGF0YVR5cGUpKQorLQkJCXsKKy0JCQkJLy8gYV9tYXROLCB2X21h
dE4KKy0JCQkJdnR4IDw8IHR5cGVOYW1lIDw8ICI7XG4iOworLQkJCQlpZiAoIW1faXNWZXJ0ZXhD
YXNlKQorLQkJCQl7CistCQkJCQl2dHggPDwgIm91dCAiIDw8IHByZWNOYW1lIDw8ICIgIiA8PCB0
eXBlTmFtZSA8PCAiIHZfIiA8PCB0eXBlTmFtZSA8PCAiO1xuIjsKKy0JCQkJCWZyYWcgPDwgImlu
ICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5cGVOYW1lIDw8ICIgdl8iIDw8IHR5cGVOYW1lIDw8
ICI7XG4iOworLQkJCQkJcGFzc1ZhcnMucHVzaF9iYWNrKHR5cGVOYW1lKTsKKy0JCQkJfQorLQor
LQkJCQlpblZhbHVlID0gc3RyaW5nKG1faXNWZXJ0ZXhDYXNlID8gImFfIiA6ICJ2XyIpICsgZ2V0
RGF0YVR5cGVOYW1lKGluLmRhdGFUeXBlKTsKKy0JCQl9CistCQkJZWxzZQorLQkJCXsKKy0JCQkJ
Ly8gYV9jb29yZHMsIHZfY29vcmRzCistCQkJCXZ0eCA8PCAiY29vcmRzO1xuIjsKKy0JCQkJaWYg
KCFtX2lzVmVydGV4Q2FzZSkKKy0JCQkJeworLQkJCQkJdnR4IDw8ICJvdXQgIiA8PCBwcmVjTmFt
ZSA8PCAiICIgPDwgdHlwZU5hbWUgPDwgIiB2X2Nvb3JkcztcbiI7CistCQkJCQlmcmFnIDw8ICJp
biAiIDw8IHByZWNOYW1lIDw8ICIgIiA8PCB0eXBlTmFtZSA8PCAiIHZfY29vcmRzO1xuIjsKKy0J
CQkJCXBhc3NWYXJzLnB1c2hfYmFjaygiY29vcmRzIik7CistCQkJCX0KKy0KKy0JCQkJaW5WYWx1
ZSA9IG1faXNWZXJ0ZXhDYXNlID8gImFfY29vcmRzIiA6ICJ2X2Nvb3JkcyI7CistCQkJfQorLQkJ
fQorLQkJZWxzZSBpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9VTklGT1JNKQorLQkJewor
LQkJCW9wIDw8ICJ1bmlmb3JtICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5cGVOYW1lIDw8ICIg
dV9pbiIgPDwgaW5OZHggPDwgIjtcbiI7CistCQkJaW5WYWx1ZSA9IHN0cmluZygidV9pbiIpICsg
ZGU6OnRvU3RyaW5nKGluTmR4KTsKKy0JCX0KKy0JCWVsc2UgaWYgKGluLmlucHV0VHlwZSA9PSBJ
TlBVVFRZUEVfQ09OU1QpCistCQl7CistCQkJb3AgPDwgImNvbnN0ICIgPDwgcHJlY05hbWUgPDwg
IiAiIDw8IHR5cGVOYW1lIDw8ICIgaW4iIDw8IGluTmR4IDw8ICIgPSAiOworLQorLQkJCS8vIEdl
bmVyYXRlIGRlY2xhcmF0aW9uLgorLQkJCXN3aXRjaCAoaW4uZGF0YVR5cGUpCistCQkJeworLQkJ
CQljYXNlIFRZUEVfRkxPQVQ6CQlvcCA8PCBkZTo6ZmxvYXRUb1N0cmluZyhzX2NvbnN0SW5GbG9h
dFtpbk5keF0sIDEpOwkJCQkJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9WRUMyOgl3cml0
ZVZlY3RvckNvbnN0cnVjdG9yPDI+KG9wLCBzX2NvbnN0SW5WZWMyW2luTmR4XSk7CQkJCWJyZWFr
OworLQkJCQljYXNlIFRZUEVfRkxPQVRfVkVDMzoJd3JpdGVWZWN0b3JDb25zdHJ1Y3RvcjwzPihv
cCwgc19jb25zdEluVmVjM1tpbk5keF0pOwkJCQlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FU
X1ZFQzQ6CXdyaXRlVmVjdG9yQ29uc3RydWN0b3I8ND4ob3AsIHNfY29uc3RJblZlYzRbaW5OZHhd
KTsJCQkJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQyOgl3cml0ZU1hdHJpeENvbnN0
cnVjdG9yPDIsIDI+KG9wLCBNYXQyKHNfY29uc3RJbk1hdDJ4Mltpbk5keF0pKTsJCWJyZWFrOwor
LQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUMlgzOgl3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDIsIDM+
KG9wLCBNYXQyeDMoc19jb25zdEluTWF0MngzW2luTmR4XSkpOwlicmVhazsKKy0JCQkJY2FzZSBU
WVBFX0ZMT0FUX01BVDJYNDoJd3JpdGVNYXRyaXhDb25zdHJ1Y3RvcjwyLCA0PihvcCwgTWF0Mng0
KHNfY29uc3RJbk1hdDJ4NFtpbk5keF0pKTsJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9N
QVQzWDI6CXdyaXRlTWF0cml4Q29uc3RydWN0b3I8MywgMj4ob3AsIE1hdDN4MihzX2NvbnN0SW5N
YXQzeDJbaW5OZHhdKSk7CWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUMzoJd3JpdGVN
YXRyaXhDb25zdHJ1Y3RvcjwzLCAzPihvcCwgTWF0MyhzX2NvbnN0SW5NYXQzeDNbaW5OZHhdKSk7
CQlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FUX01BVDNYNDoJd3JpdGVNYXRyaXhDb25zdHJ1
Y3RvcjwzLCA0PihvcCwgTWF0M3g0KHNfY29uc3RJbk1hdDN4NFtpbk5keF0pKTsJYnJlYWs7Cist
CQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQ0WDI6CXdyaXRlTWF0cml4Q29uc3RydWN0b3I8NCwgMj4o
b3AsIE1hdDR4MihzX2NvbnN0SW5NYXQ0eDJbaW5OZHhdKSk7CWJyZWFrOworLQkJCQljYXNlIFRZ
UEVfRkxPQVRfTUFUNFgzOgl3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDQsIDM+KG9wLCBNYXQ0eDMo
c19jb25zdEluTWF0NHgzW2luTmR4XSkpOwlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FUX01B
VDQ6CXdyaXRlTWF0cml4Q29uc3RydWN0b3I8NCwgND4ob3AsIE1hdDQoc19jb25zdEluTWF0NHg0
W2luTmR4XSkpOwkJYnJlYWs7CistCistCQkJCWRlZmF1bHQ6CistCQkJCQlERV9BU1NFUlQoREVf
RkFMU0UpOworLQkJCX0KKy0KKy0JCQlvcCA8PCAiO1xuIjsKKy0KKy0JCQlpblZhbHVlID0gc3Ry
aW5nKCJpbiIpICsgZGU6OnRvU3RyaW5nKGluTmR4KTsKKy0JCX0KKy0JfQorLQorLQl2dHggPDwg
IlxuIgorLQkJPDwgInZvaWQgbWFpbiAodm9pZClcbiIKKy0JCTw8ICJ7XG4iCistCQk8PCAiCWds
X1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiI7CistCWZyYWcgPDwgIlxuIgorLQkJIDw8ICJ2b2lk
IG1haW4gKHZvaWQpXG4iCistCQkgPDwgIntcbiI7CistCistCWlmIChtX2lzVmVydGV4Q2FzZSkK
Ky0JCWZyYWcgPDwgIglkRVFQX0ZyYWdDb2xvciA9IHZfY29sb3I7XG4iOworLQllbHNlCistCXsK
Ky0JCWZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGNvcHlJdGVyID0gcGFzc1Zh
cnMuYmVnaW4oKTsgY29weUl0ZXIgIT0gcGFzc1ZhcnMuZW5kKCk7IGNvcHlJdGVyKyspCistCQkJ
dnR4IDw8ICIJdl8iIDw8ICpjb3B5SXRlciA8PCAiID0gIiA8PCAiYV8iIDw8ICpjb3B5SXRlciA8
PCAiO1xuIjsKKy0JfQorLQorLQkvLyBPcGVyYXRpb24uCistCistCXN3aXRjaCAoZ2V0T3BlcmF0
aW9uTmF0dXJlKG1fb3ApKQorLQl7CistCQljYXNlIE9QRVJBVElPTk5BVFVSRV9QVVJFOgorLQkJ
CURFX0FTU0VSVChnZXRPcGVyYXRpb25UeXBlKG1fb3ApICE9IE9QRVJBVElPTlRZUEVfQVNTSUdO
TUVOVCk7CistCistCQkJb3BlcmF0aW9uVmFsdWUwID0gaW5WYWx1ZTA7CistCQkJb3BlcmF0aW9u
VmFsdWUxID0gaW5WYWx1ZTE7CistCQkJYnJlYWs7CistCistCQljYXNlIE9QRVJBVElPTk5BVFVS
RV9NVVRBVElORzoKKy0JCQlERV9BU1NFUlQoZ2V0T3BlcmF0aW9uVHlwZShtX29wKSAhPSBPUEVS
QVRJT05UWVBFX0FTU0lHTk1FTlQpOworLQorLQkJCW9wIDw8ICIJIiA8PCBnZXRQcmVjaXNpb25O
YW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwg
IiB0bXBWYWx1ZSA9ICIgPDwgaW5WYWx1ZTAgPDwgIjtcbiI7CistCistCQkJb3BlcmF0aW9uVmFs
dWUwID0gInRtcFZhbHVlIjsKKy0JCQlvcGVyYXRpb25WYWx1ZTEgPSBpblZhbHVlMTsKKy0JCQli
cmVhazsKKy0KKy0JCWNhc2UgT1BFUkFUSU9OTkFUVVJFX0FTU0lHTk1FTlQ6CistCQkJREVfQVNT
RVJUKGdldE9wZXJhdGlvblR5cGUobV9vcCkgPT0gT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UKTsK
Ky0KKy0JCQlvcGVyYXRpb25WYWx1ZTAgPSBpblZhbHVlMDsKKy0JCQlvcGVyYXRpb25WYWx1ZTEg
PSBpblZhbHVlMTsKKy0JCQlicmVhazsKKy0KKy0JCWRlZmF1bHQ6CistCQkJREVfQVNTRVJUKERF
X0ZBTFNFKTsKKy0JfQorLQorLQlzd2l0Y2ggKGdldE9wZXJhdGlvblR5cGUobV9vcCkpCistCXsK
Ky0JCWNhc2UgT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I6CistCQkJb3AgPDwgIgkiIDw8
IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBlTmFtZShy
ZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgb3BlcmF0aW9uVmFsdWUwIDw8ICIgIiA8PCBnZXRP
cGVyYXRpb25OYW1lKG1fb3ApIDw8ICIgIiA8PCBvcGVyYXRpb25WYWx1ZTEgPDwgIjtcbiI7Cist
CQkJYnJlYWs7CistCistCQljYXNlIE9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9S
OgorLQkJCW9wIDw8ICIJIiA8PCBnZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8
PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwgIiByZXMgPSAiIDw8IGdldE9wZXJhdGlv
bk5hbWUobV9vcCkgPDwgb3BlcmF0aW9uVmFsdWUwIDw8ICI7XG4iOworLQkJCWJyZWFrOworLQor
LQkJY2FzZSBPUEVSQVRJT05UWVBFX1VOQVJZX1BPU1RGSVhfT1BFUkFUT1I6CistCQkJb3AgPDwg
IgkiIDw8IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBl
TmFtZShyZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgb3BlcmF0aW9uVmFsdWUwIDw8IGdldE9w
ZXJhdGlvbk5hbWUobV9vcCkgPDwgIjtcbiI7CistCQkJYnJlYWs7CistCistCQljYXNlIE9QRVJB
VElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOgorLQkJCW9wIDw8ICIJIiA8PCBnZXRQcmVjaXNpb25O
YW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwg
IiByZXMgPSAiIDw8IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgIigiIDw8IG9wZXJhdGlvblZh
bHVlMCA8PCAiLCAiIDw8IG9wZXJhdGlvblZhbHVlMSA8PCAiKTtcbiI7CistCQkJYnJlYWs7Cist
CistCQljYXNlIE9QRVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT046CistCQkJb3AgPDwgIgkiIDw8
IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBlTmFtZShy
ZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgZ2V0T3BlcmF0aW9uTmFtZShtX29wKSA8PCAiKCIg
PDwgb3BlcmF0aW9uVmFsdWUwIDw8ICIpO1xuIjsKKy0JCQlicmVhazsKKy0KKy0JCWNhc2UgT1BF
UkFUSU9OVFlQRV9BU1NJR05NRU5UOgorLQkJCW9wIDw8ICIJIiA8PCBnZXRQcmVjaXNpb25OYW1l
KHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwgIiBy
ZXMgPSAiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiO1xuIjsKKy0JCQlvcCA8PCAiCXJlcyAiIDw8
IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgIiAiIDw8IG9wZXJhdGlvblZhbHVlMSA8PCAiO1xu
IjsKKy0JCQlicmVhazsKKy0KKy0JCWRlZmF1bHQ6CistCQkJREVfQVNTRVJUKERFX0ZBTFNFKTsK
Ky0JfQorLQorLQkvLyBSZWR1Y3Rpb24gdG8gdmVjMyAocmdiKS4gQ2hlY2sgdGhlIHVzZWQgdmFs
dWUgdG9vIGlmIGl0IHdhcyBtb2RpZmllZAorLQlvcCA8PCAiCSIgPDwgKG1faXNWZXJ0ZXhDYXNl
ID8gInZfY29sb3IiIDogImRFUVBfRnJhZ0NvbG9yIikgPDwgIiA9ICI7CistCistCWlmIChpc09w
ZXJhdGlvblZhbHVlTW9kaWZ5aW5nKG1fb3ApKQorLQkJb3AgPDwgInZlYzQoIiA8PCBnZW5HTFNM
TWF0VG9WZWMzUmVkdWN0aW9uKHJlc3VsdFR5cGUsICJyZXMiKSA8PCAiLCAxLjApICsgdmVjNCgi
IDw8IGdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24ocmVzdWx0VHlwZSwgInRtcFZhbHVlIikgPDwg
IiwgMC4wKTtcbiI7CistCWVsc2UKKy0JCW9wIDw8ICJ2ZWM0KCIgPDwgZ2VuR0xTTE1hdFRvVmVj
M1JlZHVjdGlvbihyZXN1bHRUeXBlLCAicmVzIikgPDwgIiwgMS4wKTtcbiI7CistCistCXZ0eCA8
PCAifVxuIjsKKy0JZnJhZyA8PCAifVxuIjsKKy0KKy0JbV92ZXJ0U2hhZGVyU291cmNlCT0gdnR4
LnN0cigpOworLQltX2ZyYWdTaGFkZXJTb3VyY2UJPSBmcmFnLnN0cigpOworLQorLQkvLyBcdG9k
byBbMjAxMi0wMi0xNCBweXJ5XSBDb21wdXRlIGJldHRlciB2YWx1ZXMgZm9yIG1hdHJpeCB0ZXN0
cy4KKy0JbV91c2VyQXR0cmliVHJhbnNmb3Jtcy5yZXNpemUoNCk7CistCWZvciAoaW50IGF0dHJp
Yk5keCA9IDA7IGF0dHJpYk5keCA8IDQ7IGF0dHJpYk5keCsrKQorLQl7CistCQltX3VzZXJBdHRy
aWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0gPSBNYXQ0KDAuMGYpOworLQkJbV91c2VyQXR0cmliVHJh
bnNmb3Jtc1thdHRyaWJOZHhdKCAgICAgICAgICAgICAgICAgIDAsIDMpID0gMC4yZjsJCQkJCQkJ
CS8vICE8IHByZXZlbnQgbWF0cml4KnZlYyBmcm9tIGdvaW5nIGludG8gemVybyAoYXNzdW1pbmcg
dmVjLncgIT0gMCkKKy0JCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XSggICAgICAg
ICAgICAgICAgICAxLCAzKSA9IDAuMWY7CQkJCQkJCQkvLyAhPAorLQkJbV91c2VyQXR0cmliVHJh
bnNmb3Jtc1thdHRyaWJOZHhdKCAgICAgICAgICAgICAgICAgIDIsIDMpID0gMC40ZiArIDAuMTVm
ICogZmxvYXQoYXR0cmliTmR4KTsJLy8gITwKKy0JCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0
cmliTmR4XSggICAgICAgICAgICAgICAgICAzLCAzKSA9IDAuN2Y7CQkJCQkJCQkvLyAhPAorLQkJ
bV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCgwICsgYXR0cmliTmR4KSAlIDQsIDAp
ID0gMS4wZjsKKy0JCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XSgoMSArIGF0dHJp
Yk5keCkgJSA0LCAxKSA9IDEuMGY7CistCQltX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5k
eF0oKDIgKyBhdHRyaWJOZHgpICUgNCwgMikgPSAxLjBmOworLQkJbV91c2VyQXR0cmliVHJhbnNm
b3Jtc1thdHRyaWJOZHhdKCgzICsgYXR0cmliTmR4KSAlIDQsIDMpID0gMS4wZjsKKy0JfQorLQor
LQkvLyBwcmV2ZW50IGJhZCByZWZlcmVuY2UgY2FzZXMgc3VjaCBhcyBibGFjayByZXN1bHQgaW1h
Z2VzIGJ5IGZpbmUtdHVuaW5nIHVzZWQgbWF0cmljZXMKKy0JaWYgKGdldE9wZXJhdGlvblRlc3RN
YXRyaXhUeXBlKG1fb3ApICE9IFRFU1RNQVRSSVhUWVBFX0RFRkFVTFQpCistCXsKKy0JCWZvciAo
aW50IGF0dHJpYk5keCA9IDA7IGF0dHJpYk5keCA8IDQ7IGF0dHJpYk5keCsrKQorLQkJeworLQkJ
CWZvciAoaW50IHJvdyA9IDA7IHJvdyA8IDQ7IHJvdysrKQorLQkJCWZvciAoaW50IGNvbCA9IDA7
IGNvbCA8IDQ7IGNvbCsrKQorLQkJCXsKKy0JCQkJc3dpdGNoIChnZXRPcGVyYXRpb25UZXN0TWF0
cml4VHlwZShtX29wKSkKKy0JCQkJeworLQkJCQkJY2FzZSBURVNUTUFUUklYVFlQRV9ORUdBVEVE
OgorLQkJCQkJCW1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4XShyb3csIGNvbCkgPSAt
bV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKTsKKy0JCQkJCQlicmVh
azsKKy0JCQkJCWNhc2UgVEVTVE1BVFJJWFRZUEVfSU5DUkVNRU5URUQ6CistCQkJCQkJbV91c2Vy
QXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKSArPSAwLjNmOworLQkJCQkJCWJy
ZWFrOworLQkJCQkJY2FzZSBURVNUTUFUUklYVFlQRV9ERUNSRU1FTlRFRDoKKy0JCQkJCQltX3Vz
ZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpIC09IDAuM2Y7CistCQkJCQkJ
YnJlYWs7CistCQkJCQljYXNlIFRFU1RNQVRSSVhUWVBFX05FR0FURURfSU5DUkVNRU5URUQ6Cist
CQkJCQkJbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKSA9IC1tX3Vz
ZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpICsgMC4zZjsKKy0JCQkJCQli
cmVhazsKKy0JCQkJCWNhc2UgVEVTVE1BVFJJWFRZUEVfSU5DUkVNRU5URURfTEVTUzoKKy0JCQkJ
CQltX3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpIC09IDAuMWY7Cist
CQkJCQkJYnJlYWs7CistCistCQkJCQlkZWZhdWx0OgorLQkJCQkJCURFX0FTU0VSVChERV9GQUxT
RSk7CistCQkJCQkJYnJlYWs7CistCQkJCX0KKy0JCQl9CistCQl9CistCX0KKy0KKy0JU2hhZGVy
UmVuZGVyQ2FzZTo6aW5pdCgpOworKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gIHZ0eDsKKysgICAg
c3RkOjpvc3RyaW5nc3RyZWFtICBmcmFnOworKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0mIG9wICAg
ICAgICAgICAgICA9IG1faXNWZXJ0ZXhDYXNlID8gdnR4IDogZnJhZzsKKysKKysgICAgYm9vbCAg
ICAgICAgICAgICAgICBpc0luRHluTWF0MCAgICAgPSBpc0RhdGFUeXBlTWF0cml4KG1faW4wLmRh
dGFUeXBlKSAmJiBtX2luMC5pbnB1dFR5cGUgPT0gSU5QVVRUWVBFX0RZTkFNSUM7CisrICAgIGJv
b2wgICAgICAgICAgICAgICAgaXNJbkR5bk1hdDEgICAgID0gaXNEYXRhVHlwZU1hdHJpeChtX2lu
MS5kYXRhVHlwZSkgJiYgbV9pbjEuaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDOworKyAg
ICBzdHJpbmcgICAgICAgICAgICAgIGluVmFsdWUwOworKyAgICBzdHJpbmcgICAgICAgICAgICAg
IGluVmFsdWUxOworKyAgICBEYXRhVHlwZSAgICAgICAgICAgIHJlc3VsdFR5cGUgICAgICA9IFRZ
UEVfTEFTVDsKKysgICAgUHJlY2lzaW9uICAgICAgICAgICByZXN1bHRQcmVjICAgICAgPSBtX2lu
MC5wcmVjaXNpb247CisrICAgIHZlY3RvcjxzdHJpbmc+ICAgICAgcGFzc1ZhcnM7CisrICAgIGlu
dCAgICAgICAgICAgICAgICAgbnVtSW5wdXRzICAgICAgID0gKGlzT3BlcmF0aW9uQmluYXJ5KG1f
b3ApKSA/ICgyKSA6ICgxKTsKKysKKysgICAgc3RkOjpzdHJpbmcgICAgICAgICBvcGVyYXRpb25W
YWx1ZTA7CisrICAgIHN0ZDo6c3RyaW5nICAgICAgICAgb3BlcmF0aW9uVmFsdWUxOworKworKyAg
ICBERV9BU1NFUlQoIWlzSW5EeW5NYXQwIHx8ICFpc0luRHluTWF0MSk7IC8vIE9ubHkgc2luZ2xl
IGR5bmFtaWMgbWF0cml4IGlucHV0IGlzIGFsbG93ZWQuCisrICAgIERFX1VOUkVGKGlzSW5EeW5N
YXQwICYmIGlzSW5EeW5NYXQxKTsKKysKKysgICAgLy8gQ29tcHV0ZSByZXN1bHQgdHlwZS4KKysg
ICAgaWYgKG1fb3AgPT0gT1BfTVVMICYmIGlzRGF0YVR5cGVNYXRyaXgobV9pbjAuZGF0YVR5cGUp
ICYmIGlzRGF0YVR5cGVNYXRyaXgobV9pbjEuZGF0YVR5cGUpKQorKyAgICB7CisrICAgICAgICBy
ZXN1bHRUeXBlID0gZ2V0RGF0YVR5cGVNYXRyaXgoZ2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5z
KG1faW4xLmRhdGFUeXBlKSwgZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKG1faW4wLmRhdGFUeXBl
KSk7CisrICAgIH0KKysgICAgZWxzZSBpZiAobV9vcCA9PSBPUF9PVVRFUl9QUk9EVUNUKQorKyAg
ICB7CisrICAgICAgICByZXN1bHRUeXBlID0gZ2V0RGF0YVR5cGVNYXRyaXgoZ2V0RGF0YVR5cGVT
Y2FsYXJTaXplKG1faW4xLmRhdGFUeXBlKSwgZ2V0RGF0YVR5cGVTY2FsYXJTaXplKG1faW4wLmRh
dGFUeXBlKSk7CisrICAgIH0KKysgICAgZWxzZSBpZiAobV9vcCA9PSBPUF9UUkFOU1BPU0UpCisr
ICAgIHsKKysgICAgICAgIHJlc3VsdFR5cGUgPSBnZXREYXRhVHlwZU1hdHJpeChnZXREYXRhVHlw
ZU1hdHJpeE51bVJvd3MobV9pbjAuZGF0YVR5cGUpLCBnZXREYXRhVHlwZU1hdHJpeE51bUNvbHVt
bnMobV9pbjAuZGF0YVR5cGUpKTsKKysgICAgfQorKyAgICBlbHNlIGlmIChtX29wID09IE9QX0lO
VkVSU0UpCisrICAgIHsKKysgICAgICAgIHJlc3VsdFR5cGUgPSBtX2luMC5kYXRhVHlwZTsKKysg
ICAgfQorKyAgICBlbHNlIGlmIChtX29wID09IE9QX0RFVEVSTUlOQU5UKQorKyAgICB7CisrICAg
ICAgICByZXN1bHRUeXBlID0gVFlQRV9GTE9BVDsKKysgICAgfQorKyAgICBlbHNlIGlmIChnZXRP
cGVyYXRpb25UeXBlKG1fb3ApID09IE9QRVJBVElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9S
IHx8CisrICAgICAgICAgICAgIGdldE9wZXJhdGlvblR5cGUobV9vcCkgPT0gT1BFUkFUSU9OVFlQ
RV9VTkFSWV9QT1NURklYX09QRVJBVE9SKQorKyAgICB7CisrICAgICAgICByZXN1bHRUeXBlID0g
bV9pbjAuZGF0YVR5cGU7CisrICAgIH0KKysgICAgZWxzZSBpZiAoaXNEYXRhVHlwZU1hdHJpeCht
X2luMC5kYXRhVHlwZSkgJiYgaXNEYXRhVHlwZU1hdHJpeChtX2luMS5kYXRhVHlwZSkpCisrICAg
IHsKKysgICAgICAgIERFX0FTU0VSVChtX2luMC5kYXRhVHlwZSA9PSBtX2luMS5kYXRhVHlwZSk7
CisrICAgICAgICByZXN1bHRUeXBlID0gbV9pbjAuZGF0YVR5cGU7CisrICAgIH0KKysgICAgZWxz
ZSBpZiAoaXNEYXRhVHlwZU1hdHJpeChtX2luMC5kYXRhVHlwZSkgfHwgaXNEYXRhVHlwZU1hdHJp
eChtX2luMS5kYXRhVHlwZSkpCisrICAgIHsKKysgICAgICAgIGludCAgICAgICAgIG1hdE5keCAg
ICAgID0gaXNEYXRhVHlwZU1hdHJpeChtX2luMC5kYXRhVHlwZSkgPyAwIDogMTsKKysgICAgICAg
IERhdGFUeXBlICAgIG1hdHJpeFR5cGUgID0gbWF0TmR4ID09IDAgPyBtX2luMC5kYXRhVHlwZSA6
IG1faW4xLmRhdGFUeXBlOworKyAgICAgICAgRGF0YVR5cGUgICAgb3RoZXJUeXBlICAgPSBtYXRO
ZHggPT0gMCA/IG1faW4xLmRhdGFUeXBlIDogbV9pbjAuZGF0YVR5cGU7CisrCisrICAgICAgICBp
ZiAob3RoZXJUeXBlID09IFRZUEVfRkxPQVQpCisrICAgICAgICAgICAgcmVzdWx0VHlwZSA9IG1h
dHJpeFR5cGU7CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgREVfQVNT
RVJUKGlzRGF0YVR5cGVWZWN0b3Iob3RoZXJUeXBlKSk7CisrICAgICAgICAgICAgcmVzdWx0VHlw
ZSA9IGdldERhdGFUeXBlRmxvYXRWZWMobWF0TmR4ID09IDAgPyBnZXREYXRhVHlwZU1hdHJpeE51
bVJvd3MobWF0cml4VHlwZSkgOiBnZXREYXRhVHlwZU1hdHJpeE51bUNvbHVtbnMobWF0cml4VHlw
ZSkpOworKyAgICAgICAgfQorKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAgICAgREVf
QVNTRVJUKERFX0ZBTFNFKTsKKysgICAgfQorKworKyAgICB2dHggPDwgIiN2ZXJzaW9uIDMwMCBl
c1xuIjsKKysgICAgZnJhZyA8PCAiI3ZlcnNpb24gMzAwIGVzXG4iOworKworKyAgICB2dHggPDwg
ImluIGhpZ2hwIHZlYzQgYV9wb3NpdGlvbjtcbiI7CisrICAgIGZyYWcgPDwgImxheW91dChsb2Nh
dGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZEVRUF9GcmFnQ29sb3I7XG4iOworKyAgICBpZiAo
bV9pc1ZlcnRleENhc2UpCisrICAgIHsKKysgICAgICAgIHZ0eCA8PCAib3V0IG1lZGl1bXAgdmVj
NCB2X2NvbG9yO1xuIjsKKysgICAgICAgIGZyYWcgPDwgImluIG1lZGl1bXAgdmVjNCB2X2NvbG9y
O1xuIjsKKysgICAgfQorKworKyAgICAvLyBJbnB1dCBkZWNsYXJhdGlvbnMuCisrICAgIGZvciAo
aW50IGluTmR4ID0gMDsgaW5OZHggPCBudW1JbnB1dHM7IGluTmR4KyspCisrICAgIHsKKysgICAg
ICAgIGNvbnN0IFNoYWRlcklucHV0JiAgaW4gICAgICAgICAgPSBpbk5keCA+IDAgPyBtX2luMSA6
IG1faW4wOworKyAgICAgICAgY29uc3QgY2hhciogICAgICAgICBwcmVjTmFtZSAgICA9IGdldFBy
ZWNpc2lvbk5hbWUoaW4ucHJlY2lzaW9uKTsKKysgICAgICAgIGNvbnN0IGNoYXIqICAgICAgICAg
dHlwZU5hbWUgICAgPSBnZXREYXRhVHlwZU5hbWUoaW4uZGF0YVR5cGUpOworKyAgICAgICAgc3Ry
aW5nJiAgICAgICAgICAgICBpblZhbHVlICAgICA9IGluTmR4ID4gMCA/IGluVmFsdWUxIDogaW5W
YWx1ZTA7CisrCisrICAgICAgICBpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlD
KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHZ0eCA8PCAiaW4gIiA8PCBwcmVjTmFtZSA8PCAi
ICIgPDwgdHlwZU5hbWUgPDwgIiBhXyI7CisrCisrICAgICAgICAgICAgaWYgKGlzRGF0YVR5cGVN
YXRyaXgoaW4uZGF0YVR5cGUpKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgLy8g
YV9tYXROLCB2X21hdE4KKysgICAgICAgICAgICAgICAgdnR4IDw8IHR5cGVOYW1lIDw8ICI7XG4i
OworKyAgICAgICAgICAgICAgICBpZiAoIW1faXNWZXJ0ZXhDYXNlKQorKyAgICAgICAgICAgICAg
ICB7CisrICAgICAgICAgICAgICAgICAgICB2dHggPDwgIm91dCAiIDw8IHByZWNOYW1lIDw8ICIg
IiA8PCB0eXBlTmFtZSA8PCAiIHZfIiA8PCB0eXBlTmFtZSA8PCAiO1xuIjsKKysgICAgICAgICAg
ICAgICAgICAgIGZyYWcgPDwgImluICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5cGVOYW1lIDw8
ICIgdl8iIDw8IHR5cGVOYW1lIDw8ICI7XG4iOworKyAgICAgICAgICAgICAgICAgICAgcGFzc1Zh
cnMucHVzaF9iYWNrKHR5cGVOYW1lKTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAg
ICAgICAgICBpblZhbHVlID0gc3RyaW5nKG1faXNWZXJ0ZXhDYXNlID8gImFfIiA6ICJ2XyIpICsg
Z2V0RGF0YVR5cGVOYW1lKGluLmRhdGFUeXBlKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg
ICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgLy8gYV9jb29yZHMsIHZf
Y29vcmRzCisrICAgICAgICAgICAgICAgIHZ0eCA8PCAiY29vcmRzO1xuIjsKKysgICAgICAgICAg
ICAgICAgaWYgKCFtX2lzVmVydGV4Q2FzZSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAg
ICAgICAgICAgICAgdnR4IDw8ICJvdXQgIiA8PCBwcmVjTmFtZSA8PCAiICIgPDwgdHlwZU5hbWUg
PDwgIiB2X2Nvb3JkcztcbiI7CisrICAgICAgICAgICAgICAgICAgICBmcmFnIDw8ICJpbiAiIDw8
IHByZWNOYW1lIDw8ICIgIiA8PCB0eXBlTmFtZSA8PCAiIHZfY29vcmRzO1xuIjsKKysgICAgICAg
ICAgICAgICAgICAgIHBhc3NWYXJzLnB1c2hfYmFjaygiY29vcmRzIik7CisrICAgICAgICAgICAg
ICAgIH0KKysKKysgICAgICAgICAgICAgICAgaW5WYWx1ZSA9IG1faXNWZXJ0ZXhDYXNlID8gImFf
Y29vcmRzIiA6ICJ2X2Nvb3JkcyI7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAg
ICAgZWxzZSBpZiAoaW4uaW5wdXRUeXBlID09IElOUFVUVFlQRV9VTklGT1JNKQorKyAgICAgICAg
eworKyAgICAgICAgICAgIG9wIDw8ICJ1bmlmb3JtICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5
cGVOYW1lIDw8ICIgdV9pbiIgPDwgaW5OZHggPDwgIjtcbiI7CisrICAgICAgICAgICAgaW5WYWx1
ZSA9IHN0cmluZygidV9pbiIpICsgZGU6OnRvU3RyaW5nKGluTmR4KTsKKysgICAgICAgIH0KKysg
ICAgICAgIGVsc2UgaWYgKGluLmlucHV0VHlwZSA9PSBJTlBVVFRZUEVfQ09OU1QpCisrICAgICAg
ICB7CisrICAgICAgICAgICAgb3AgPDwgImNvbnN0ICIgPDwgcHJlY05hbWUgPDwgIiAiIDw8IHR5
cGVOYW1lIDw8ICIgaW4iIDw8IGluTmR4IDw8ICIgPSAiOworKworKyAgICAgICAgICAgIC8vIEdl
bmVyYXRlIGRlY2xhcmF0aW9uLgorKyAgICAgICAgICAgIHN3aXRjaCAoaW4uZGF0YVR5cGUpCisr
ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVQ6ICAgICAgICBv
cCA8PCBkZTo6ZmxvYXRUb1N0cmluZyhzX2NvbnN0SW5GbG9hdFtpbk5keF0sIDEpOyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVRfVkVDMjog
ICB3cml0ZVZlY3RvckNvbnN0cnVjdG9yPDI+KG9wLCBzX2NvbnN0SW5WZWMyW2luTmR4XSk7ICAg
ICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVRfVkVD
MzogICB3cml0ZVZlY3RvckNvbnN0cnVjdG9yPDM+KG9wLCBzX2NvbnN0SW5WZWMzW2luTmR4XSk7
ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVRf
VkVDNDogICB3cml0ZVZlY3RvckNvbnN0cnVjdG9yPDQ+KG9wLCBzX2NvbnN0SW5WZWM0W2luTmR4
XSk7ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxP
QVRfTUFUMjogICB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDIsIDI+KG9wLCBNYXQyKHNfY29uc3RJ
bk1hdDJ4Mltpbk5keF0pKTsgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVf
RkxPQVRfTUFUMlgzOiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDIsIDM+KG9wLCBNYXQyeDMoc19j
b25zdEluTWF0MngzW2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZ
UEVfRkxPQVRfTUFUMlg0OiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDIsIDQ+KG9wLCBNYXQyeDQo
c19jb25zdEluTWF0Mng0W2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNl
IFRZUEVfRkxPQVRfTUFUM1gyOiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDMsIDI+KG9wLCBNYXQz
eDIoc19jb25zdEluTWF0M3gyW2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBj
YXNlIFRZUEVfRkxPQVRfTUFUMzogICB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDMsIDM+KG9wLCBN
YXQzKHNfY29uc3RJbk1hdDN4M1tpbk5keF0pKTsgICAgIGJyZWFrOworKyAgICAgICAgICAgICAg
ICBjYXNlIFRZUEVfRkxPQVRfTUFUM1g0OiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDMsIDQ+KG9w
LCBNYXQzeDQoc19jb25zdEluTWF0M3g0W2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAgICAgICAg
ICAgICBjYXNlIFRZUEVfRkxPQVRfTUFUNFgyOiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDQsIDI+
KG9wLCBNYXQ0eDIoc19jb25zdEluTWF0NHgyW2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAgICAg
ICAgICAgICBjYXNlIFRZUEVfRkxPQVRfTUFUNFgzOiB3cml0ZU1hdHJpeENvbnN0cnVjdG9yPDQs
IDM+KG9wLCBNYXQ0eDMoc19jb25zdEluTWF0NHgzW2luTmR4XSkpOyAgIGJyZWFrOworKyAgICAg
ICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVRfTUFUNDogICB3cml0ZU1hdHJpeENvbnN0cnVjdG9y
PDQsIDQ+KG9wLCBNYXQ0KHNfY29uc3RJbk1hdDR4NFtpbk5keF0pKTsgICAgIGJyZWFrOworKwor
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgICAgICAgICAgREVfQVNTRVJU
KERFX0ZBTFNFKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgb3AgPDwgIjtcbiI7
CisrCisrICAgICAgICAgICAgaW5WYWx1ZSA9IHN0cmluZygiaW4iKSArIGRlOjp0b1N0cmluZyhp
bk5keCk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgdnR4IDw8ICJcbiIKKysgICAgICAg
IDw8ICJ2b2lkIG1haW4gKHZvaWQpXG4iCisrICAgICAgICA8PCAie1xuIgorKyAgICAgICAgPDwg
IiAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iOworKyAgICBmcmFnIDw8ICJcbiIKKysg
ICAgICAgICA8PCAidm9pZCBtYWluICh2b2lkKVxuIgorKyAgICAgICAgIDw8ICJ7XG4iOworKwor
KyAgICBpZiAobV9pc1ZlcnRleENhc2UpCisrICAgICAgICBmcmFnIDw8ICIgICBkRVFQX0ZyYWdD
b2xvciA9IHZfY29sb3I7XG4iOworKyAgICBlbHNlCisrICAgIHsKKysgICAgICAgIGZvciAodmVj
dG9yPHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGNvcHlJdGVyID0gcGFzc1ZhcnMuYmVnaW4oKTsg
Y29weUl0ZXIgIT0gcGFzc1ZhcnMuZW5kKCk7IGNvcHlJdGVyKyspCisrICAgICAgICAgICAgdnR4
IDw8ICIgICAgdl8iIDw8ICpjb3B5SXRlciA8PCAiID0gIiA8PCAiYV8iIDw8ICpjb3B5SXRlciA8
PCAiO1xuIjsKKysgICAgfQorKworKyAgICAvLyBPcGVyYXRpb24uCisrCisrICAgIHN3aXRjaCAo
Z2V0T3BlcmF0aW9uTmF0dXJlKG1fb3ApKQorKyAgICB7CisrICAgICAgICBjYXNlIE9QRVJBVElP
Tk5BVFVSRV9QVVJFOgorKyAgICAgICAgICAgIERFX0FTU0VSVChnZXRPcGVyYXRpb25UeXBlKG1f
b3ApICE9IE9QRVJBVElPTlRZUEVfQVNTSUdOTUVOVCk7CisrCisrICAgICAgICAgICAgb3BlcmF0
aW9uVmFsdWUwID0gaW5WYWx1ZTA7CisrICAgICAgICAgICAgb3BlcmF0aW9uVmFsdWUxID0gaW5W
YWx1ZTE7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlIE9QRVJBVElPTk5B
VFVSRV9NVVRBVElORzoKKysgICAgICAgICAgICBERV9BU1NFUlQoZ2V0T3BlcmF0aW9uVHlwZSht
X29wKSAhPSBPUEVSQVRJT05UWVBFX0FTU0lHTk1FTlQpOworKworKyAgICAgICAgICAgIG9wIDw8
ICIgIiA8PCBnZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlw
ZU5hbWUocmVzdWx0VHlwZSkgPDwgIiB0bXBWYWx1ZSA9ICIgPDwgaW5WYWx1ZTAgPDwgIjtcbiI7
CisrCisrICAgICAgICAgICAgb3BlcmF0aW9uVmFsdWUwID0gInRtcFZhbHVlIjsKKysgICAgICAg
ICAgICBvcGVyYXRpb25WYWx1ZTEgPSBpblZhbHVlMTsKKysgICAgICAgICAgICBicmVhazsKKysK
KysgICAgICAgIGNhc2UgT1BFUkFUSU9OTkFUVVJFX0FTU0lHTk1FTlQ6CisrICAgICAgICAgICAg
REVfQVNTRVJUKGdldE9wZXJhdGlvblR5cGUobV9vcCkgPT0gT1BFUkFUSU9OVFlQRV9BU1NJR05N
RU5UKTsKKysKKysgICAgICAgICAgICBvcGVyYXRpb25WYWx1ZTAgPSBpblZhbHVlMDsKKysgICAg
ICAgICAgICBvcGVyYXRpb25WYWx1ZTEgPSBpblZhbHVlMTsKKysgICAgICAgICAgICBicmVhazsK
KysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgREVfQVNTRVJUKERFX0ZBTFNFKTsK
KysgICAgfQorKworKyAgICBzd2l0Y2ggKGdldE9wZXJhdGlvblR5cGUobV9vcCkpCisrICAgIHsK
KysgICAgICAgIGNhc2UgT1BFUkFUSU9OVFlQRV9CSU5BUllfT1BFUkFUT1I6CisrICAgICAgICAg
ICAgb3AgPDwgIiAiIDw8IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdl
dERhdGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgb3BlcmF0aW9uVmFsdWUw
IDw8ICIgIiA8PCBnZXRPcGVyYXRpb25OYW1lKG1fb3ApIDw8ICIgIiA8PCBvcGVyYXRpb25WYWx1
ZTEgPDwgIjtcbiI7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlIE9QRVJB
VElPTlRZUEVfVU5BUllfUFJFRklYX09QRVJBVE9SOgorKyAgICAgICAgICAgIG9wIDw8ICIgIiA8
PCBnZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5hbWUo
cmVzdWx0VHlwZSkgPDwgIiByZXMgPSAiIDw8IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgb3Bl
cmF0aW9uVmFsdWUwIDw8ICI7XG4iOworKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAg
Y2FzZSBPUEVSQVRJT05UWVBFX1VOQVJZX1BPU1RGSVhfT1BFUkFUT1I6CisrICAgICAgICAgICAg
b3AgPDwgIiAiIDw8IGdldFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERh
dGFUeXBlTmFtZShyZXN1bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgb3BlcmF0aW9uVmFsdWUwIDw8
IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwgIjtcbiI7CisrICAgICAgICAgICAgYnJlYWs7Cisr
CisrICAgICAgICBjYXNlIE9QRVJBVElPTlRZUEVfQklOQVJZX0ZVTkNUSU9OOgorKyAgICAgICAg
ICAgIG9wIDw8ICIgIiA8PCBnZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBn
ZXREYXRhVHlwZU5hbWUocmVzdWx0VHlwZSkgPDwgIiByZXMgPSAiIDw8IGdldE9wZXJhdGlvbk5h
bWUobV9vcCkgPDwgIigiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiLCAiIDw8IG9wZXJhdGlvblZh
bHVlMSA8PCAiKTtcbiI7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlIE9Q
RVJBVElPTlRZUEVfVU5BUllfRlVOQ1RJT046CisrICAgICAgICAgICAgb3AgPDwgIiAiIDw8IGdl
dFByZWNpc2lvbk5hbWUocmVzdWx0UHJlYykgPDwgIiAiIDw8IGdldERhdGFUeXBlTmFtZShyZXN1
bHRUeXBlKSA8PCAiIHJlcyA9ICIgPDwgZ2V0T3BlcmF0aW9uTmFtZShtX29wKSA8PCAiKCIgPDwg
b3BlcmF0aW9uVmFsdWUwIDw8ICIpO1xuIjsKKysgICAgICAgICAgICBicmVhazsKKysKKysgICAg
ICAgIGNhc2UgT1BFUkFUSU9OVFlQRV9BU1NJR05NRU5UOgorKyAgICAgICAgICAgIG9wIDw8ICIg
IiA8PCBnZXRQcmVjaXNpb25OYW1lKHJlc3VsdFByZWMpIDw8ICIgIiA8PCBnZXREYXRhVHlwZU5h
bWUocmVzdWx0VHlwZSkgPDwgIiByZXMgPSAiIDw8IG9wZXJhdGlvblZhbHVlMCA8PCAiO1xuIjsK
KysgICAgICAgICAgICBvcCA8PCAiIHJlcyAiIDw8IGdldE9wZXJhdGlvbk5hbWUobV9vcCkgPDwg
IiAiIDw8IG9wZXJhdGlvblZhbHVlMSA8PCAiO1xuIjsKKysgICAgICAgICAgICBicmVhazsKKysK
KysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgREVfQVNTRVJUKERFX0ZBTFNFKTsKKysg
ICAgfQorKworKyAgICAvLyBSZWR1Y3Rpb24gdG8gdmVjMyAocmdiKS4gQ2hlY2sgdGhlIHVzZWQg
dmFsdWUgdG9vIGlmIGl0IHdhcyBtb2RpZmllZAorKyAgICBvcCA8PCAiICIgPDwgKG1faXNWZXJ0
ZXhDYXNlID8gInZfY29sb3IiIDogImRFUVBfRnJhZ0NvbG9yIikgPDwgIiA9ICI7CisrCisrICAg
IGlmIChpc09wZXJhdGlvblZhbHVlTW9kaWZ5aW5nKG1fb3ApKQorKyAgICAgICAgb3AgPDwgInZl
YzQoIiA8PCBnZW5HTFNMTWF0VG9WZWMzUmVkdWN0aW9uKHJlc3VsdFR5cGUsICJyZXMiKSA8PCAi
LCAxLjApICsgdmVjNCgiIDw8IGdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24ocmVzdWx0VHlwZSwg
InRtcFZhbHVlIikgPDwgIiwgMC4wKTtcbiI7CisrICAgIGVsc2UKKysgICAgICAgIG9wIDw8ICJ2
ZWM0KCIgPDwgZ2VuR0xTTE1hdFRvVmVjM1JlZHVjdGlvbihyZXN1bHRUeXBlLCAicmVzIikgPDwg
IiwgMS4wKTtcbiI7CisrCisrICAgIHZ0eCA8PCAifVxuIjsKKysgICAgZnJhZyA8PCAifVxuIjsK
KysKKysgICAgbV92ZXJ0U2hhZGVyU291cmNlICA9IHZ0eC5zdHIoKTsKKysgICAgbV9mcmFnU2hh
ZGVyU291cmNlICA9IGZyYWcuc3RyKCk7CisrCisrICAgIC8vIFx0b2RvIFsyMDEyLTAyLTE0IHB5
cnldIENvbXB1dGUgYmV0dGVyIHZhbHVlcyBmb3IgbWF0cml4IHRlc3RzLgorKyAgICBtX3VzZXJB
dHRyaWJUcmFuc2Zvcm1zLnJlc2l6ZSg0KTsKKysgICAgZm9yIChpbnQgYXR0cmliTmR4ID0gMDsg
YXR0cmliTmR4IDwgNDsgYXR0cmliTmR4KyspCisrICAgIHsKKysgICAgICAgIG1fdXNlckF0dHJp
YlRyYW5zZm9ybXNbYXR0cmliTmR4XSA9IE1hdDQoMC4wZik7CisrICAgICAgICBtX3VzZXJBdHRy
aWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0oICAgICAgICAgICAgICAgICAgMCwgMykgPSAwLjJmOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAhPCBwcmV2ZW50IG1hdHJpeCp2ZWMgZnJv
bSBnb2luZyBpbnRvIHplcm8gKGFzc3VtaW5nIHZlYy53ICE9IDApCisrICAgICAgICBtX3VzZXJB
dHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0oICAgICAgICAgICAgICAgICAgMSwgMykgPSAwLjFm
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAhPAorKyAgICAgICAgbV91c2VyQXR0
cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCAgICAgICAgICAgICAgICAgIDIsIDMpID0gMC40ZiAr
IDAuMTVmICogZmxvYXQoYXR0cmliTmR4KTsgICAgLy8gITwKKysgICAgICAgIG1fdXNlckF0dHJp
YlRyYW5zZm9ybXNbYXR0cmliTmR4XSggICAgICAgICAgICAgICAgICAzLCAzKSA9IDAuN2Y7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICE8CisrICAgICAgICBtX3VzZXJBdHRyaWJU
cmFuc2Zvcm1zW2F0dHJpYk5keF0oKDAgKyBhdHRyaWJOZHgpICUgNCwgMCkgPSAxLjBmOworKyAg
ICAgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKCgxICsgYXR0cmliTmR4KSAl
IDQsIDEpID0gMS4wZjsKKysgICAgICAgIG1fdXNlckF0dHJpYlRyYW5zZm9ybXNbYXR0cmliTmR4
XSgoMiArIGF0dHJpYk5keCkgJSA0LCAyKSA9IDEuMGY7CisrICAgICAgICBtX3VzZXJBdHRyaWJU
cmFuc2Zvcm1zW2F0dHJpYk5keF0oKDMgKyBhdHRyaWJOZHgpICUgNCwgMykgPSAxLjBmOworKyAg
ICB9CisrCisrICAgIC8vIHByZXZlbnQgYmFkIHJlZmVyZW5jZSBjYXNlcyBzdWNoIGFzIGJsYWNr
IHJlc3VsdCBpbWFnZXMgYnkgZmluZS10dW5pbmcgdXNlZCBtYXRyaWNlcworKyAgICBpZiAoZ2V0
T3BlcmF0aW9uVGVzdE1hdHJpeFR5cGUobV9vcCkgIT0gVEVTVE1BVFJJWFRZUEVfREVGQVVMVCkK
KysgICAgeworKyAgICAgICAgZm9yIChpbnQgYXR0cmliTmR4ID0gMDsgYXR0cmliTmR4IDwgNDsg
YXR0cmliTmR4KyspCisrICAgICAgICB7CisrICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsg
cm93IDwgNDsgcm93KyspCisrICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgNDsg
Y29sKyspCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldE9wZXJh
dGlvblRlc3RNYXRyaXhUeXBlKG1fb3ApKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAg
ICAgICAgICAgICBjYXNlIFRFU1RNQVRSSVhUWVBFX05FR0FURUQ6CisrICAgICAgICAgICAgICAg
ICAgICAgICAgbV91c2VyQXR0cmliVHJhbnNmb3Jtc1thdHRyaWJOZHhdKHJvdywgY29sKSA9IC1t
X3VzZXJBdHRyaWJUcmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpOworKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAgICAgY2FzZSBURVNUTUFUUklY
VFlQRV9JTkNSRU1FTlRFRDoKKysgICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXJBdHRyaWJU
cmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpICs9IDAuM2Y7CisrICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgICAgICBjYXNlIFRFU1RNQVRSSVhUWVBF
X0RFQ1JFTUVOVEVEOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXNlckF0dHJpYlRyYW5z
Zm9ybXNbYXR0cmliTmR4XShyb3csIGNvbCkgLT0gMC4zZjsKKysgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgIGNhc2UgVEVTVE1BVFJJWFRZUEVfTkVH
QVRFRF9JTkNSRU1FTlRFRDoKKysgICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXJBdHRyaWJU
cmFuc2Zvcm1zW2F0dHJpYk5keF0ocm93LCBjb2wpID0gLW1fdXNlckF0dHJpYlRyYW5zZm9ybXNb
YXR0cmliTmR4XShyb3csIGNvbCkgKyAwLjNmOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworKyAgICAgICAgICAgICAgICAgICAgY2FzZSBURVNUTUFUUklYVFlQRV9JTkNSRU1FTlRF
RF9MRVNTOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXNlckF0dHJpYlRyYW5zZm9ybXNb
YXR0cmliTmR4XShyb3csIGNvbCkgLT0gMC4xZjsKKysgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKysKKysgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgICAg
ICAgICAgICAgREVfQVNTRVJUKERFX0ZBTFNFKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysg
ICAgfQorKworKyAgICBTaGFkZXJSZW5kZXJDYXNlOjppbml0KCk7CisgfQorIAorIHN0ZDo6c3Ry
aW5nIFNoYWRlck1hdHJpeENhc2U6OmdlbkdMU0xNYXRUb1ZlYzNSZWR1Y3Rpb24gKGNvbnN0IGds
dTo6RGF0YVR5cGUmIG1hdFR5cGUsIGNvbnN0IGNoYXIqIHZhck5hbWUpCisgeworLQlzdGQ6Om9z
dHJpbmdzdHJlYW0gb3A7CistCistCXN3aXRjaCAobWF0VHlwZSkKKy0JeworLQkJY2FzZSBUWVBF
X0ZMT0FUOgkJb3AgPDwgdmFyTmFtZSA8PCAiLCAiCQkJPDwgdmFyTmFtZSA8PCAiLCAiCQkJPDwg
dmFyTmFtZSA8PCAiIjsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFrOwor
LQkJY2FzZSBUWVBFX0ZMT0FUX1ZFQzI6CW9wIDw8IHZhck5hbWUgPDwgIi54LCAiCQkJPDwgdmFy
TmFtZSA8PCAiLnksICIJCTw8IHZhck5hbWUgPDwgIi54IjsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCWJyZWFrOworLQkJY2FzZSBUWVBFX0ZMT0FUX1ZFQzM6CW9wIDw8IHZhck5h
bWUgPDwgIiI7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ
CWJyZWFrOworLQkJY2FzZSBUWVBFX0ZMT0FUX1ZFQzQ6CW9wIDw8IHZhck5hbWUgPDwgIi54LCAi
CQkJPDwgdmFyTmFtZSA8PCAiLnksICIJCTw8IHZhck5hbWUgPDwgIi56KyIJCQk8PCB2YXJOYW1l
IDw8ICIudyI7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFrOworLQkJY2FzZSBUWVBF
X0ZMT0FUX01BVDI6CW9wIDw8IHZhck5hbWUgPDwgIlswXVswXSwgIgkJPDwgdmFyTmFtZSA8PCAi
WzFdWzBdLCAiCTw8IHZhck5hbWUgPDwgIlswXVsxXSsiCQk8PCB2YXJOYW1lIDw8ICJbMV1bMV0i
OwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFrOworLQkJY2FzZSBUWVBFX0ZMT0FUX01B
VDJYMzoJb3AgPDwgdmFyTmFtZSA8PCAiWzBdICsgIgkJPDwgdmFyTmFtZSA8PCAiWzFdIjsJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFrOworLQkJY2FzZSBUWVBF
X0ZMT0FUX01BVDJYNDoJb3AgPDwgdmFyTmFtZSA8PCAiWzBdLnh5eiArICIJPDwgdmFyTmFtZSA8
PCAiWzFdLnl6dyI7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFr
OworLQkJY2FzZSBUWVBFX0ZMT0FUX01BVDNYMjoJb3AgPDwgdmFyTmFtZSA8PCAiWzBdWzBdKyIJ
CTw8IHZhck5hbWUgPDwgIlswXVsxXSwgIgk8PCB2YXJOYW1lIDw8ICJbMV1bMF0rIgkJPDwgdmFy
TmFtZSA8PCAiWzFdWzFdLCAiCTw8IHZhck5hbWUgPDwgIlsyXVswXSsiIDw8IHZhck5hbWUgPDwg
IlsyXVsxXSI7CQkJCQkJCQkJCQkJCQlicmVhazsKKy0JCWNhc2UgVFlQRV9GTE9BVF9NQVQzOglv
cCA8PCB2YXJOYW1lIDw8ICJbMF0gKyAiCQk8PCB2YXJOYW1lIDw8ICJbMV0gKyAiCQk8PCB2YXJO
YW1lIDw8ICJbMl0iOwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlicmVhazsKKy0J
CWNhc2UgVFlQRV9GTE9BVF9NQVQzWDQ6CW9wIDw8IHZhck5hbWUgPDwgIlswXS54eXogKyAiCTw8
IHZhck5hbWUgPDwgIlsxXS55encgKyAiCTw8IHZhck5hbWUgPDwgIlsyXS56d3giOwkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCWJyZWFrOworLQkJY2FzZSBUWVBFX0ZMT0FUX01BVDRY
MjoJb3AgPDwgdmFyTmFtZSA8PCAiWzBdWzBdKyIJCTw8IHZhck5hbWUgPDwgIlswXVsxXSsiCQk8
PCB2YXJOYW1lIDw8ICJbM11bMF0sICIJPDwgdmFyTmFtZSA8PCAiWzFdWzBdKyIJCTw8IHZhck5h
bWUgPDwgIlsxXVsxXSsiIDw8IHZhck5hbWUgPDwgIlszXVsxXSwgIiA8PCB2YXJOYW1lIDw8ICJb
Ml1bMF0rIiA8PCB2YXJOYW1lIDw8ICJbMl1bMV0iOwlicmVhazsKKy0JCWNhc2UgVFlQRV9GTE9B
VF9NQVQ0WDM6CW9wIDw8IHZhck5hbWUgPDwgIlswXSArICIJCTw8IHZhck5hbWUgPDwgIlsxXSAr
ICIJCTw8IHZhck5hbWUgPDwgIlsyXSArICIJCTw8IHZhck5hbWUgPDwgIlszXSI7CQkJCQkJCQkJ
CQkJCQkJCQkJCQkJCQkJCQkJYnJlYWs7CistCQljYXNlIFRZUEVfRkxPQVRfTUFUNDoJb3AgPDwg
dmFyTmFtZSA8PCAiWzBdLnh5eisiCQk8PCB2YXJOYW1lIDw8ICJbMV0ueXp3KyIJPDwgdmFyTmFt
ZSA8PCAiWzJdLnp3eCsiCTw8IHZhck5hbWUgPDwgIlszXS53eHkiOwkJCQkJCQkJCQkJCQkJCQkJ
CQkJCQkJCQkJYnJlYWs7CistCistCQlkZWZhdWx0OgorLQkJCURFX0FTU0VSVChERV9GQUxTRSk7
CistCX0KKy0KKy0JcmV0dXJuIG9wLnN0cigpOworKyAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3A7
CisrCisrICAgIHN3aXRjaCAobWF0VHlwZSkKKysgICAgeworKyAgICAgICAgY2FzZSBUWVBFX0ZM
T0FUOiAgICAgICAgb3AgPDwgdmFyTmFtZSA8PCAiLCAiICAgICAgICAgICA8PCB2YXJOYW1lIDw8
ICIsICIgICAgICAgICAgPDwgdmFyTmFtZSA8PCAiIjsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisrICAgICAgICBjYXNlIFRZUEVfRkxPQVRfVkVDMjogICBvcCA8PCB2YXJOYW1lIDw8
ICIueCwgIiAgICAgICAgIDw8IHZhck5hbWUgPDwgIi55LCAiICAgICAgICA8PCB2YXJOYW1lIDw8
ICIueCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFlQRV9G
TE9BVF9WRUMzOiAgIG9wIDw8IHZhck5hbWUgPDwgIiI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX1ZFQzQ6ICAgb3AgPDwgdmFyTmFtZSA8
PCAiLngsICIgICAgICAgICA8PCB2YXJOYW1lIDw8ICIueSwgIiAgICAgICAgPDwgdmFyTmFtZSA8
PCAiLnorIiAgICAgICAgIDw8IHZhck5hbWUgPDwgIi53IjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIFRZUEVf
RkxPQVRfTUFUMjogICBvcCA8PCB2YXJOYW1lIDw8ICJbMF1bMF0sICIgICAgIDw8IHZhck5hbWUg
PDwgIlsxXVswXSwgIiAgICA8PCB2YXJOYW1lIDw8ICJbMF1bMV0rIiAgICAgPDwgdmFyTmFtZSA8
PCAiWzFdWzFdIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKysgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQyWDM6IG9wIDw8IHZhck5hbWUg
PDwgIlswXSArICIgICAgICAgPDwgdmFyTmFtZSA8PCAiWzFdIjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBF
X0ZMT0FUX01BVDJYNDogb3AgPDwgdmFyTmFtZSA8PCAiWzBdLnh5eiArICIgICA8PCB2YXJOYW1l
IDw8ICJbMV0ueXp3IjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisrICAgICAgICBjYXNlIFRZUEVfRkxPQVRfTUFUM1gyOiBvcCA8PCB2YXJOYW1l
IDw8ICJbMF1bMF0rIiAgICAgIDw8IHZhck5hbWUgPDwgIlswXVsxXSwgIiAgICA8PCB2YXJOYW1l
IDw8ICJbMV1bMF0rIiAgICAgPDwgdmFyTmFtZSA8PCAiWzFdWzFdLCAiICAgIDw8IHZhck5hbWUg
PDwgIlsyXVswXSsiIDw8IHZhck5hbWUgPDwgIlsyXVsxXSI7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFlQ
RV9GTE9BVF9NQVQzOiAgIG9wIDw8IHZhck5hbWUgPDwgIlswXSArICIgICAgICAgPDwgdmFyTmFt
ZSA8PCAiWzFdICsgIiAgICAgIDw8IHZhck5hbWUgPDwgIlsyXSI7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX01BVDNYNDogb3AgPDwgdmFyTmFt
ZSA8PCAiWzBdLnh5eiArICIgICA8PCB2YXJOYW1lIDw8ICJbMV0ueXp3ICsgIiAgPDwgdmFyTmFt
ZSA8PCAiWzJdLnp3eCI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIFRZ
UEVfRkxPQVRfTUFUNFgyOiBvcCA8PCB2YXJOYW1lIDw8ICJbMF1bMF0rIiAgICAgIDw8IHZhck5h
bWUgPDwgIlswXVsxXSsiICAgICA8PCB2YXJOYW1lIDw8ICJbM11bMF0sICIgICAgPDwgdmFyTmFt
ZSA8PCAiWzFdWzBdKyIgICAgIDw8IHZhck5hbWUgPDwgIlsxXVsxXSsiIDw8IHZhck5hbWUgPDwg
IlszXVsxXSwgIiA8PCB2YXJOYW1lIDw8ICJbMl1bMF0rIiA8PCB2YXJOYW1lIDw8ICJbMl1bMV0i
OyAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9NQVQ0WDM6IG9wIDw8IHZhck5h
bWUgPDwgIlswXSArICIgICAgICAgPDwgdmFyTmFtZSA8PCAiWzFdICsgIiAgICAgIDw8IHZhck5h
bWUgPDwgIlsyXSArICIgICAgICA8PCB2YXJOYW1lIDw8ICJbM10iOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBU
WVBFX0ZMT0FUX01BVDQ6ICAgb3AgPDwgdmFyTmFtZSA8PCAiWzBdLnh5eisiICAgICA8PCB2YXJO
YW1lIDw8ICJbMV0ueXp3KyIgICAgPDwgdmFyTmFtZSA8PCAiWzJdLnp3eCsiICAgIDw8IHZhck5h
bWUgPDwgIlszXS53eHkiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisrCisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIERFX0FTU0VS
VChERV9GQUxTRSk7CisrICAgIH0KKysKKysgICAgcmV0dXJuIG9wLnN0cigpOworIH0KKyAKKyB2
b2lkIFNoYWRlck1hdHJpeENhc2U6OnNldHVwVW5pZm9ybXMgKGludCBwcm9ncmFtSUQsIGNvbnN0
IHRjdTo6VmVjNCYgY29uc3RDb29yZHMpCisgeworLQljb25zdCBnbHc6OkZ1bmN0aW9ucyYgZ2wg
PSBtX3JlbmRlckN0eC5nZXRGdW5jdGlvbnMoKTsKKy0KKy0JREVfVU5SRUYoY29uc3RDb29yZHMp
OworLQorLQlmb3IgKGludCBpbk5keCA9IDA7IGluTmR4IDwgMjsgaW5OZHgrKykKKy0JeworLQkJ
Y29uc3QgU2hhZGVySW5wdXQmIGluID0gaW5OZHggPiAwID8gbV9pbjEgOiBtX2luMDsKKy0KKy0J
CWlmIChpbi5pbnB1dFR5cGUgPT0gSU5QVVRUWVBFX1VOSUZPUk0pCistCQl7CistCQkJaW50IGxv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsIChzdHJpbmcoInVfaW4iKSArIGRl
Ojp0b1N0cmluZyhpbk5keCkpLmNfc3RyKCkpOworLQorLQkJCWlmIChsb2MgPCAwKQorLQkJCQlj
b250aW51ZTsKKy0KKy0JCQlzd2l0Y2ggKGluLmRhdGFUeXBlKQorLQkJCXsKKy0JCQkJY2FzZSBU
WVBFX0ZMT0FUOgkJZ2wudW5pZm9ybTFmKGxvYywgc19jb25zdEluRmxvYXRbaW5OZHhdKTsJCQkJ
CQlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FUX1ZFQzI6CWdsLnVuaWZvcm0yZnYobG9jLCAx
LCBzX2NvbnN0SW5WZWMyW2luTmR4XS5nZXRQdHIoKSk7CQkJYnJlYWs7CistCQkJCWNhc2UgVFlQ
RV9GTE9BVF9WRUMzOglnbC51bmlmb3JtM2Z2KGxvYywgMSwgc19jb25zdEluVmVjM1tpbk5keF0u
Z2V0UHRyKCkpOwkJCWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfVkVDNDoJZ2wudW5pZm9y
bTRmdihsb2MsIDEsIHNfY29uc3RJblZlYzRbaW5OZHhdLmdldFB0cigpKTsJCQlicmVhazsKKy0J
CQkJLy8gXG5vdGUgR0xFUzMgc3VwcG9ydHMgdHJhbnNwb3NlIGluIG1hdHJpeCB1cGxvYWQuCist
CQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQyOglnbC51bmlmb3JtTWF0cml4MmZ2CShsb2MsIDEsIEdM
X1RSVUUsIHNfY29uc3RJbk1hdDJ4Mltpbk5keF0pOwlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZM
T0FUX01BVDJYMzoJZ2wudW5pZm9ybU1hdHJpeDJ4M2Z2KGxvYywgMSwgR0xfVFJVRSwgc19jb25z
dEluTWF0MngzW2luTmR4XSk7CWJyZWFrOworLQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUMlg0Ogln
bC51bmlmb3JtTWF0cml4Mng0ZnYobG9jLCAxLCBHTF9UUlVFLCBzX2NvbnN0SW5NYXQyeDRbaW5O
ZHhdKTsJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQzWDI6CWdsLnVuaWZvcm1NYXRy
aXgzeDJmdihsb2MsIDEsIEdMX1RSVUUsIHNfY29uc3RJbk1hdDN4Mltpbk5keF0pOwlicmVhazsK
Ky0JCQkJY2FzZSBUWVBFX0ZMT0FUX01BVDM6CWdsLnVuaWZvcm1NYXRyaXgzZnYJKGxvYywgMSwg
R0xfVFJVRSwgc19jb25zdEluTWF0M3gzW2luTmR4XSk7CWJyZWFrOworLQkJCQljYXNlIFRZUEVf
RkxPQVRfTUFUM1g0OglnbC51bmlmb3JtTWF0cml4M3g0ZnYobG9jLCAxLCBHTF9UUlVFLCBzX2Nv
bnN0SW5NYXQzeDRbaW5OZHhdKTsJYnJlYWs7CistCQkJCWNhc2UgVFlQRV9GTE9BVF9NQVQ0WDI6
CWdsLnVuaWZvcm1NYXRyaXg0eDJmdihsb2MsIDEsIEdMX1RSVUUsIHNfY29uc3RJbk1hdDR4Mltp
bk5keF0pOwlicmVhazsKKy0JCQkJY2FzZSBUWVBFX0ZMT0FUX01BVDRYMzoJZ2wudW5pZm9ybU1h
dHJpeDR4M2Z2KGxvYywgMSwgR0xfVFJVRSwgc19jb25zdEluTWF0NHgzW2luTmR4XSk7CWJyZWFr
OworLQkJCQljYXNlIFRZUEVfRkxPQVRfTUFUNDoJZ2wudW5pZm9ybU1hdHJpeDRmdgkobG9jLCAx
LCBHTF9UUlVFLCBzX2NvbnN0SW5NYXQ0eDRbaW5OZHhdKTsJYnJlYWs7CistCQkJCWRlZmF1bHQ6
CistCQkJCQlERV9BU1NFUlQoZmFsc2UpOworLQkJCX0KKy0JCX0KKy0JfQorKyAgICBjb25zdCBn
bHc6OkZ1bmN0aW9ucyYgZ2wgPSBtX3JlbmRlckN0eC5nZXRGdW5jdGlvbnMoKTsKKysKKysgICAg
REVfVU5SRUYoY29uc3RDb29yZHMpOworKworKyAgICBmb3IgKGludCBpbk5keCA9IDA7IGluTmR4
IDwgMjsgaW5OZHgrKykKKysgICAgeworKyAgICAgICAgY29uc3QgU2hhZGVySW5wdXQmIGluID0g
aW5OZHggPiAwID8gbV9pbjEgOiBtX2luMDsKKysKKysgICAgICAgIGlmIChpbi5pbnB1dFR5cGUg
PT0gSU5QVVRUWVBFX1VOSUZPUk0pCisrICAgICAgICB7CisrICAgICAgICAgICAgaW50IGxvYyA9
IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtSUQsIChzdHJpbmcoInVfaW4iKSArIGRlOjp0
b1N0cmluZyhpbk5keCkpLmNfc3RyKCkpOworKworKyAgICAgICAgICAgIGlmIChsb2MgPCAwKQor
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICBzd2l0Y2ggKGluLmRh
dGFUeXBlKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2FzZSBUWVBFX0ZMT0FU
OiAgICAgICAgZ2wudW5pZm9ybTFmKGxvYywgc19jb25zdEluRmxvYXRbaW5OZHhdKTsgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxPQVRf
VkVDMjogICBnbC51bmlmb3JtMmZ2KGxvYywgMSwgc19jb25zdEluVmVjMltpbk5keF0uZ2V0UHRy
KCkpOyAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9BVF9W
RUMzOiAgIGdsLnVuaWZvcm0zZnYobG9jLCAxLCBzX2NvbnN0SW5WZWMzW2luTmR4XS5nZXRQdHIo
KSk7ICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgY2FzZSBUWVBFX0ZMT0FUX1ZF
QzQ6ICAgZ2wudW5pZm9ybTRmdihsb2MsIDEsIHNfY29uc3RJblZlYzRbaW5OZHhdLmdldFB0cigp
KTsgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAvLyBcbm90ZSBHTEVTMyBzdXBw
b3J0cyB0cmFuc3Bvc2UgaW4gbWF0cml4IHVwbG9hZC4KKysgICAgICAgICAgICAgICAgY2FzZSBU
WVBFX0ZMT0FUX01BVDI6ICAgZ2wudW5pZm9ybU1hdHJpeDJmdiAobG9jLCAxLCBHTF9UUlVFLCBz
X2NvbnN0SW5NYXQyeDJbaW5OZHhdKTsgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZ
UEVfRkxPQVRfTUFUMlgzOiBnbC51bmlmb3JtTWF0cml4MngzZnYobG9jLCAxLCBHTF9UUlVFLCBz
X2NvbnN0SW5NYXQyeDNbaW5OZHhdKTsgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQ
RV9GTE9BVF9NQVQyWDQ6IGdsLnVuaWZvcm1NYXRyaXgyeDRmdihsb2MsIDEsIEdMX1RSVUUsIHNf
Y29uc3RJbk1hdDJ4NFtpbk5keF0pOyBicmVhazsKKysgICAgICAgICAgICAgICAgY2FzZSBUWVBF
X0ZMT0FUX01BVDNYMjogZ2wudW5pZm9ybU1hdHJpeDN4MmZ2KGxvYywgMSwgR0xfVFJVRSwgc19j
b25zdEluTWF0M3gyW2luTmR4XSk7IGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVf
RkxPQVRfTUFUMzogICBnbC51bmlmb3JtTWF0cml4M2Z2IChsb2MsIDEsIEdMX1RSVUUsIHNfY29u
c3RJbk1hdDN4M1tpbk5keF0pOyAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9G
TE9BVF9NQVQzWDQ6IGdsLnVuaWZvcm1NYXRyaXgzeDRmdihsb2MsIDEsIEdMX1RSVUUsIHNfY29u
c3RJbk1hdDN4NFtpbk5keF0pOyBicmVhazsKKysgICAgICAgICAgICAgICAgY2FzZSBUWVBFX0ZM
T0FUX01BVDRYMjogZ2wudW5pZm9ybU1hdHJpeDR4MmZ2KGxvYywgMSwgR0xfVFJVRSwgc19jb25z
dEluTWF0NHgyW2luTmR4XSk7IGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfRkxP
QVRfTUFUNFgzOiBnbC51bmlmb3JtTWF0cml4NHgzZnYobG9jLCAxLCBHTF9UUlVFLCBzX2NvbnN0
SW5NYXQ0eDNbaW5OZHhdKTsgYnJlYWs7CisrICAgICAgICAgICAgICAgIGNhc2UgVFlQRV9GTE9B
VF9NQVQ0OiAgIGdsLnVuaWZvcm1NYXRyaXg0ZnYgKGxvYywgMSwgR0xfVFJVRSwgc19jb25zdElu
TWF0NHg0W2luTmR4XSk7ICBicmVhazsKKysgICAgICAgICAgICAgICAgZGVmYXVsdDoKKysgICAg
ICAgICAgICAgICAgICAgIERFX0FTU0VSVChmYWxzZSk7CisrICAgICAgICAgICAgfQorKyAgICAg
ICAgfQorKyAgICB9CisgfQorIAorIFNoYWRlck1hdHJpeFRlc3RzOjpTaGFkZXJNYXRyaXhUZXN0
cyAoQ29udGV4dCYgY29udGV4dCkKKy0JOiBUZXN0Q2FzZUdyb3VwKGNvbnRleHQsICJtYXRyaXgi
LCAiTWF0cml4IFRlc3RzIikKKysgICAgOiBUZXN0Q2FzZUdyb3VwKGNvbnRleHQsICJtYXRyaXgi
LCAiTWF0cml4IFRlc3RzIikKKyB7CisgfQorIAorQEAgLTE3OTEsMTgxICsxNzkxLDE4MSBAQCBT
aGFkZXJNYXRyaXhUZXN0czo6flNoYWRlck1hdHJpeFRlc3RzICh2b2lkKQorIAorIHZvaWQgU2hh
ZGVyTWF0cml4VGVzdHM6OmluaXQgKHZvaWQpCisgeworLQlzdGF0aWMgY29uc3Qgc3RydWN0Cist
CXsKKy0JCWNvbnN0IGNoYXIqCQluYW1lOworLQkJY29uc3QgY2hhcioJCWRlc2M7CistCQlNYXRy
aXhPcAkJb3A7CistCQlib29sCQkJZXh0ZW5kZWRJbnB1dFR5cGVDYXNlczsgLy8gITwgdGVzdCB3
aXRoIGNvbnN0IGFuZCB1bmlmb3JtIHR5cGVzIHRvbworLQkJYm9vbAkJCWNyZWF0ZUlucHV0VHlw
ZUdyb3VwOwkvLyAhPCBjcmVhdGUgZ3JvdXAgZm9yIGlucHV0IHR5cGVzCistCX0gb3BzW10gPQor
LQl7CistCQl7ICJhZGQiLAkJCSJNYXRyaXggYWRkaXRpb24gdGVzdHMiLAkJCQkJCU9QX0FERCwJ
CQkJdHJ1ZSwJdHJ1ZQl9LAorLQkJeyAic3ViIiwJCQkiTWF0cml4IHN1YnRyYWN0aW9uIHRlc3Rz
IiwJCQkJCQlPUF9TVUIsCQkJCXRydWUsCXRydWUJfSwKKy0JCXsgIm11bCIsCQkJIk1hdHJpeCBt
dWx0aXBsaWNhdGlvbiB0ZXN0cyIsCQkJCQlPUF9NVUwsCQkJCXRydWUsCXRydWUJfSwKKy0JCXsg
ImRpdiIsCQkJIk1hdHJpeCBkaXZpc2lvbiB0ZXN0cyIsCQkJCQkJT1BfRElWLAkJCQl0cnVlLAl0
cnVlCX0sCistCQl7ICJtYXRyaXhjb21wbXVsdCIsCSJNYXRyaXggY29tcG9uZW50LXdpc2UgbXVs
dGlwbGljYXRpb24gdGVzdHMiLAlPUF9DT01QX01VTCwJCWZhbHNlLAl0cnVlCX0sCistCQl7ICJv
dXRlcnByb2R1Y3QiLAkiTWF0cml4IG91dGVyUHJvZHVjdCgpIHRlc3RzIiwJCQkJCU9QX09VVEVS
X1BST0RVQ1QsCWZhbHNlLAl0cnVlCX0sCistCQl7ICJ0cmFuc3Bvc2UiLAkJIk1hdHJpeCB0cmFu
c3Bvc2UoKSB0ZXN0cyIsCQkJCQkJT1BfVFJBTlNQT1NFLAkJZmFsc2UsCXRydWUJfSwKKy0JCXsg
ImRldGVybWluYW50IiwJIk1hdHJpeCBkZXRlcm1pbmFudCgpIHRlc3RzIiwJCQkJCU9QX0RFVEVS
TUlOQU5ULAkJZmFsc2UsCXRydWUJfSwKKy0JCXsgImludmVyc2UiLAkJIk1hdHJpeCBpbnZlcnNl
KCkgdGVzdHMiLAkJCQkJCU9QX0lOVkVSU0UsCQkJZmFsc2UsCXRydWUJfSwKKy0JCXsgInVuYXJ5
X2FkZGl0aW9uIiwJIk1hdHJpeCB1bmFyeSBhZGRpdGlvbiB0ZXN0cyIsCQkJCQlPUF9VTkFSWV9Q
TFVTLAkJZmFsc2UsCWZhbHNlCX0sCistCQl7ICJuZWdhdGlvbiIsCQkiTWF0cml4IG5lZ2F0aW9u
IHRlc3RzIiwJCQkJCQlPUF9ORUdBVElPTiwJCWZhbHNlLAlmYWxzZQl9LAorLQkJeyAicHJlX2lu
Y3JlbWVudCIsCSJNYXRyaXggcHJlZml4IGluY3JlbWVudCB0ZXN0cyIsCQkJCU9QX1BSRV9JTkNS
RU1FTlQsCWZhbHNlLAlmYWxzZQl9LAorLQkJeyAicHJlX2RlY3JlbWVudCIsCSJNYXRyaXggcHJl
Zml4IGRlY3JlbWVudCB0ZXN0cyIsCQkJCU9QX1BSRV9ERUNSRU1FTlQsCWZhbHNlLAlmYWxzZQl9
LAorLQkJeyAicG9zdF9pbmNyZW1lbnQiLAkiTWF0cml4IHBvc3RmaXggaW5jcmVtZW50IHRlc3Rz
IiwJCQkJT1BfUE9TVF9JTkNSRU1FTlQsCWZhbHNlLAlmYWxzZQl9LAorLQkJeyAicG9zdF9kZWNy
ZW1lbnQiLAkiTWF0cml4IHBvc3RmaXggZGVjcmVtZW50IHRlc3RzIiwJCQkJT1BfUE9TVF9ERUNS
RU1FTlQsCWZhbHNlLAlmYWxzZQl9LAorLQkJeyAiYWRkX2Fzc2lnbiIsCQkiTWF0cml4IGFkZCBp
bnRvIHRlc3RzIiwJCQkJCQlPUF9BRERfSU5UTywJCWZhbHNlLAlmYWxzZQl9LAorLQkJeyAic3Vi
X2Fzc2lnbiIsCQkiTWF0cml4IHN1YnRyYWN0IGZyb20gdGVzdHMiLAkJCQkJT1BfU1VCVFJBQ1Rf
RlJPTSwJZmFsc2UsCWZhbHNlCX0sCistCQl7ICJtdWxfYXNzaWduIiwJCSJNYXRyaXggbXVsdGlw
bHkgaW50byB0ZXN0cyIsCQkJCQlPUF9NVUxUSVBMWV9JTlRPLAlmYWxzZSwJZmFsc2UJfSwKKy0J
CXsgImRpdl9hc3NpZ24iLAkJIk1hdHJpeCBkaXZpZGUgaW50byB0ZXN0cyIsCQkJCQkJT1BfRElW
SURFX0lOVE8sCQlmYWxzZSwJZmFsc2UJfSwKKy0JfTsKKy0KKy0Jc3RydWN0IElucHV0VHlwZVNw
ZWMKKy0JeworLQkJY29uc3QgY2hhcioJCW5hbWU7CistCQljb25zdCBjaGFyKgkJZGVzYzsKKy0J
CUlucHV0VHlwZQkJdHlwZTsKKy0JfTsKKy0Jc3RhdGljIGNvbnN0IElucHV0VHlwZVNwZWMgZXh0
ZW5kZWRJbnB1dFR5cGVzW10gPQorLQl7CistCQl7ICJjb25zdCIsCQkiQ29uc3RhbnQgbWF0cml4
IGlucHV0IiwJSU5QVVRUWVBFX0NPTlNUCQl9LAorLQkJeyAidW5pZm9ybSIsCSJVbmlmb3JtIG1h
dHJpeCBpbnB1dCIsCQlJTlBVVFRZUEVfVU5JRk9STQl9LAorLQkJeyAiZHluYW1pYyIsCSJEeW5h
bWljIG1hdHJpeCBpbnB1dCIsCQlJTlBVVFRZUEVfRFlOQU1JQwl9CistCX07CistCXN0YXRpYyBj
b25zdCBJbnB1dFR5cGVTcGVjIHJlZHVjZWRJbnB1dFR5cGVzW10gPQorLQl7CistCQl7ICJkeW5h
bWljIiwJIkR5bmFtaWMgbWF0cml4IGlucHV0IiwJCUlOUFVUVFlQRV9EWU5BTUlDCX0KKy0JfTsK
Ky0KKy0Jc3RhdGljIGNvbnN0IERhdGFUeXBlIG1hdHJpeFR5cGVzW10gPQorLQl7CistCQlUWVBF
X0ZMT0FUX01BVDIsCistCQlUWVBFX0ZMT0FUX01BVDJYMywKKy0JCVRZUEVfRkxPQVRfTUFUMlg0
LAorLQkJVFlQRV9GTE9BVF9NQVQzWDIsCistCQlUWVBFX0ZMT0FUX01BVDMsCistCQlUWVBFX0ZM
T0FUX01BVDNYNCwKKy0JCVRZUEVfRkxPQVRfTUFUNFgyLAorLQkJVFlQRV9GTE9BVF9NQVQ0WDMs
CistCQlUWVBFX0ZMT0FUX01BVDQKKy0JfTsKKy0KKy0Jc3RhdGljIGNvbnN0IFByZWNpc2lvbiBw
cmVjaXNpb25zW10gPQorLQl7CistCQlQUkVDSVNJT05fTE9XUCwKKy0JCVBSRUNJU0lPTl9NRURJ
VU1QLAorLQkJUFJFQ0lTSU9OX0hJR0hQCistCX07CistCistCWZvciAoaW50IG9wTmR4ID0gMDsg
b3BOZHggPCBERV9MRU5HVEhfT0ZfQVJSQVkob3BzKTsgb3BOZHgrKykKKy0JeworLQkJY29uc3Qg
SW5wdXRUeXBlU3BlYyoJaW5UeXBlTGlzdAkJPSAob3BzW29wTmR4XS5leHRlbmRlZElucHV0VHlw
ZUNhc2VzKSA/IChleHRlbmRlZElucHV0VHlwZXMpIDogKHJlZHVjZWRJbnB1dFR5cGVzKTsKKy0J
CWNvbnN0IGludAkJCQlpblR5cGVMaXN0U2l6ZQk9IChvcHNbb3BOZHhdLmV4dGVuZGVkSW5wdXRU
eXBlQ2FzZXMpID8gKERFX0xFTkdUSF9PRl9BUlJBWShleHRlbmRlZElucHV0VHlwZXMpKSA6IChE
RV9MRU5HVEhfT0ZfQVJSQVkocmVkdWNlZElucHV0VHlwZXMpKTsKKy0JCWNvbnN0IE1hdHJpeE9w
CQkJb3AJCQkJPSBvcHNbb3BOZHhdLm9wOworLQkJdGN1OjpUZXN0Q2FzZUdyb3VwKgkJb3BHcm91
cAkJCT0gbmV3IHRjdTo6VGVzdENhc2VHcm91cChtX3Rlc3RDdHgsIG9wc1tvcE5keF0ubmFtZSwg
b3BzW29wTmR4XS5kZXNjKTsKKy0KKy0JCWFkZENoaWxkKG9wR3JvdXApOworLQorLQkJZm9yIChp
bnQgaW5UeXBlTmR4ID0gMDsgaW5UeXBlTmR4IDwgaW5UeXBlTGlzdFNpemU7IGluVHlwZU5keCsr
KQorLQkJeworLQkJCWNvbnN0IElucHV0VHlwZQkJaW5wdXRUeXBlCT0gaW5UeXBlTGlzdFtpblR5
cGVOZHhdLnR5cGU7CistCQkJdGN1OjpUZXN0Q2FzZUdyb3VwKiBpbkdyb3VwOworLQorLQkJCWlm
IChvcHNbb3BOZHhdLmNyZWF0ZUlucHV0VHlwZUdyb3VwKQorLQkJCXsKKy0JCQkJaW5Hcm91cCA9
IG5ldyB0Y3U6OlRlc3RDYXNlR3JvdXAobV90ZXN0Q3R4LCBpblR5cGVMaXN0W2luVHlwZU5keF0u
bmFtZSwgaW5UeXBlTGlzdFtpblR5cGVOZHhdLmRlc2MpOworLQkJCQlvcEdyb3VwLT5hZGRDaGls
ZChpbkdyb3VwKTsKKy0JCQl9CistCQkJZWxzZQorLQkJCQlpbkdyb3VwID0gb3BHcm91cDsKKy0K
Ky0JCQlmb3IgKGludCBtYXRUeXBlTmR4ID0gMDsgbWF0VHlwZU5keCA8IERFX0xFTkdUSF9PRl9B
UlJBWShtYXRyaXhUeXBlcyk7IG1hdFR5cGVOZHgrKykKKy0JCQl7CistCQkJCURhdGFUeXBlCW1h
dFR5cGUJCT0gbWF0cml4VHlwZXNbbWF0VHlwZU5keF07CistCQkJCWludAkJCW51bUNvbHMJCT0g
Z2V0RGF0YVR5cGVNYXRyaXhOdW1Db2x1bW5zKG1hdFR5cGUpOworLQkJCQlpbnQJCQludW1Sb3dz
CQk9IGdldERhdGFUeXBlTWF0cml4TnVtUm93cyhtYXRUeXBlKTsKKy0JCQkJY29uc3QgY2hhcioJ
bWF0VHlwZU5hbWUJPSBnZXREYXRhVHlwZU5hbWUobWF0VHlwZSk7CistCistCQkJCWZvciAoaW50
IHByZWNOZHggPSAwOyBwcmVjTmR4IDwgREVfTEVOR1RIX09GX0FSUkFZKHByZWNpc2lvbnMpOyBw
cmVjTmR4KyspCistCQkJCXsKKy0JCQkJCVByZWNpc2lvbglwcmVjaXNpb24JPSBwcmVjaXNpb25z
W3ByZWNOZHhdOworLQkJCQkJY29uc3QgY2hhcioJcHJlY05hbWUJPSBnZXRQcmVjaXNpb25OYW1l
KHByZWNpc2lvbik7CistCQkJCQlzdHJpbmcJCWJhc2VOYW1lCT0gc3RyaW5nKHByZWNOYW1lKSAr
ICJfIiArIG1hdFR5cGVOYW1lICsgIl8iOworLQkJCQkJU2hhZGVySW5wdXQJbWF0SW4JCShpbnB1
dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CistCistCQkJCQlpZiAoaXNPcGVyYXRpb25NYXRy
aXhTY2FsYXIob3ApKQorLQkJCQkJeworLQkJCQkJCS8vIE1hdHJpeC1zY2FsYXIgXG5vdGUgRm9y
IGRpdiBjYXNlcyB3ZSB1c2UgdW5pZm9ybSBpbnB1dC4KKy0JCQkJCQlTaGFkZXJJbnB1dCBzY2Fs
YXJJbihvcCA9PSBPUF9ESVYgPyBJTlBVVFRZUEVfVU5JRk9STSA6IElOUFVUVFlQRV9EWU5BTUlD
LCBUWVBFX0ZMT0FULCBwcmVjaXNpb24pOworLQkJCQkJCWluR3JvdXAtPmFkZENoaWxkKG5ldyBT
aGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJhc2VOYW1lICsgImZsb2F0X3ZlcnRleCIpLmNf
c3RyKCksCQkiTWF0cml4LXNjYWxhciBjYXNlIiwgbWF0SW4sIHNjYWxhckluLCBvcCwgdHJ1ZSkp
OworLQkJCQkJCWluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4
dCwgKGJhc2VOYW1lICsgImZsb2F0X2ZyYWdtZW50IikuY19zdHIoKSwJIk1hdHJpeC1zY2FsYXIg
Y2FzZSIsIG1hdEluLCBzY2FsYXJJbiwgb3AsIGZhbHNlKSk7CistCQkJCQl9CistCistCQkJCQlp
ZiAoaXNPcGVyYXRpb25NYXRyaXhWZWN0b3Iob3ApKQorLQkJCQkJeworLQkJCQkJCS8vIE1hdHJp
eC12ZWN0b3IuCistCQkJCQkJRGF0YVR5cGUJY29sVmVjVHlwZQk9IGdldERhdGFUeXBlRmxvYXRW
ZWMobnVtQ29scyk7CistCQkJCQkJU2hhZGVySW5wdXQgY29sVmVjSW4JKG9wID09IE9QX0RJViA/
IElOUFVUVFlQRV9VTklGT1JNIDogSU5QVVRUWVBFX0RZTkFNSUMsIGNvbFZlY1R5cGUsIHByZWNp
c2lvbik7CistCistCQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2Uo
bV9jb250ZXh0LCAoYmFzZU5hbWUgKyBnZXREYXRhVHlwZU5hbWUoY29sVmVjVHlwZSkgKyAiX3Zl
cnRleCIpLmNfc3RyKCksCQkiTWF0cml4LXZlY3RvciBjYXNlIiwgbWF0SW4sIGNvbFZlY0luLCBv
cCwgdHJ1ZSkpOworLQkJCQkJCWluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNl
KG1fY29udGV4dCwgKGJhc2VOYW1lICsgZ2V0RGF0YVR5cGVOYW1lKGNvbFZlY1R5cGUpICsgIl9m
cmFnbWVudCIpLmNfc3RyKCksCSJNYXRyaXgtdmVjdG9yIGNhc2UiLCBtYXRJbiwgY29sVmVjSW4s
IG9wLCBmYWxzZSkpOworLQorLQkJCQkJCS8vIFZlY3Rvci1tYXRyaXguCistCQkJCQkJRGF0YVR5
cGUJcm93VmVjVHlwZQk9IGdldERhdGFUeXBlRmxvYXRWZWMobnVtUm93cyk7CistCQkJCQkJU2hh
ZGVySW5wdXQJcm93VmVjSW4JKG9wID09IE9QX0RJViA/IElOUFVUVFlQRV9VTklGT1JNIDogSU5Q
VVRUWVBFX0RZTkFNSUMsIHJvd1ZlY1R5cGUsIHByZWNpc2lvbik7CistCQkJCQkJc3RyaW5nCQl2
ZWNNYXROYW1lCT0gc3RyaW5nKHByZWNOYW1lKSArICJfIiArIGdldERhdGFUeXBlTmFtZShyb3dW
ZWNUeXBlKSArICJfIiArIG1hdFR5cGVOYW1lOworLQorLQkJCQkJCWluR3JvdXAtPmFkZENoaWxk
KG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKHZlY01hdE5hbWUgKyAiX3ZlcnRleCIp
LmNfc3RyKCksCQkiVmVjdG9yLW1hdHJpeCBjYXNlIiwgcm93VmVjSW4sIG1hdEluLCBvcCwgdHJ1
ZSkpOworLQkJCQkJCWluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29u
dGV4dCwgKHZlY01hdE5hbWUgKyAiX2ZyYWdtZW50IikuY19zdHIoKSwJIlZlY3Rvci1tYXRyaXgg
Y2FzZSIsIHJvd1ZlY0luLCBtYXRJbiwgb3AsIGZhbHNlKSk7CistCQkJCQl9CistCistCQkJCQlp
ZiAoaXNPcGVyYXRpb25Bcml0aG1ldGljTWF0cml4TWF0cml4KG9wKSkKKy0JCQkJCXsKKy0JCQkJ
CQkvLyBBcml0aG1ldGljIG1hdHJpeC1tYXRyaXggbXVsdGlwbGljYXRpb24uCistCQkJCQkJZm9y
IChpbnQgb3RoZXJDb2xzID0gMjsgb3RoZXJDb2xzIDw9IDQ7IG90aGVyQ29scysrKQorLQkJCQkJ
CXsKKy0JCQkJCQkJU2hhZGVySW5wdXQgb3RoZXJNYXRJbihpbnB1dFR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMgPyBJTlBVVFRZUEVfVU5JRk9STSA6IGlucHV0VHlwZSwgZ2V0RGF0YVR5cGVNYXRy
aXgob3RoZXJDb2xzLCBudW1Db2xzIC8qIHJvd3MgKi8pLCBwcmVjaXNpb24pOworLQkJCQkJCQlp
bkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFt
ZSArIGdldERhdGFUeXBlTmFtZShvdGhlck1hdEluLmRhdGFUeXBlKSArICJfdmVydGV4IikuY19z
dHIoKSwJIk1hdHJpeC1tYXRyaXggY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgdHJ1ZSkp
OworLQkJCQkJCQlpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRl
eHQsIChiYXNlTmFtZSArIGdldERhdGFUeXBlTmFtZShvdGhlck1hdEluLmRhdGFUeXBlKSArICJf
ZnJhZ21lbnQiKS5jX3N0cigpLAkiTWF0cml4LW1hdHJpeCBjYXNlIiwgbWF0SW4sIG90aGVyTWF0
SW4sIG9wLCBmYWxzZSkpOworLQkJCQkJCX0KKy0JCQkJCX0KKy0JCQkJCWVsc2UgaWYgKGlzT3Bl
cmF0aW9uQ29tcG9uZW50d2lzZU1hdHJpeE1hdHJpeChvcCkpCistCQkJCQl7CistCQkJCQkJLy8g
Q29tcG9uZW50LXdpc2UuCistCQkJCQkJU2hhZGVySW5wdXQgb3RoZXJNYXRJbihpbnB1dFR5cGUg
PT0gSU5QVVRUWVBFX0RZTkFNSUMgPyBJTlBVVFRZUEVfVU5JRk9STSA6IGlucHV0VHlwZSwgbWF0
VHlwZSwgcHJlY2lzaW9uKTsKKy0JCQkJCQlpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0
cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArIG1hdFR5cGVOYW1lICsgIl92ZXJ0ZXgiKS5j
X3N0cigpLAkJIk1hdHJpeC1tYXRyaXggY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgdHJ1
ZSkpOworLQkJCQkJCWluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29u
dGV4dCwgKGJhc2VOYW1lICsgbWF0VHlwZU5hbWUgKyAiX2ZyYWdtZW50IikuY19zdHIoKSwJIk1h
dHJpeC1tYXRyaXggY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgZmFsc2UpKTsKKy0JCQkJ
CX0KKy0KKy0JCQkJCWlmIChpc09wZXJhdGlvblZlY3RvclZlY3RvcihvcCkpCistCQkJCQl7Cist
CQkJCQkJU2hhZGVySW5wdXQgdmVjMUluKGlucHV0VHlwZSwJCQkJCQkJCQkJCQkJCQkJZ2V0RGF0
YVR5cGVGbG9hdFZlYyhudW1Sb3dzKSwgcHJlY2lzaW9uKTsKKy0JCQkJCQlTaGFkZXJJbnB1dCB2
ZWMySW4oKGlucHV0VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQykgPyAoSU5QVVRUWVBFX1VOSUZP
Uk0pIDogKGlucHV0VHlwZSksCWdldERhdGFUeXBlRmxvYXRWZWMobnVtQ29scyksIHByZWNpc2lv
bik7CistCistCQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9j
b250ZXh0LCAoYmFzZU5hbWUgKyAiZmxvYXRfdmVydGV4IikuY19zdHIoKSwJCSJWZWN0b3ItdmVj
dG9yIGNhc2UiLCB2ZWMxSW4sIHZlYzJJbiwgb3AsIHRydWUpKTsKKy0JCQkJCQlpbkdyb3VwLT5h
ZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArICJmbG9h
dF9mcmFnbWVudCIpLmNfc3RyKCksCSJWZWN0b3ItdmVjdG9yIGNhc2UiLCB2ZWMxSW4sIHZlYzJJ
biwgb3AsIGZhbHNlKSk7CistCQkJCQl9CistCistCQkJCQlpZiAoKGlzT3BlcmF0aW9uVW5hcnlB
bnlNYXRyaXgob3ApKSB8fAorLQkJCQkJCShpc09wZXJhdGlvblVuYXJ5U3ltbWV0cmljTWF0cml4
KG9wKSAmJiBudW1Db2xzID09IG51bVJvd3MpKQorLQkJCQkJeworLQkJCQkJCVNoYWRlcklucHV0
IHZvaWRJbnB1dChJTlBVVFRZUEVfTEFTVCwgVFlQRV9MQVNULCBQUkVDSVNJT05fTEFTVCk7Cist
CQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAo
YmFzZU5hbWUgKyAiZmxvYXRfdmVydGV4IikuY19zdHIoKSwJCSJNYXRyaXggY2FzZSIsIG1hdElu
LCB2b2lkSW5wdXQsIG9wLCB0cnVlKSk7CistCQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNo
YWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZmxvYXRfZnJhZ21lbnQiKS5j
X3N0cigpLAkiTWF0cml4IGNhc2UiLCBtYXRJbiwgdm9pZElucHV0LCBvcCwgZmFsc2UpKTsKKy0J
CQkJCX0KKy0KKy0JCQkJCWlmICgoaXNPcGVyYXRpb25Bc3NpZ25tZW50QW55TWF0cml4KG9wKSkg
fHwKKy0JCQkJCQkoaXNPcGVyYXRpb25Bc3NpZ25tZW50U3ltbWV0cmljTWF0cml4KG9wKSAmJiBu
dW1Db2xzID09IG51bVJvd3MpKQorLQkJCQkJeworLQkJCQkJCVNoYWRlcklucHV0IG90aGVyTWF0
SW4oaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBp
bnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CistCQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQo
bmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZmxvYXRfdmVydGV4
IikuY19zdHIoKSwJCSJNYXRyaXggYXNzaWdubWVudCBjYXNlIiwgbWF0SW4sIG90aGVyTWF0SW4s
IG9wLCB0cnVlKSk7CistCQkJCQkJaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENh
c2UobV9jb250ZXh0LCAoYmFzZU5hbWUgKyAiZmxvYXRfZnJhZ21lbnQiKS5jX3N0cigpLAkiTWF0
cml4IGFzc2lnbm1lbnQgY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgZmFsc2UpKTsKKy0J
CQkJCX0KKy0JCQkJfQorLQkJCX0KKy0JCX0KKy0JfQorKyAgICBzdGF0aWMgY29uc3Qgc3RydWN0
CisrICAgIHsKKysgICAgICAgIGNvbnN0IGNoYXIqICAgICBuYW1lOworKyAgICAgICAgY29uc3Qg
Y2hhciogICAgIGRlc2M7CisrICAgICAgICBNYXRyaXhPcCAgICAgICAgb3A7CisrICAgICAgICBi
b29sICAgICAgICAgICAgZXh0ZW5kZWRJbnB1dFR5cGVDYXNlczsgLy8gITwgdGVzdCB3aXRoIGNv
bnN0IGFuZCB1bmlmb3JtIHR5cGVzIHRvbworKyAgICAgICAgYm9vbCAgICAgICAgICAgIGNyZWF0
ZUlucHV0VHlwZUdyb3VwOyAgIC8vICE8IGNyZWF0ZSBncm91cCBmb3IgaW5wdXQgdHlwZXMKKysg
ICAgfSBvcHNbXSA9CisrICAgIHsKKysgICAgICAgIHsgImFkZCIsICAgICAgICAgICAgIk1hdHJp
eCBhZGRpdGlvbiB0ZXN0cyIsICAgICAgICAgICAgICAgICAgICAgICAgT1BfQURELCAgICAgICAg
ICAgICB0cnVlLCAgIHRydWUgICAgfSwKKysgICAgICAgIHsgInN1YiIsICAgICAgICAgICAgIk1h
dHJpeCBzdWJ0cmFjdGlvbiB0ZXN0cyIsICAgICAgICAgICAgICAgICAgICAgT1BfU1VCLCAgICAg
ICAgICAgICB0cnVlLCAgIHRydWUgICAgfSwKKysgICAgICAgIHsgIm11bCIsICAgICAgICAgICAg
Ik1hdHJpeCBtdWx0aXBsaWNhdGlvbiB0ZXN0cyIsICAgICAgICAgICAgICAgICAgT1BfTVVMLCAg
ICAgICAgICAgICB0cnVlLCAgIHRydWUgICAgfSwKKysgICAgICAgIHsgImRpdiIsICAgICAgICAg
ICAgIk1hdHJpeCBkaXZpc2lvbiB0ZXN0cyIsICAgICAgICAgICAgICAgICAgICAgICAgT1BfRElW
LCAgICAgICAgICAgICB0cnVlLCAgIHRydWUgICAgfSwKKysgICAgICAgIHsgIm1hdHJpeGNvbXBt
dWx0IiwgIk1hdHJpeCBjb21wb25lbnQtd2lzZSBtdWx0aXBsaWNhdGlvbiB0ZXN0cyIsICAgT1Bf
Q09NUF9NVUwsICAgICAgICBmYWxzZSwgIHRydWUgICAgfSwKKysgICAgICAgIHsgIm91dGVycHJv
ZHVjdCIsICAgIk1hdHJpeCBvdXRlclByb2R1Y3QoKSB0ZXN0cyIsICAgICAgICAgICAgICAgICAg
T1BfT1VURVJfUFJPRFVDVCwgICBmYWxzZSwgIHRydWUgICAgfSwKKysgICAgICAgIHsgInRyYW5z
cG9zZSIsICAgICAgIk1hdHJpeCB0cmFuc3Bvc2UoKSB0ZXN0cyIsICAgICAgICAgICAgICAgICAg
ICAgT1BfVFJBTlNQT1NFLCAgICAgICBmYWxzZSwgIHRydWUgICAgfSwKKysgICAgICAgIHsgImRl
dGVybWluYW50IiwgICAgIk1hdHJpeCBkZXRlcm1pbmFudCgpIHRlc3RzIiwgICAgICAgICAgICAg
ICAgICAgT1BfREVURVJNSU5BTlQsICAgICBmYWxzZSwgIHRydWUgICAgfSwKKysgICAgICAgIHsg
ImludmVyc2UiLCAgICAgICAgIk1hdHJpeCBpbnZlcnNlKCkgdGVzdHMiLCAgICAgICAgICAgICAg
ICAgICAgICAgT1BfSU5WRVJTRSwgICAgICAgICBmYWxzZSwgIHRydWUgICAgfSwKKysgICAgICAg
IHsgInVuYXJ5X2FkZGl0aW9uIiwgIk1hdHJpeCB1bmFyeSBhZGRpdGlvbiB0ZXN0cyIsICAgICAg
ICAgICAgICAgICAgT1BfVU5BUllfUExVUywgICAgICBmYWxzZSwgIGZhbHNlICAgfSwKKysgICAg
ICAgIHsgIm5lZ2F0aW9uIiwgICAgICAgIk1hdHJpeCBuZWdhdGlvbiB0ZXN0cyIsICAgICAgICAg
ICAgICAgICAgICAgICAgT1BfTkVHQVRJT04sICAgICAgICBmYWxzZSwgIGZhbHNlICAgfSwKKysg
ICAgICAgIHsgInByZV9pbmNyZW1lbnQiLCAgIk1hdHJpeCBwcmVmaXggaW5jcmVtZW50IHRlc3Rz
IiwgICAgICAgICAgICAgICAgT1BfUFJFX0lOQ1JFTUVOVCwgICBmYWxzZSwgIGZhbHNlICAgfSwK
KysgICAgICAgIHsgInByZV9kZWNyZW1lbnQiLCAgIk1hdHJpeCBwcmVmaXggZGVjcmVtZW50IHRl
c3RzIiwgICAgICAgICAgICAgICAgT1BfUFJFX0RFQ1JFTUVOVCwgICBmYWxzZSwgIGZhbHNlICAg
fSwKKysgICAgICAgIHsgInBvc3RfaW5jcmVtZW50IiwgIk1hdHJpeCBwb3N0Zml4IGluY3JlbWVu
dCB0ZXN0cyIsICAgICAgICAgICAgICAgT1BfUE9TVF9JTkNSRU1FTlQsICBmYWxzZSwgIGZhbHNl
ICAgfSwKKysgICAgICAgIHsgInBvc3RfZGVjcmVtZW50IiwgIk1hdHJpeCBwb3N0Zml4IGRlY3Jl
bWVudCB0ZXN0cyIsICAgICAgICAgICAgICAgT1BfUE9TVF9ERUNSRU1FTlQsICBmYWxzZSwgIGZh
bHNlICAgfSwKKysgICAgICAgIHsgImFkZF9hc3NpZ24iLCAgICAgIk1hdHJpeCBhZGQgaW50byB0
ZXN0cyIsICAgICAgICAgICAgICAgICAgICAgICAgT1BfQUREX0lOVE8sICAgICAgICBmYWxzZSwg
IGZhbHNlICAgfSwKKysgICAgICAgIHsgInN1Yl9hc3NpZ24iLCAgICAgIk1hdHJpeCBzdWJ0cmFj
dCBmcm9tIHRlc3RzIiwgICAgICAgICAgICAgICAgICAgT1BfU1VCVFJBQ1RfRlJPTSwgICBmYWxz
ZSwgIGZhbHNlICAgfSwKKysgICAgICAgIHsgIm11bF9hc3NpZ24iLCAgICAgIk1hdHJpeCBtdWx0
aXBseSBpbnRvIHRlc3RzIiwgICAgICAgICAgICAgICAgICAgT1BfTVVMVElQTFlfSU5UTywgICBm
YWxzZSwgIGZhbHNlICAgfSwKKysgICAgICAgIHsgImRpdl9hc3NpZ24iLCAgICAgIk1hdHJpeCBk
aXZpZGUgaW50byB0ZXN0cyIsICAgICAgICAgICAgICAgICAgICAgT1BfRElWSURFX0lOVE8sICAg
ICBmYWxzZSwgIGZhbHNlICAgfSwKKysgICAgfTsKKysKKysgICAgc3RydWN0IElucHV0VHlwZVNw
ZWMKKysgICAgeworKyAgICAgICAgY29uc3QgY2hhciogICAgIG5hbWU7CisrICAgICAgICBjb25z
dCBjaGFyKiAgICAgZGVzYzsKKysgICAgICAgIElucHV0VHlwZSAgICAgICB0eXBlOworKyAgICB9
OworKyAgICBzdGF0aWMgY29uc3QgSW5wdXRUeXBlU3BlYyBleHRlbmRlZElucHV0VHlwZXNbXSA9
CisrICAgIHsKKysgICAgICAgIHsgImNvbnN0IiwgICAgICAiQ29uc3RhbnQgbWF0cml4IGlucHV0
IiwgICAgSU5QVVRUWVBFX0NPTlNUICAgICB9LAorKyAgICAgICAgeyAidW5pZm9ybSIsICAgICJV
bmlmb3JtIG1hdHJpeCBpbnB1dCIsICAgICBJTlBVVFRZUEVfVU5JRk9STSAgIH0sCisrICAgICAg
ICB7ICJkeW5hbWljIiwgICAgIkR5bmFtaWMgbWF0cml4IGlucHV0IiwgICAgIElOUFVUVFlQRV9E
WU5BTUlDICAgfQorKyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgSW5wdXRUeXBlU3BlYyByZWR1
Y2VkSW5wdXRUeXBlc1tdID0KKysgICAgeworKyAgICAgICAgeyAiZHluYW1pYyIsICAgICJEeW5h
bWljIG1hdHJpeCBpbnB1dCIsICAgICBJTlBVVFRZUEVfRFlOQU1JQyAgIH0KKysgICAgfTsKKysK
KysgICAgc3RhdGljIGNvbnN0IERhdGFUeXBlIG1hdHJpeFR5cGVzW10gPQorKyAgICB7CisrICAg
ICAgICBUWVBFX0ZMT0FUX01BVDIsCisrICAgICAgICBUWVBFX0ZMT0FUX01BVDJYMywKKysgICAg
ICAgIFRZUEVfRkxPQVRfTUFUMlg0LAorKyAgICAgICAgVFlQRV9GTE9BVF9NQVQzWDIsCisrICAg
ICAgICBUWVBFX0ZMT0FUX01BVDMsCisrICAgICAgICBUWVBFX0ZMT0FUX01BVDNYNCwKKysgICAg
ICAgIFRZUEVfRkxPQVRfTUFUNFgyLAorKyAgICAgICAgVFlQRV9GTE9BVF9NQVQ0WDMsCisrICAg
ICAgICBUWVBFX0ZMT0FUX01BVDQKKysgICAgfTsKKysKKysgICAgc3RhdGljIGNvbnN0IFByZWNp
c2lvbiBwcmVjaXNpb25zW10gPQorKyAgICB7CisrICAgICAgICBQUkVDSVNJT05fTE9XUCwKKysg
ICAgICAgIFBSRUNJU0lPTl9NRURJVU1QLAorKyAgICAgICAgUFJFQ0lTSU9OX0hJR0hQCisrICAg
IH07CisrCisrICAgIGZvciAoaW50IG9wTmR4ID0gMDsgb3BOZHggPCBERV9MRU5HVEhfT0ZfQVJS
QVkob3BzKTsgb3BOZHgrKykKKysgICAgeworKyAgICAgICAgY29uc3QgSW5wdXRUeXBlU3BlYyog
ICAgaW5UeXBlTGlzdCAgICAgID0gKG9wc1tvcE5keF0uZXh0ZW5kZWRJbnB1dFR5cGVDYXNlcykg
PyAoZXh0ZW5kZWRJbnB1dFR5cGVzKSA6IChyZWR1Y2VkSW5wdXRUeXBlcyk7CisrICAgICAgICBj
b25zdCBpbnQgICAgICAgICAgICAgICBpblR5cGVMaXN0U2l6ZSAgPSAob3BzW29wTmR4XS5leHRl
bmRlZElucHV0VHlwZUNhc2VzKSA/IChERV9MRU5HVEhfT0ZfQVJSQVkoZXh0ZW5kZWRJbnB1dFR5
cGVzKSkgOiAoREVfTEVOR1RIX09GX0FSUkFZKHJlZHVjZWRJbnB1dFR5cGVzKSk7CisrICAgICAg
ICBjb25zdCBNYXRyaXhPcCAgICAgICAgICBvcCAgICAgICAgICAgICAgPSBvcHNbb3BOZHhdLm9w
OworKyAgICAgICAgdGN1OjpUZXN0Q2FzZUdyb3VwKiAgICAgb3BHcm91cCAgICAgICAgID0gbmV3
IHRjdTo6VGVzdENhc2VHcm91cChtX3Rlc3RDdHgsIG9wc1tvcE5keF0ubmFtZSwgb3BzW29wTmR4
XS5kZXNjKTsKKysKKysgICAgICAgIGFkZENoaWxkKG9wR3JvdXApOworKworKyAgICAgICAgZm9y
IChpbnQgaW5UeXBlTmR4ID0gMDsgaW5UeXBlTmR4IDwgaW5UeXBlTGlzdFNpemU7IGluVHlwZU5k
eCsrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGNvbnN0IElucHV0VHlwZSAgICAgaW5wdXRU
eXBlICAgPSBpblR5cGVMaXN0W2luVHlwZU5keF0udHlwZTsKKysgICAgICAgICAgICB0Y3U6OlRl
c3RDYXNlR3JvdXAqIGluR3JvdXA7CisrCisrICAgICAgICAgICAgaWYgKG9wc1tvcE5keF0uY3Jl
YXRlSW5wdXRUeXBlR3JvdXApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpbkdy
b3VwID0gbmV3IHRjdTo6VGVzdENhc2VHcm91cChtX3Rlc3RDdHgsIGluVHlwZUxpc3RbaW5UeXBl
TmR4XS5uYW1lLCBpblR5cGVMaXN0W2luVHlwZU5keF0uZGVzYyk7CisrICAgICAgICAgICAgICAg
IG9wR3JvdXAtPmFkZENoaWxkKGluR3JvdXApOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAg
ICBlbHNlCisrICAgICAgICAgICAgICAgIGluR3JvdXAgPSBvcEdyb3VwOworKworKyAgICAgICAg
ICAgIGZvciAoaW50IG1hdFR5cGVOZHggPSAwOyBtYXRUeXBlTmR4IDwgREVfTEVOR1RIX09GX0FS
UkFZKG1hdHJpeFR5cGVzKTsgbWF0VHlwZU5keCsrKQorKyAgICAgICAgICAgIHsKKysgICAgICAg
ICAgICAgICAgRGF0YVR5cGUgICAgbWF0VHlwZSAgICAgPSBtYXRyaXhUeXBlc1ttYXRUeXBlTmR4
XTsKKysgICAgICAgICAgICAgICAgaW50ICAgICAgICAgbnVtQ29scyAgICAgPSBnZXREYXRhVHlw
ZU1hdHJpeE51bUNvbHVtbnMobWF0VHlwZSk7CisrICAgICAgICAgICAgICAgIGludCAgICAgICAg
IG51bVJvd3MgICAgID0gZ2V0RGF0YVR5cGVNYXRyaXhOdW1Sb3dzKG1hdFR5cGUpOworKyAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBtYXRUeXBlTmFtZSA9IGdldERhdGFUeXBlTmFtZShtYXRU
eXBlKTsKKysKKysgICAgICAgICAgICAgICAgZm9yIChpbnQgcHJlY05keCA9IDA7IHByZWNOZHgg
PCBERV9MRU5HVEhfT0ZfQVJSQVkocHJlY2lzaW9ucyk7IHByZWNOZHgrKykKKysgICAgICAgICAg
ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgUHJlY2lzaW9uICAgcHJlY2lzaW9uICAgPSBw
cmVjaXNpb25zW3ByZWNOZHhdOworKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHJl
Y05hbWUgICAgPSBnZXRQcmVjaXNpb25OYW1lKHByZWNpc2lvbik7CisrICAgICAgICAgICAgICAg
ICAgICBzdHJpbmcgICAgICBiYXNlTmFtZSAgICA9IHN0cmluZyhwcmVjTmFtZSkgKyAiXyIgKyBt
YXRUeXBlTmFtZSArICJfIjsKKysgICAgICAgICAgICAgICAgICAgIFNoYWRlcklucHV0IG1hdElu
ICAgICAgIChpbnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CisrCisrICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNPcGVyYXRpb25NYXRyaXhTY2FsYXIob3ApKQorKyAgICAgICAgICAgICAg
ICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hdHJpeC1zY2FsYXIgXG5vdGUg
Rm9yIGRpdiBjYXNlcyB3ZSB1c2UgdW5pZm9ybSBpbnB1dC4KKysgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJJbnB1dCBzY2FsYXJJbihvcCA9PSBPUF9ESVYgPyBJTlBVVFRZUEVfVU5JRk9S
TSA6IElOUFVUVFlQRV9EWU5BTUlDLCBUWVBFX0ZMT0FULCBwcmVjaXNpb24pOworKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1f
Y29udGV4dCwgKGJhc2VOYW1lICsgImZsb2F0X3ZlcnRleCIpLmNfc3RyKCksICAgICAgIk1hdHJp
eC1zY2FsYXIgY2FzZSIsIG1hdEluLCBzY2FsYXJJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAg
ICAgICAgICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2Nv
bnRleHQsIChiYXNlTmFtZSArICJmbG9hdF9mcmFnbWVudCIpLmNfc3RyKCksICAgICJNYXRyaXgt
c2NhbGFyIGNhc2UiLCBtYXRJbiwgc2NhbGFySW4sIG9wLCBmYWxzZSkpOworKyAgICAgICAgICAg
ICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzT3BlcmF0aW9uTWF0cml4
VmVjdG9yKG9wKSkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBNYXRyaXgtdmVjdG9yLgorKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGFUeXBl
ICAgIGNvbFZlY1R5cGUgID0gZ2V0RGF0YVR5cGVGbG9hdFZlYyhudW1Db2xzKTsKKysgICAgICAg
ICAgICAgICAgICAgICAgICBTaGFkZXJJbnB1dCBjb2xWZWNJbiAgICAob3AgPT0gT1BfRElWID8g
SU5QVVRUWVBFX1VOSUZPUk0gOiBJTlBVVFRZUEVfRFlOQU1JQywgY29sVmVjVHlwZSwgcHJlY2lz
aW9uKTsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcg
U2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArIGdldERhdGFUeXBlTmFtZShj
b2xWZWNUeXBlKSArICJfdmVydGV4IikuY19zdHIoKSwgICAgICJNYXRyaXgtdmVjdG9yIGNhc2Ui
LCBtYXRJbiwgY29sVmVjSW4sIG9wLCB0cnVlKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAg
aW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0LCAoYmFzZU5h
bWUgKyBnZXREYXRhVHlwZU5hbWUoY29sVmVjVHlwZSkgKyAiX2ZyYWdtZW50IikuY19zdHIoKSwg
ICAiTWF0cml4LXZlY3RvciBjYXNlIiwgbWF0SW4sIGNvbFZlY0luLCBvcCwgZmFsc2UpKTsKKysK
KysgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZWN0b3ItbWF0cml4LgorKyAgICAgICAgICAg
ICAgICAgICAgICAgIERhdGFUeXBlICAgIHJvd1ZlY1R5cGUgID0gZ2V0RGF0YVR5cGVGbG9hdFZl
YyhudW1Sb3dzKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnB1dCByb3dWZWNJ
biAgICAob3AgPT0gT1BfRElWID8gSU5QVVRUWVBFX1VOSUZPUk0gOiBJTlBVVFRZUEVfRFlOQU1J
Qywgcm93VmVjVHlwZSwgcHJlY2lzaW9uKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdHJp
bmcgICAgICB2ZWNNYXROYW1lICA9IHN0cmluZyhwcmVjTmFtZSkgKyAiXyIgKyBnZXREYXRhVHlw
ZU5hbWUocm93VmVjVHlwZSkgKyAiXyIgKyBtYXRUeXBlTmFtZTsKKysKKysgICAgICAgICAgICAg
ICAgICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRl
eHQsICh2ZWNNYXROYW1lICsgIl92ZXJ0ZXgiKS5jX3N0cigpLCAgICAgIlZlY3Rvci1tYXRyaXgg
Y2FzZSIsIHJvd1ZlY0luLCBtYXRJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAgICAgICAgICAg
ICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsICh2
ZWNNYXROYW1lICsgIl9mcmFnbWVudCIpLmNfc3RyKCksICAgIlZlY3Rvci1tYXRyaXggY2FzZSIs
IHJvd1ZlY0luLCBtYXRJbiwgb3AsIGZhbHNlKSk7CisrICAgICAgICAgICAgICAgICAgICB9Cisr
CisrICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVyYXRpb25Bcml0aG1ldGljTWF0cml4TWF0
cml4KG9wKSkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBcml0aG1ldGljIG1hdHJpeC1tYXRyaXggbXVsdGlwbGljYXRpb24uCisrICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgb3RoZXJDb2xzID0gMjsgb3RoZXJDb2xzIDw9IDQ7IG90
aGVyQ29scysrKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVySW5wdXQgb3RoZXJNYXRJbihpbnB1dFR5cGUgPT0gSU5QVVRUWVBF
X0RZTkFNSUMgPyBJTlBVVFRZUEVfVU5JRk9STSA6IGlucHV0VHlwZSwgZ2V0RGF0YVR5cGVNYXRy
aXgob3RoZXJDb2xzLCBudW1Db2xzIC8qIHJvd3MgKi8pLCBwcmVjaXNpb24pOworKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2Fz
ZShtX2NvbnRleHQsIChiYXNlTmFtZSArIGdldERhdGFUeXBlTmFtZShvdGhlck1hdEluLmRhdGFU
eXBlKSArICJfdmVydGV4IikuY19zdHIoKSwgICAgIk1hdHJpeC1tYXRyaXggY2FzZSIsIG1hdElu
LCBvdGhlck1hdEluLCBvcCwgdHJ1ZSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFt
ZSArIGdldERhdGFUeXBlTmFtZShvdGhlck1hdEluLmRhdGFUeXBlKSArICJfZnJhZ21lbnQiKS5j
X3N0cigpLCAgIk1hdHJpeC1tYXRyaXggY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwgZmFs
c2UpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICB9
CisrICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc09wZXJhdGlvbkNvbXBvbmVudHdpc2VN
YXRyaXhNYXRyaXgob3ApKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENvbXBvbmVudC13aXNlLgorKyAgICAgICAgICAgICAgICAgICAgICAgIFNo
YWRlcklucHV0IG90aGVyTWF0SW4oaW5wdXRUeXBlID09IElOUFVUVFlQRV9EWU5BTUlDID8gSU5Q
VVRUWVBFX1VOSUZPUk0gOiBpbnB1dFR5cGUsIG1hdFR5cGUsIHByZWNpc2lvbik7CisrICAgICAg
ICAgICAgICAgICAgICAgICAgaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2Uo
bV9jb250ZXh0LCAoYmFzZU5hbWUgKyBtYXRUeXBlTmFtZSArICJfdmVydGV4IikuY19zdHIoKSwg
ICAgICJNYXRyaXgtbWF0cml4IGNhc2UiLCBtYXRJbiwgb3RoZXJNYXRJbiwgb3AsIHRydWUpKTsK
KysgICAgICAgICAgICAgICAgICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0
cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFtZSArIG1hdFR5cGVOYW1lICsgIl9mcmFnbWVudCIp
LmNfc3RyKCksICAgIk1hdHJpeC1tYXRyaXggY2FzZSIsIG1hdEluLCBvdGhlck1hdEluLCBvcCwg
ZmFsc2UpKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgICAg
IGlmIChpc09wZXJhdGlvblZlY3RvclZlY3RvcihvcCkpCisrICAgICAgICAgICAgICAgICAgICB7
CisrICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVySW5wdXQgdmVjMUluKGlucHV0VHlwZSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXREYXRhVHlwZUZsb2F0VmVjKG51bVJvd3MpLCBwcmVjaXNpb24pOworKyAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlcklucHV0IHZlYzJJbigoaW5wdXRUeXBlID09IElOUFVUVFlQ
RV9EWU5BTUlDKSA/IChJTlBVVFRZUEVfVU5JRk9STSkgOiAoaW5wdXRUeXBlKSwgICAgZ2V0RGF0
YVR5cGVGbG9hdFZlYyhudW1Db2xzKSwgcHJlY2lzaW9uKTsKKysKKysgICAgICAgICAgICAgICAg
ICAgICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQs
IChiYXNlTmFtZSArICJmbG9hdF92ZXJ0ZXgiKS5jX3N0cigpLCAgICAgICJWZWN0b3ItdmVjdG9y
IGNhc2UiLCB2ZWMxSW4sIHZlYzJJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAgICAgICAgICAg
ICAgICBpbkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChi
YXNlTmFtZSArICJmbG9hdF9mcmFnbWVudCIpLmNfc3RyKCksICAgICJWZWN0b3ItdmVjdG9yIGNh
c2UiLCB2ZWMxSW4sIHZlYzJJbiwgb3AsIGZhbHNlKSk7CisrICAgICAgICAgICAgICAgICAgICB9
CisrCisrICAgICAgICAgICAgICAgICAgICBpZiAoKGlzT3BlcmF0aW9uVW5hcnlBbnlNYXRyaXgo
b3ApKSB8fAorKyAgICAgICAgICAgICAgICAgICAgICAgIChpc09wZXJhdGlvblVuYXJ5U3ltbWV0
cmljTWF0cml4KG9wKSAmJiBudW1Db2xzID09IG51bVJvd3MpKQorKyAgICAgICAgICAgICAgICAg
ICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlcklucHV0IHZvaWRJbnB1dChJTlBV
VFRZUEVfTEFTVCwgVFlQRV9MQVNULCBQUkVDSVNJT05fTEFTVCk7CisrICAgICAgICAgICAgICAg
ICAgICAgICAgaW5Hcm91cC0+YWRkQ2hpbGQobmV3IFNoYWRlck1hdHJpeENhc2UobV9jb250ZXh0
LCAoYmFzZU5hbWUgKyAiZmxvYXRfdmVydGV4IikuY19zdHIoKSwgICAgICAiTWF0cml4IGNhc2Ui
LCBtYXRJbiwgdm9pZElucHV0LCBvcCwgdHJ1ZSkpOworKyAgICAgICAgICAgICAgICAgICAgICAg
IGluR3JvdXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJhc2VO
YW1lICsgImZsb2F0X2ZyYWdtZW50IikuY19zdHIoKSwgICAgIk1hdHJpeCBjYXNlIiwgbWF0SW4s
IHZvaWRJbnB1dCwgb3AsIGZhbHNlKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisrICAg
ICAgICAgICAgICAgICAgICBpZiAoKGlzT3BlcmF0aW9uQXNzaWdubWVudEFueU1hdHJpeChvcCkp
IHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgKGlzT3BlcmF0aW9uQXNzaWdubWVudFN5bW1l
dHJpY01hdHJpeChvcCkgJiYgbnVtQ29scyA9PSBudW1Sb3dzKSkKKysgICAgICAgICAgICAgICAg
ICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJJbnB1dCBvdGhlck1hdEluKGlu
cHV0VHlwZSA9PSBJTlBVVFRZUEVfRFlOQU1JQyA/IElOUFVUVFlQRV9VTklGT1JNIDogaW5wdXRU
eXBlLCBtYXRUeXBlLCBwcmVjaXNpb24pOworKyAgICAgICAgICAgICAgICAgICAgICAgIGluR3Jv
dXAtPmFkZENoaWxkKG5ldyBTaGFkZXJNYXRyaXhDYXNlKG1fY29udGV4dCwgKGJhc2VOYW1lICsg
ImZsb2F0X3ZlcnRleCIpLmNfc3RyKCksICAgICAgIk1hdHJpeCBhc3NpZ25tZW50IGNhc2UiLCBt
YXRJbiwgb3RoZXJNYXRJbiwgb3AsIHRydWUpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBp
bkdyb3VwLT5hZGRDaGlsZChuZXcgU2hhZGVyTWF0cml4Q2FzZShtX2NvbnRleHQsIChiYXNlTmFt
ZSArICJmbG9hdF9mcmFnbWVudCIpLmNfc3RyKCksICAgICJNYXRyaXggYXNzaWdubWVudCBjYXNl
IiwgbWF0SW4sIG90aGVyTWF0SW4sIG9wLCBmYWxzZSkpOworKyAgICAgICAgICAgICAgICAgICAg
fQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9
CisgfQorIAorIH0gLy8gRnVuY3Rpb25hbAorZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvcXBUZXN0TG9nLmMgYi9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3FwVGVzdExvZy5jCitp
bmRleCA3MjUyYWUwNDkuLmUzZWFhOWIxNCAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvcXBUZXN0TG9nLmMKKysrKyBiL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvcXBUZXN0TG9n
LmMKK0BAIC0zMyw3ICszMyw3IEBACisgI2luY2x1ZGUgImRlTXV0ZXguaCIKKyAKKyAjaWYgZGVm
aW5lZChRUF9TVVBQT1JUX1BORykKKy0jCWluY2x1ZGUgPHBuZy5oPgorKyMgICBpbmNsdWRlIDxw
bmcuaD4KKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KK0BAIC00MSw4ICs0MSw4IEBA
CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorIAorICNpZiAoREVfT1MgPT0gREVfT1NfV0lOMzIpCist
IwlpbmNsdWRlIDx3aW5kb3dzLmg+CistIwlpbmNsdWRlIDxpby5oPgorKyMgICBpbmNsdWRlIDx3
aW5kb3dzLmg+CisrIyAgIGluY2x1ZGUgPGlvLmg+CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQo
REVfREVCVUcpCitAQCAtNTEsNzAgKzUxLDcwIEBACisgCisgdHlwZWRlZiBlbnVtIENvbnRhaW5l
clR5cGVfZQorIHsKKy0JQ09OVEFJTkVSVFlQRV9TRUNUSU9OID0gMCwKKy0JQ09OVEFJTkVSVFlQ
RV9JTUFHRVNFVCwKKy0JQ09OVEFJTkVSVFlQRV9FR0xDT05GSUdTRVQsCistCUNPTlRBSU5FUlRZ
UEVfU0hBREVSUFJPR1JBTSwKKy0JQ09OVEFJTkVSVFlQRV9TQU1QTEVMSVNULAorLQlDT05UQUlO
RVJUWVBFX1NBTVBMRUlORk8sCistCUNPTlRBSU5FUlRZUEVfU0FNUExFLAorKyAgICBDT05UQUlO
RVJUWVBFX1NFQ1RJT04gPSAwLAorKyAgICBDT05UQUlORVJUWVBFX0lNQUdFU0VULAorKyAgICBD
T05UQUlORVJUWVBFX0VHTENPTkZJR1NFVCwKKysgICAgQ09OVEFJTkVSVFlQRV9TSEFERVJQUk9H
UkFNLAorKyAgICBDT05UQUlORVJUWVBFX1NBTVBMRUxJU1QsCisrICAgIENPTlRBSU5FUlRZUEVf
U0FNUExFSU5GTywKKysgICAgQ09OVEFJTkVSVFlQRV9TQU1QTEUsCisgCistCUNPTlRBSU5FUlRZ
UEVfTEFTVAorKyAgICBDT05UQUlORVJUWVBFX0xBU1QKKyB9IENvbnRhaW5lclR5cGU7CisgCisg
REVfSU5MSU5FIGRlQm9vbCBjaGlsZENvbnRhaW5lcnNPayAoQ29udGFpbmVyVHlwZSB0eXBlKQor
IHsKKy0JcmV0dXJuIHR5cGUgPT0gQ09OVEFJTkVSVFlQRV9TRUNUSU9OIHx8IHR5cGUgPT0gQ09O
VEFJTkVSVFlQRV9TQU1QTEVMSVNUOworKyAgICByZXR1cm4gdHlwZSA9PSBDT05UQUlORVJUWVBF
X1NFQ1RJT04gfHwgdHlwZSA9PSBDT05UQUlORVJUWVBFX1NBTVBMRUxJU1Q7CisgfQorIAorIGVu
dW0KKyB7CistCU1BWF9DT05UQUlORVJfU1RBQ0tfREVQVEgJCT0gMzIKKysgICAgTUFYX0NPTlRB
SU5FUl9TVEFDS19ERVBUSCAgICAgICA9IDMyCisgfTsKKyAKKyB0eXBlZGVmIHN0cnVjdCBDb250
YWluZXJTdGFja19zCisgeworLQlpbnQJCQkJbnVtRWxlbWVudHM7CistCUNvbnRhaW5lclR5cGUJ
ZWxlbWVudHNbTUFYX0NPTlRBSU5FUl9TVEFDS19ERVBUSF07CisrICAgIGludCAgICAgICAgICAg
ICBudW1FbGVtZW50czsKKysgICAgQ29udGFpbmVyVHlwZSAgIGVsZW1lbnRzW01BWF9DT05UQUlO
RVJfU1RBQ0tfREVQVEhdOworIH0gQ29udGFpbmVyU3RhY2s7CisgCisgREVfSU5MSU5FIHZvaWQg
Q29udGFpbmVyU3RhY2tfcmVzZXQgKENvbnRhaW5lclN0YWNrKiBzdGFjaykKKyB7CistCWRlTWVt
c2V0KHN0YWNrLCAwLCBzaXplb2YoQ29udGFpbmVyU3RhY2spKTsKKysgICAgZGVNZW1zZXQoc3Rh
Y2ssIDAsIHNpemVvZihDb250YWluZXJTdGFjaykpOworIH0KKyAKKyBERV9JTkxJTkUgZGVCb29s
IENvbnRhaW5lclN0YWNrX2lzRW1wdHkgKGNvbnN0IENvbnRhaW5lclN0YWNrKiBzdGFjaykKKyB7
CistCXJldHVybiBzdGFjay0+bnVtRWxlbWVudHMgPT0gMDsKKysgICAgcmV0dXJuIHN0YWNrLT5u
dW1FbGVtZW50cyA9PSAwOworIH0KKyAKKyBERV9JTkxJTkUgZGVCb29sIENvbnRhaW5lclN0YWNr
X3B1c2ggKENvbnRhaW5lclN0YWNrKiBzdGFjaywgQ29udGFpbmVyVHlwZSB0eXBlKQorIHsKKy0J
aWYgKHN0YWNrLT5udW1FbGVtZW50cyA9PSBNQVhfQ09OVEFJTkVSX1NUQUNLX0RFUFRIKQorLQkJ
cmV0dXJuIERFX0ZBTFNFOworKyAgICBpZiAoc3RhY2stPm51bUVsZW1lbnRzID09IE1BWF9DT05U
QUlORVJfU1RBQ0tfREVQVEgpCisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisgCistCWlmIChz
dGFjay0+bnVtRWxlbWVudHMgPiAwICYmICFjaGlsZENvbnRhaW5lcnNPayhzdGFjay0+ZWxlbWVu
dHNbc3RhY2stPm51bUVsZW1lbnRzLTFdKSkKKy0JCXJldHVybiBERV9GQUxTRTsKKysgICAgaWYg
KHN0YWNrLT5udW1FbGVtZW50cyA+IDAgJiYgIWNoaWxkQ29udGFpbmVyc09rKHN0YWNrLT5lbGVt
ZW50c1tzdGFjay0+bnVtRWxlbWVudHMtMV0pKQorKyAgICAgICAgcmV0dXJuIERFX0ZBTFNFOwor
IAorLQlzdGFjay0+ZWxlbWVudHNbc3RhY2stPm51bUVsZW1lbnRzXSAgPSB0eXBlOworLQlzdGFj
ay0+bnVtRWxlbWVudHMJCQkJCSs9IDE7CisrICAgIHN0YWNrLT5lbGVtZW50c1tzdGFjay0+bnVt
RWxlbWVudHNdICA9IHR5cGU7CisrICAgIHN0YWNrLT5udW1FbGVtZW50cyAgICAgICAgICAgICAg
ICAgICs9IDE7CisgCistCXJldHVybiBERV9UUlVFOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9
CisgCisgREVfSU5MSU5FIENvbnRhaW5lclR5cGUgQ29udGFpbmVyU3RhY2tfcG9wIChDb250YWlu
ZXJTdGFjayogc3RhY2spCisgeworLQlERV9BU1NFUlQoc3RhY2stPm51bUVsZW1lbnRzID4gMCk7
CistCXN0YWNrLT5udW1FbGVtZW50cyAtPSAxOworLQlyZXR1cm4gc3RhY2stPmVsZW1lbnRzW3N0
YWNrLT5udW1FbGVtZW50c107CisrICAgIERFX0FTU0VSVChzdGFjay0+bnVtRWxlbWVudHMgPiAw
KTsKKysgICAgc3RhY2stPm51bUVsZW1lbnRzIC09IDE7CisrICAgIHJldHVybiBzdGFjay0+ZWxl
bWVudHNbc3RhY2stPm51bUVsZW1lbnRzXTsKKyB9CisgCisgREVfSU5MSU5FIENvbnRhaW5lclR5
cGUgQ29udGFpbmVyU3RhY2tfZ2V0VG9wIChjb25zdCBDb250YWluZXJTdGFjayogc3RhY2spCisg
eworLQlpZiAoc3RhY2stPm51bUVsZW1lbnRzID4gMCkKKy0JCXJldHVybiBzdGFjay0+ZWxlbWVu
dHNbc3RhY2stPm51bUVsZW1lbnRzLTFdOworLQllbHNlCistCQlyZXR1cm4gQ09OVEFJTkVSVFlQ
RV9MQVNUOworKyAgICBpZiAoc3RhY2stPm51bUVsZW1lbnRzID4gMCkKKysgICAgICAgIHJldHVy
biBzdGFjay0+ZWxlbWVudHNbc3RhY2stPm51bUVsZW1lbnRzLTFdOworKyAgICBlbHNlCisrICAg
ICAgICByZXR1cm4gQ09OVEFJTkVSVFlQRV9MQVNUOworIH0KKyAKKyAjZW5kaWYKK0BAIC0xMjIs
MjYgKzEyMiwyNiBAQCBERV9JTkxJTkUgQ29udGFpbmVyVHlwZSBDb250YWluZXJTdGFja19nZXRU
b3AgKGNvbnN0IENvbnRhaW5lclN0YWNrKiBzdGFjaykKKyAvKiBxcFRlc3RMb2cgaW5zdGFuY2Ug
Ki8KKyBzdHJ1Y3QgcXBUZXN0TG9nX3MKKyB7CistCWRlVWludDMyCQkJCWZsYWdzOwkJCQkvKiE8
IExvZ2dpbmcgZmxhZ3MuCQkJCQkJKi8KKysgICAgZGVVaW50MzIgICAgICAgICAgICAgICAgZmxh
Z3M7ICAgICAgICAgICAgICAvKiE8IExvZ2dpbmcgZmxhZ3MuICAgICAgICAgICAgICAgICAgICAg
Ki8KKyAKKy0JZGVNdXRleAkJCQkJbG9jazsJCQkJLyohPCBMb2NrIGZvciBtdXRhYmxlIHN0YXRl
IGJlbG93LgkJKi8KKysgICAgZGVNdXRleCAgICAgICAgICAgICAgICAgbG9jazsgICAgICAgICAg
ICAgICAvKiE8IExvY2sgZm9yIG11dGFibGUgc3RhdGUgYmVsb3cuICAgICAgKi8KKyAKKy0JLyog
U3RhdGUgcHJvdGVjdGVkIGJ5IGxvY2suICovCistCUZJTEUqCQkJCQlvdXRwdXRGaWxlOworLQlx
cFhtbFdyaXRlcioJCQl3cml0ZXI7CistCWRlQm9vbAkJCQkJaXNTZXNzaW9uT3BlbjsKKy0JZGVC
b29sCQkJCQlpc0Nhc2VPcGVuOworKyAgICAvKiBTdGF0ZSBwcm90ZWN0ZWQgYnkgbG9jay4gKi8K
KysgICAgRklMRSogICAgICAgICAgICAgICAgICAgb3V0cHV0RmlsZTsKKysgICAgcXBYbWxXcml0
ZXIqICAgICAgICAgICAgd3JpdGVyOworKyAgICBkZUJvb2wgICAgICAgICAgICAgICAgICBpc1Nl
c3Npb25PcGVuOworKyAgICBkZUJvb2wgICAgICAgICAgICAgICAgICBpc0Nhc2VPcGVuOworIAor
ICNpZiBkZWZpbmVkKERFX0RFQlVHKQorLQlDb250YWluZXJTdGFjawkJCWNvbnRhaW5lclN0YWNr
OwkJLyohPCBGb3IgY29udGFpbmVyIHVzYWdlIHZlcmlmaWNhdGlvbi4JKi8KKysgICAgQ29udGFp
bmVyU3RhY2sgICAgICAgICAgY29udGFpbmVyU3RhY2s7ICAgICAvKiE8IEZvciBjb250YWluZXIg
dXNhZ2UgdmVyaWZpY2F0aW9uLiAgKi8KKyAjZW5kaWYKKyB9OworIAorIC8qIE1hcHMgaW50ZWdl
ciB0byBzdHJpbmcuICovCisgdHlwZWRlZiBzdHJ1Y3QgcXBLZXlTdHJpbmdNYXBfcworIHsKKy0J
aW50CQlrZXk7CistCWNoYXIqCXN0cmluZzsKKysgICAgaW50ICAgICBrZXk7CisrICAgIGNoYXIq
ICAgc3RyaW5nOworIH0gcXBLZXlTdHJpbmdNYXA7CisgCisgc3RhdGljIGNvbnN0IGNoYXIqIExP
R19GT1JNQVRfVkVSU0lPTiA9ICIwLjMuNCI7CitAQCAtMTQ5LDMyICsxNDksMzIgQEAgc3RhdGlj
IGNvbnN0IGNoYXIqIExPR19GT1JNQVRfVkVSU0lPTiA9ICIwLjMuNCI7CisgLyogTWFwcGluZyBl
bnVtIHRvIGFib3ZlIHN0cmluZ3MuLi4gKi8KKyBzdGF0aWMgY29uc3QgcXBLZXlTdHJpbmdNYXAg
c19xcFRlc3RUeXBlTWFwW10gPQorIHsKKy0JeyBRUF9URVNUX0NBU0VfVFlQRV9TRUxGX1ZBTElE
QVRFLAkJIlNlbGZWYWxpZGF0ZSIJfSwKKy0JeyBRUF9URVNUX0NBU0VfVFlQRV9QRVJGT1JNQU5D
RSwJCSJQZXJmb3JtYW5jZSIJfSwKKy0JeyBRUF9URVNUX0NBU0VfVFlQRV9DQVBBQklMSVRZLAkJ
CSJDYXBhYmlsaXR5Igl9LAorLQl7IFFQX1RFU1RfQ0FTRV9UWVBFX0FDQ1VSQUNZLAkJCSJBY2N1
cmFjeSIJCX0sCisrICAgIHsgUVBfVEVTVF9DQVNFX1RZUEVfU0VMRl9WQUxJREFURSwgICAgICAi
U2VsZlZhbGlkYXRlIiAgfSwKKysgICAgeyBRUF9URVNUX0NBU0VfVFlQRV9QRVJGT1JNQU5DRSwg
ICAgICAgICJQZXJmb3JtYW5jZSIgICB9LAorKyAgICB7IFFQX1RFU1RfQ0FTRV9UWVBFX0NBUEFC
SUxJVFksICAgICAgICAgIkNhcGFiaWxpdHkiICAgIH0sCisrICAgIHsgUVBfVEVTVF9DQVNFX1RZ
UEVfQUNDVVJBQ1ksICAgICAgICAgICAiQWNjdXJhY3kiICAgICAgfSwKKyAKKy0JeyBRUF9URVNU
X0NBU0VfVFlQRV9MQVNULAkJCQlERV9OVUxMCQkJfQorKyAgICB7IFFQX1RFU1RfQ0FTRV9UWVBF
X0xBU1QsICAgICAgICAgICAgICAgREVfTlVMTCAgICAgICAgIH0KKyB9OworIAorIERFX1NUQVRJ
Q19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfcXBUZXN0VHlwZU1hcCkgPT0gUVBfVEVTVF9D
QVNFX1RZUEVfTEFTVCArIDEpOworIAorIHN0YXRpYyBjb25zdCBxcEtleVN0cmluZ01hcCBzX3Fw
VGVzdFJlc3VsdE1hcFtdID0KKyB7CistCXsgUVBfVEVTVF9SRVNVTFRfUEFTUywJCQkJCQkiUGFz
cyIJCQkJCX0sCistCXsgUVBfVEVTVF9SRVNVTFRfRkFJTCwJCQkJCQkiRmFpbCIJCQkJCX0sCist
CXsgUVBfVEVTVF9SRVNVTFRfUVVBTElUWV9XQVJOSU5HLAkJCSJRdWFsaXR5V2FybmluZyIJCX0s
CistCXsgUVBfVEVTVF9SRVNVTFRfQ09NUEFUSUJJTElUWV9XQVJOSU5HLAkJIkNvbXBhdGliaWxp
dHlXYXJuaW5nIgl9LAorLQl7IFFQX1RFU1RfUkVTVUxUX1BFTkRJTkcsCQkJCQkiUGVuZGluZyIJ
CQkJfSwJLyogc2hvdWxkIG5vdCBiZSBuZWVkZWQgaGVyZSAqLworLQl7IFFQX1RFU1RfUkVTVUxU
X05PVF9TVVBQT1JURUQsCQkJCSJOb3RTdXBwb3J0ZWQiCQkJfSwKKy0JeyBRUF9URVNUX1JFU1VM
VF9SRVNPVVJDRV9FUlJPUiwJCQkiUmVzb3VyY2VFcnJvciIJCQl9LAorLQl7IFFQX1RFU1RfUkVT
VUxUX0lOVEVSTkFMX0VSUk9SLAkJCSJJbnRlcm5hbEVycm9yIgkJCX0sCistCXsgUVBfVEVTVF9S
RVNVTFRfQ1JBU0gsCQkJCQkJIkNyYXNoIgkJCQkJfSwKKy0JeyBRUF9URVNUX1JFU1VMVF9USU1F
T1VULAkJCQkJIlRpbWVvdXQiCQkJCX0sCisrICAgIHsgUVBfVEVTVF9SRVNVTFRfUEFTUywgICAg
ICAgICAgICAgICAgICAgICAgIlBhc3MiICAgICAgICAgICAgICAgICAgfSwKKysgICAgeyBRUF9U
RVNUX1JFU1VMVF9GQUlMLCAgICAgICAgICAgICAgICAgICAgICAiRmFpbCIgICAgICAgICAgICAg
ICAgICB9LAorKyAgICB7IFFQX1RFU1RfUkVTVUxUX1FVQUxJVFlfV0FSTklORywgICAgICAgICAg
ICJRdWFsaXR5V2FybmluZyIgICAgICAgIH0sCisrICAgIHsgUVBfVEVTVF9SRVNVTFRfQ09NUEFU
SUJJTElUWV9XQVJOSU5HLCAgICAgIkNvbXBhdGliaWxpdHlXYXJuaW5nIiAgfSwKKysgICAgeyBR
UF9URVNUX1JFU1VMVF9QRU5ESU5HLCAgICAgICAgICAgICAgICAgICAiUGVuZGluZyIgICAgICAg
ICAgICAgICB9LCAgLyogc2hvdWxkIG5vdCBiZSBuZWVkZWQgaGVyZSAqLworKyAgICB7IFFQX1RF
U1RfUkVTVUxUX05PVF9TVVBQT1JURUQsICAgICAgICAgICAgICJOb3RTdXBwb3J0ZWQiICAgICAg
ICAgIH0sCisrICAgIHsgUVBfVEVTVF9SRVNVTFRfUkVTT1VSQ0VfRVJST1IsICAgICAgICAgICAg
IlJlc291cmNlRXJyb3IiICAgICAgICAgfSwKKysgICAgeyBRUF9URVNUX1JFU1VMVF9JTlRFUk5B
TF9FUlJPUiwgICAgICAgICAgICAiSW50ZXJuYWxFcnJvciIgICAgICAgICB9LAorKyAgICB7IFFQ
X1RFU1RfUkVTVUxUX0NSQVNILCAgICAgICAgICAgICAgICAgICAgICJDcmFzaCIgICAgICAgICAg
ICAgICAgIH0sCisrICAgIHsgUVBfVEVTVF9SRVNVTFRfVElNRU9VVCwgICAgICAgICAgICAgICAg
ICAgIlRpbWVvdXQiICAgICAgICAgICAgICAgfSwKKyAKKy0JLyogQWRkIG5ldyB2YWx1ZXMgaGVy
ZSBpZiBuZWVkZWQsIHJlbWVtYmVyIHRvIHVwZGF0ZSBxcFRlc3RSZXN1bHQgZW51bWVyYXRpb24u
ICovCisrICAgIC8qIEFkZCBuZXcgdmFsdWVzIGhlcmUgaWYgbmVlZGVkLCByZW1lbWJlciB0byB1
cGRhdGUgcXBUZXN0UmVzdWx0IGVudW1lcmF0aW9uLiAqLworIAorLQl7IFFQX1RFU1RfUkVTVUxU
X0xBU1QsCQkJCQkJREVfTlVMTAkJCQkJfQorKyAgICB7IFFQX1RFU1RfUkVTVUxUX0xBU1QsICAg
ICAgICAgICAgICAgICAgICAgIERFX05VTEwgICAgICAgICAgICAgICAgIH0KKyB9OworIAorIERF
X1NUQVRJQ19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfcXBUZXN0UmVzdWx0TWFwKSA9PSBR
UF9URVNUX1JFU1VMVF9MQVNUICsgMSk7CitAQCAtMTgzLDEzICsxODMsMTMgQEAgREVfU1RBVElD
X0FTU0VSVChERV9MRU5HVEhfT0ZfQVJSQVkoc19xcFRlc3RSZXN1bHRNYXApID09IFFQX1RFU1Rf
UkVTVUxUX0xBU1QgKworIAorIHN0YXRpYyBjb25zdCBxcEtleVN0cmluZ01hcCBzX3FwVGFnTWFw
W10gPQorIHsKKy0JeyBRUF9LRVlfVEFHX05PTkUsCQkJREVfTlVMTAkJCX0sCistCXsgUVBfS0VZ
X1RBR19QRVJGT1JNQU5DRSwJIlBlcmZvcm1hbmNlIgl9LAorLQl7IFFQX0tFWV9UQUdfUVVBTElU
WSwJCSJRdWFsaXR5IgkJfSwKKy0JeyBRUF9LRVlfVEFHX1BSRUNJU0lPTiwJCSJQcmVjaXNpb24i
CQl9LAorLQl7IFFQX0tFWV9UQUdfVElNRSwJCQkiVGltZSIJCQl9LAorKyAgICB7IFFQX0tFWV9U
QUdfTk9ORSwgICAgICAgICAgREVfTlVMTCAgICAgICAgIH0sCisrICAgIHsgUVBfS0VZX1RBR19Q
RVJGT1JNQU5DRSwgICAiUGVyZm9ybWFuY2UiICAgfSwKKysgICAgeyBRUF9LRVlfVEFHX1FVQUxJ
VFksICAgICAgICJRdWFsaXR5IiAgICAgICB9LAorKyAgICB7IFFQX0tFWV9UQUdfUFJFQ0lTSU9O
LCAgICAgIlByZWNpc2lvbiIgICAgIH0sCisrICAgIHsgUVBfS0VZX1RBR19USU1FLCAgICAgICAg
ICAiVGltZSIgICAgICAgICAgfSwKKyAKKy0JeyBRUF9LRVlfVEFHX0xBU1QsCQkJREVfTlVMTAkJ
CX0KKysgICAgeyBRUF9LRVlfVEFHX0xBU1QsICAgICAgICAgIERFX05VTEwgICAgICAgICB9Cisg
fTsKKyAKKyBERV9TVEFUSUNfQVNTRVJUKERFX0xFTkdUSF9PRl9BUlJBWShzX3FwVGFnTWFwKSA9
PSBRUF9LRVlfVEFHX0xBU1QgKyAxKTsKK0BAIC0xOTgsMTAgKzE5OCwxMCBAQCBERV9TVEFUSUNf
QVNTRVJUKERFX0xFTkdUSF9PRl9BUlJBWShzX3FwVGFnTWFwKSA9PSBRUF9LRVlfVEFHX0xBU1Qg
KyAxKTsKKyAKKyBzdGF0aWMgY29uc3QgcXBLZXlTdHJpbmdNYXAgc19xcFNhbXBsZVZhbHVlVGFn
TWFwW10gPQorIHsKKy0JeyBRUF9TQU1QTEVfVkFMVUVfVEFHX1BSRURJQ1RPUiwJIlByZWRpY3Rv
ciIJfSwKKy0JeyBRUF9TQU1QTEVfVkFMVUVfVEFHX1JFU1BPTlNFLAkJIlJlc3BvbnNlIgl9LAor
KyAgICB7IFFQX1NBTVBMRV9WQUxVRV9UQUdfUFJFRElDVE9SLCAgICAiUHJlZGljdG9yIiB9LAor
KyAgICB7IFFQX1NBTVBMRV9WQUxVRV9UQUdfUkVTUE9OU0UsICAgICAiUmVzcG9uc2UiICB9LAor
IAorLQl7IFFQX1NBTVBMRV9WQUxVRV9UQUdfTEFTVCwJCQlERV9OVUxMCQl9CisrICAgIHsgUVBf
U0FNUExFX1ZBTFVFX1RBR19MQVNULCAgICAgICAgIERFX05VTEwgICAgIH0KKyB9OworIAorIERF
X1NUQVRJQ19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfcXBTYW1wbGVWYWx1ZVRhZ01hcCkg
PT0gUVBfU0FNUExFX1ZBTFVFX1RBR19MQVNUICsgMSk7CitAQCAtMjEwLDEyICsyMTAsMTIgQEAg
REVfU1RBVElDX0FTU0VSVChERV9MRU5HVEhfT0ZfQVJSQVkoc19xcFNhbXBsZVZhbHVlVGFnTWFw
KSA9PSBRUF9TQU1QTEVfVkFMVUVfVEEKKyAKKyBzdGF0aWMgY29uc3QgcXBLZXlTdHJpbmdNYXAg
c19xcEltYWdlQ29tcHJlc3Npb25Nb2RlTWFwW10gPQorIHsKKy0JeyBRUF9JTUFHRV9DT01QUkVT
U0lPTl9NT0RFX05PTkUsCSJOb25lIgl9LAorLQl7IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVf
UE5HLAkiUE5HIgl9LAorKyAgICB7IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTk9ORSwgICAi
Tm9uZSIgIH0sCisrICAgIHsgUVBfSU1BR0VfQ09NUFJFU1NJT05fTU9ERV9QTkcsICAgICJQTkci
ICAgfSwKKyAKKy0JeyBRUF9JTUFHRV9DT01QUkVTU0lPTl9NT0RFX0JFU1QsCURFX05VTEwJfSwJ
Lyogbm90IGFsbG93ZWQgdG8gYmUgd3JpdHRlbiEgKi8KKysgICAgeyBRUF9JTUFHRV9DT01QUkVT
U0lPTl9NT0RFX0JFU1QsICAgREVfTlVMTCB9LCAgLyogbm90IGFsbG93ZWQgdG8gYmUgd3JpdHRl
biEgKi8KKyAKKy0JeyBRUF9JTUFHRV9DT01QUkVTU0lPTl9NT0RFX0xBU1QsCURFX05VTEwJfQor
KyAgICB7IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTEFTVCwgICBERV9OVUxMIH0KKyB9Owor
IAorIERFX1NUQVRJQ19BU1NFUlQoREVfTEVOR1RIX09GX0FSUkFZKHNfcXBJbWFnZUNvbXByZXNz
aW9uTW9kZU1hcCkgPT0gUVBfSU1BR0VfQ09NUFJFU1NJT05fTU9ERV9MQVNUICsgMSk7CitAQCAt
MjI0LDEwICsyMjQsMTAgQEAgREVfU1RBVElDX0FTU0VSVChERV9MRU5HVEhfT0ZfQVJSQVkoc19x
cEltYWdlQ29tcHJlc3Npb25Nb2RlTWFwKSA9PSBRUF9JTUFHRV9DT00KKyAKKyBzdGF0aWMgY29u
c3QgcXBLZXlTdHJpbmdNYXAgc19xcEltYWdlRm9ybWF0TWFwW10gPQorIHsKKy0JeyBRUF9JTUFH
RV9GT1JNQVRfUkdCODg4LAkiUkdCODg4Igl9LAorLQl7IFFQX0lNQUdFX0ZPUk1BVF9SR0JBODg4
OCwJIlJHQkE4ODg4Igl9LAorKyAgICB7IFFQX0lNQUdFX0ZPUk1BVF9SR0I4ODgsICAgIlJHQjg4
OCIgICAgfSwKKysgICAgeyBRUF9JTUFHRV9GT1JNQVRfUkdCQTg4ODgsICJSR0JBODg4OCIgIH0s
CisgCistCXsgUVBfSU1BR0VfRk9STUFUX0xBU1QsCQlERV9OVUxMCQl9CisrICAgIHsgUVBfSU1B
R0VfRk9STUFUX0xBU1QsICAgICBERV9OVUxMICAgICB9CisgfTsKKyAKKyBERV9TVEFUSUNfQVNT
RVJUKERFX0xFTkdUSF9PRl9BUlJBWShzX3FwSW1hZ2VGb3JtYXRNYXApID09IFFQX0lNQUdFX0ZP
Uk1BVF9MQVNUICsgMSk7CitAQCAtMjM2LDkxICsyMzYsOTEgQEAgREVfU1RBVElDX0FTU0VSVChE
RV9MRU5HVEhfT0ZfQVJSQVkoc19xcEltYWdlRm9ybWF0TWFwKSA9PSBRUF9JTUFHRV9GT1JNQVRf
TEFTVAorIAorIHN0YXRpYyBjb25zdCBxcEtleVN0cmluZ01hcCBzX3FwU2hhZGVyVHlwZU1hcFtd
ID0KKyB7CistCXsgUVBfU0hBREVSX1RZUEVfVkVSVEVYLAkJCSJWZXJ0ZXhTaGFkZXIiCQkJfSwK
Ky0JeyBRUF9TSEFERVJfVFlQRV9GUkFHTUVOVCwJCQkiRnJhZ21lbnRTaGFkZXIiCQl9LAorLQl7
IFFQX1NIQURFUl9UWVBFX0dFT01FVFJZLAkJCSJHZW9tZXRyeVNoYWRlciIJCX0sCistCXsgUVBf
U0hBREVSX1RZUEVfVEVTU19DT05UUk9MLAkJIlRlc3NDb250cm9sU2hhZGVyIgkJfSwKKy0JeyBR
UF9TSEFERVJfVFlQRV9URVNTX0VWQUxVQVRJT04sCSJUZXNzRXZhbHVhdGlvblNoYWRlciIJfSwK
Ky0JeyBRUF9TSEFERVJfVFlQRV9DT01QVVRFLAkJCSJDb21wdXRlU2hhZGVyIgkJCX0sCisrICAg
IHsgUVBfU0hBREVSX1RZUEVfVkVSVEVYLCAgICAgICAgICAgICJWZXJ0ZXhTaGFkZXIiICAgICAg
ICAgIH0sCisrICAgIHsgUVBfU0hBREVSX1RZUEVfRlJBR01FTlQsICAgICAgICAgICJGcmFnbWVu
dFNoYWRlciIgICAgICAgIH0sCisrICAgIHsgUVBfU0hBREVSX1RZUEVfR0VPTUVUUlksICAgICAg
ICAgICJHZW9tZXRyeVNoYWRlciIgICAgICAgIH0sCisrICAgIHsgUVBfU0hBREVSX1RZUEVfVEVT
U19DT05UUk9MLCAgICAgICJUZXNzQ29udHJvbFNoYWRlciIgICAgIH0sCisrICAgIHsgUVBfU0hB
REVSX1RZUEVfVEVTU19FVkFMVUFUSU9OLCAgICJUZXNzRXZhbHVhdGlvblNoYWRlciIgIH0sCisr
ICAgIHsgUVBfU0hBREVSX1RZUEVfQ09NUFVURSwgICAgICAgICAgICJDb21wdXRlU2hhZGVyIiAg
ICAgICAgIH0sCisgCistCXsgUVBfU0hBREVSX1RZUEVfTEFTVCwJCQkJREVfTlVMTAkJCQkJfQor
KyAgICB7IFFQX1NIQURFUl9UWVBFX0xBU1QsICAgICAgICAgICAgICBERV9OVUxMICAgICAgICAg
ICAgICAgICB9CisgfTsKKyAKKyBERV9TVEFUSUNfQVNTRVJUKERFX0xFTkdUSF9PRl9BUlJBWShz
X3FwU2hhZGVyVHlwZU1hcCkgPT0gUVBfU0hBREVSX1RZUEVfTEFTVCArIDEpOworIAorIHN0YXRp
YyB2b2lkIHFwVGVzdExvZ19mbHVzaEZpbGUgKHFwVGVzdExvZyogbG9nKQorIHsKKy0JREVfQVNT
RVJUKGxvZyAmJiBsb2ctPm91dHB1dEZpbGUpOworLQlmZmx1c2gobG9nLT5vdXRwdXRGaWxlKTsK
KysgICAgREVfQVNTRVJUKGxvZyAmJiBsb2ctPm91dHB1dEZpbGUpOworKyAgICBmZmx1c2gobG9n
LT5vdXRwdXRGaWxlKTsKKyAjaWYgKERFX09TID09IERFX09TX1dJTjMyKSAmJiAoREVfQ09NUElM
RVIgPT0gREVfQ09NUElMRVJfTVNDKQorLQkvKiBcdG9kbyBbcGV0cmldIElzIHRoaXMgcmVhbGx5
IG5lY2Vzc2FyeT8gKi8KKy0JRmx1c2hGaWxlQnVmZmVycygoSEFORExFKV9nZXRfb3NmaGFuZGxl
KF9maWxlbm8obG9nLT5vdXRwdXRGaWxlKSkpOworKyAgICAvKiBcdG9kbyBbcGV0cmldIElzIHRo
aXMgcmVhbGx5IG5lY2Vzc2FyeT8gKi8KKysgICAgRmx1c2hGaWxlQnVmZmVycygoSEFORExFKV9n
ZXRfb3NmaGFuZGxlKF9maWxlbm8obG9nLT5vdXRwdXRGaWxlKSkpOworICNlbmRpZgorIH0KKyAK
Ky0jZGVmaW5lIFFQX0xPT0tVUF9TVFJJTkcoS0VZTUFQLCBLRVkpCXFwTG9va3VwU3RyaW5nKEtF
WU1BUCwgREVfTEVOR1RIX09GX0FSUkFZKEtFWU1BUCksIChpbnQpKEtFWSkpCisrI2RlZmluZSBR
UF9MT09LVVBfU1RSSU5HKEtFWU1BUCwgS0VZKSAgIHFwTG9va3VwU3RyaW5nKEtFWU1BUCwgREVf
TEVOR1RIX09GX0FSUkFZKEtFWU1BUCksIChpbnQpKEtFWSkpCisgCisgc3RhdGljIGNvbnN0IGNo
YXIqIHFwTG9va3VwU3RyaW5nIChjb25zdCBxcEtleVN0cmluZ01hcCoga2V5TWFwLCBpbnQga2V5
TWFwU2l6ZSwgaW50IGtleSkKKyB7CistCURFX0FTU0VSVChrZXlNYXApOworLQlERV9BU1NFUlQo
ZGVJbkJvdW5kczMyKGtleSwgMCwga2V5TWFwU2l6ZSkpOworLQlERV9BU1NFUlQoa2V5TWFwW2tl
eV0ua2V5ID09IGtleSk7CistCURFX1VOUkVGKGtleU1hcFNpemUpOyAvKiBmb3IgYXNzZXJ0aW5n
IG9ubHkgKi8KKy0JcmV0dXJuIGtleU1hcFtrZXldLnN0cmluZzsKKysgICAgREVfQVNTRVJUKGtl
eU1hcCk7CisrICAgIERFX0FTU0VSVChkZUluQm91bmRzMzIoa2V5LCAwLCBrZXlNYXBTaXplKSk7
CisrICAgIERFX0FTU0VSVChrZXlNYXBba2V5XS5rZXkgPT0ga2V5KTsKKysgICAgREVfVU5SRUYo
a2V5TWFwU2l6ZSk7IC8qIGZvciBhc3NlcnRpbmcgb25seSAqLworKyAgICByZXR1cm4ga2V5TWFw
W2tleV0uc3RyaW5nOworIH0KKyAKKyBERV9JTkxJTkUgdm9pZCBpbnQzMlRvU3RyaW5nIChpbnQg
dmFsLCBjaGFyIGJ1ZlszMl0pCisgeworLQlkZVNwcmludGYoJmJ1ZlswXSwgMzIsICIlZCIsIHZh
bCk7CisrICAgIGRlU3ByaW50ZigmYnVmWzBdLCAzMiwgIiVkIiwgdmFsKTsKKyB9CisgCisgREVf
SU5MSU5FIHZvaWQgaW50NjRUb1N0cmluZyAoZGVJbnQ2NCB2YWwsIGNoYXIgYnVmWzMyXSkKKyB7
CistCWRlU3ByaW50ZigmYnVmWzBdLCAzMiwgIiVsbGQiLCAobG9uZyBsb25nIGludCl2YWwpOwor
KyAgICBkZVNwcmludGYoJmJ1ZlswXSwgMzIsICIlbGxkIiwgKGxvbmcgbG9uZyBpbnQpdmFsKTsK
KyB9CisgCisgREVfSU5MSU5FIHZvaWQgZmxvYXRUb1N0cmluZyAoZmxvYXQgdmFsdWUsIGNoYXIq
IGJ1Ziwgc2l6ZV90IGJ1ZlNpemUpCisgeworLQlkZVNwcmludGYoYnVmLCBidWZTaXplLCAiJWYi
LCB2YWx1ZSk7CisrICAgIGRlU3ByaW50ZihidWYsIGJ1ZlNpemUsICIlZiIsIHZhbHVlKTsKKyB9
CisgCisgREVfSU5MSU5FIHZvaWQgZG91YmxlVG9TdHJpbmcgKGRvdWJsZSB2YWx1ZSwgY2hhciog
YnVmLCBzaXplX3QgYnVmU2l6ZSkKKyB7CistCWRlU3ByaW50ZihidWYsIGJ1ZlNpemUsICIlZiIs
IHZhbHVlKTsKKysgICAgZGVTcHJpbnRmKGJ1ZiwgYnVmU2l6ZSwgIiVmIiwgdmFsdWUpOworIH0K
KyAKKyBzdGF0aWMgZGVCb29sIGJlZ2luU2Vzc2lvbiAocXBUZXN0TG9nKiBsb2cpCisgeworLQlE
RV9BU1NFUlQobG9nICYmICFsb2ctPmlzU2Vzc2lvbk9wZW4pOworKyAgICBERV9BU1NFUlQobG9n
ICYmICFsb2ctPmlzU2Vzc2lvbk9wZW4pOworIAorLQkvKiBXcml0ZSBzZXNzaW9uIGluZm8uICov
CistCWZwcmludGYobG9nLT5vdXRwdXRGaWxlLCAiI3Nlc3Npb25JbmZvIHJlbGVhc2VOYW1lICVz
XG4iLCBxcEdldFJlbGVhc2VOYW1lKCkpOworLQlmcHJpbnRmKGxvZy0+b3V0cHV0RmlsZSwgIiNz
ZXNzaW9uSW5mbyByZWxlYXNlSWQgMHglMDh4XG4iLCBxcEdldFJlbGVhc2VJZCgpKTsKKy0JZnBy
aW50Zihsb2ctPm91dHB1dEZpbGUsICIjc2Vzc2lvbkluZm8gdGFyZ2V0TmFtZSBcIiVzXCJcbiIs
IHFwR2V0VGFyZ2V0TmFtZSgpKTsKKysgICAgLyogV3JpdGUgc2Vzc2lvbiBpbmZvLiAqLworKyAg
ICBmcHJpbnRmKGxvZy0+b3V0cHV0RmlsZSwgIiNzZXNzaW9uSW5mbyByZWxlYXNlTmFtZSAlc1xu
IiwgcXBHZXRSZWxlYXNlTmFtZSgpKTsKKysgICAgZnByaW50Zihsb2ctPm91dHB1dEZpbGUsICIj
c2Vzc2lvbkluZm8gcmVsZWFzZUlkIDB4JTA4eFxuIiwgcXBHZXRSZWxlYXNlSWQoKSk7CisrICAg
IGZwcmludGYobG9nLT5vdXRwdXRGaWxlLCAiI3Nlc3Npb25JbmZvIHRhcmdldE5hbWUgXCIlc1wi
XG4iLCBxcEdldFRhcmdldE5hbWUoKSk7CisgCisgICAgIC8qIFdyaXRlIG91dCAjYmVnaW5TZXNz
aW9uLiAqLworLQlmcHJpbnRmKGxvZy0+b3V0cHV0RmlsZSwgIiNiZWdpblNlc3Npb25cbiIpOwor
LQlxcFRlc3RMb2dfZmx1c2hGaWxlKGxvZyk7CisrICAgIGZwcmludGYobG9nLT5vdXRwdXRGaWxl
LCAiI2JlZ2luU2Vzc2lvblxuIik7CisrICAgIHFwVGVzdExvZ19mbHVzaEZpbGUobG9nKTsKKyAK
Ky0JbG9nLT5pc1Nlc3Npb25PcGVuID0gREVfVFJVRTsKKysgICAgbG9nLT5pc1Nlc3Npb25PcGVu
ID0gREVfVFJVRTsKKyAKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIHJldHVybiBERV9UUlVFOwor
IH0KKyAKKyBzdGF0aWMgZGVCb29sIGVuZFNlc3Npb24gKHFwVGVzdExvZyogbG9nKQorIHsKKy0J
REVfQVNTRVJUKGxvZyAmJiBsb2ctPmlzU2Vzc2lvbk9wZW4pOworKyAgICBERV9BU1NFUlQobG9n
ICYmIGxvZy0+aXNTZXNzaW9uT3Blbik7CisgCisgICAgIC8qIE1ha2Ugc3VyZSB4bWwgaXMgZmx1
c2hlZC4gKi8KKyAgICAgcXBYbWxXcml0ZXJfZmx1c2gobG9nLT53cml0ZXIpOworIAorICAgICAv
KiBXcml0ZSBvdXQgI2VuZFNlc3Npb24uICovCistCWZwcmludGYobG9nLT5vdXRwdXRGaWxlLCAi
XG4jZW5kU2Vzc2lvblxuIik7CistCXFwVGVzdExvZ19mbHVzaEZpbGUobG9nKTsKKysgICAgZnBy
aW50Zihsb2ctPm91dHB1dEZpbGUsICJcbiNlbmRTZXNzaW9uXG4iKTsKKysgICAgcXBUZXN0TG9n
X2ZsdXNoRmlsZShsb2cpOworIAorLQlsb2ctPmlzU2Vzc2lvbk9wZW4gPSBERV9GQUxTRTsKKysg
ICAgbG9nLT5pc1Nlc3Npb25PcGVuID0gREVfRkFMU0U7CisgCistCXJldHVybiBERV9UUlVFOwor
KyAgICByZXR1cm4gREVfVFJVRTsKKyB9CisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyohCitAQCAtMzMw
LDExNyArMzMwLDExNyBAQCBzdGF0aWMgZGVCb29sIGVuZFNlc3Npb24gKHFwVGVzdExvZyogbG9n
KQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIHFwVGVzdExvZyogcXBUZXN0TG9nX2NyZWF0ZUZpbGVM
b2cgKGNvbnN0IGNoYXIqIGZpbGVOYW1lLCBkZVVpbnQzMiBmbGFncykKKyB7CistCXFwVGVzdExv
ZyogbG9nID0gKHFwVGVzdExvZyopZGVDYWxsb2Moc2l6ZW9mKHFwVGVzdExvZykpOworLQlpZiAo
IWxvZykKKy0JCXJldHVybiBERV9OVUxMOworKyAgICBxcFRlc3RMb2cqIGxvZyA9IChxcFRlc3RM
b2cqKWRlQ2FsbG9jKHNpemVvZihxcFRlc3RMb2cpKTsKKysgICAgaWYgKCFsb2cpCisrICAgICAg
ICByZXR1cm4gREVfTlVMTDsKKyAKKy0JREVfQVNTRVJUKGZpbGVOYW1lICYmIGZpbGVOYW1lWzBd
KTsgLyogbXVzdCBoYXZlIGZpbGVuYW1lLiAqLworKyAgICBERV9BU1NFUlQoZmlsZU5hbWUgJiYg
ZmlsZU5hbWVbMF0pOyAvKiBtdXN0IGhhdmUgZmlsZW5hbWUuICovCisgCisgI2lmIGRlZmluZWQo
REVfREVCVUcpCistCUNvbnRhaW5lclN0YWNrX3Jlc2V0KCZsb2ctPmNvbnRhaW5lclN0YWNrKTsK
KysgICAgQ29udGFpbmVyU3RhY2tfcmVzZXQoJmxvZy0+Y29udGFpbmVyU3RhY2spOworICNlbmRp
ZgorIAorLQlxcFByaW50ZigiV3JpdGluZyB0ZXN0IGxvZyBpbnRvICVzXG4iLCBmaWxlTmFtZSk7
CistCistCS8qIENyZWF0ZSBvdXRwdXQgZmlsZS4gKi8KKy0JbG9nLT5vdXRwdXRGaWxlID0gZm9w
ZW4oZmlsZU5hbWUsICJ3YiIpOworLQlpZiAoIWxvZy0+b3V0cHV0RmlsZSkKKy0JeworLQkJcXBQ
cmludGYoIkVSUk9SOiBVbmFibGUgdG8gb3BlbiB0ZXN0IGxvZyBvdXRwdXQgZmlsZSAnJXMnLlxu
IiwgZmlsZU5hbWUpOworLQkJcXBUZXN0TG9nX2Rlc3Ryb3kobG9nKTsKKy0JCXJldHVybiBERV9O
VUxMOworLQl9CistCistCWxvZy0+ZmxhZ3MJCQk9IGZsYWdzOworLQlsb2ctPndyaXRlcgkJCT0g
cXBYbWxXcml0ZXJfY3JlYXRlRmlsZVdyaXRlcihsb2ctPm91dHB1dEZpbGUsIDAsICEoZmxhZ3Mg
JiBRUF9URVNUX0xPR19OT19GTFVTSCkpOworLQlsb2ctPmxvY2sJCQk9IGRlTXV0ZXhfY3JlYXRl
KERFX05VTEwpOworLQlsb2ctPmlzU2Vzc2lvbk9wZW4JPSBERV9GQUxTRTsKKy0JbG9nLT5pc0Nh
c2VPcGVuCQk9IERFX0ZBTFNFOworLQorLQlpZiAoIWxvZy0+d3JpdGVyKQorLQl7CistCQlxcFBy
aW50ZigiRVJST1I6IFVuYWJsZSB0byBjcmVhdGUgb3V0cHV0IFhNTCB3cml0ZXIgdG8gZmlsZSAn
JXMnLlxuIiwgZmlsZU5hbWUpOworLQkJcXBUZXN0TG9nX2Rlc3Ryb3kobG9nKTsKKy0JCXJldHVy
biBERV9OVUxMOworLQl9CistCistCWlmICghbG9nLT5sb2NrKQorLQl7CistCQlxcFByaW50Zigi
RVJST1I6IFVuYWJsZSB0byBjcmVhdGUgbXV0ZXguXG4iKTsKKy0JCXFwVGVzdExvZ19kZXN0cm95
KGxvZyk7CistCQlyZXR1cm4gREVfTlVMTDsKKy0JfQorLQorLQliZWdpblNlc3Npb24obG9nKTsK
Ky0KKy0JcmV0dXJuIGxvZzsKKysgICAgcXBQcmludGYoIldyaXRpbmcgdGVzdCBsb2cgaW50byAl
c1xuIiwgZmlsZU5hbWUpOworKworKyAgICAvKiBDcmVhdGUgb3V0cHV0IGZpbGUuICovCisrICAg
IGxvZy0+b3V0cHV0RmlsZSA9IGZvcGVuKGZpbGVOYW1lLCAid2IiKTsKKysgICAgaWYgKCFsb2ct
Pm91dHB1dEZpbGUpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRmKCJFUlJPUjogVW5hYmxlIHRv
IG9wZW4gdGVzdCBsb2cgb3V0cHV0IGZpbGUgJyVzJy5cbiIsIGZpbGVOYW1lKTsKKysgICAgICAg
IHFwVGVzdExvZ19kZXN0cm95KGxvZyk7CisrICAgICAgICByZXR1cm4gREVfTlVMTDsKKysgICAg
fQorKworKyAgICBsb2ctPmZsYWdzICAgICAgICAgID0gZmxhZ3M7CisrICAgIGxvZy0+d3JpdGVy
ICAgICAgICAgPSBxcFhtbFdyaXRlcl9jcmVhdGVGaWxlV3JpdGVyKGxvZy0+b3V0cHV0RmlsZSwg
MCwgIShmbGFncyAmIFFQX1RFU1RfTE9HX05PX0ZMVVNIKSk7CisrICAgIGxvZy0+bG9jayAgICAg
ICAgICAgPSBkZU11dGV4X2NyZWF0ZShERV9OVUxMKTsKKysgICAgbG9nLT5pc1Nlc3Npb25PcGVu
ICA9IERFX0ZBTFNFOworKyAgICBsb2ctPmlzQ2FzZU9wZW4gICAgID0gREVfRkFMU0U7CisrCisr
ICAgIGlmICghbG9nLT53cml0ZXIpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRmKCJFUlJPUjog
VW5hYmxlIHRvIGNyZWF0ZSBvdXRwdXQgWE1MIHdyaXRlciB0byBmaWxlICclcycuXG4iLCBmaWxl
TmFtZSk7CisrICAgICAgICBxcFRlc3RMb2dfZGVzdHJveShsb2cpOworKyAgICAgICAgcmV0dXJu
IERFX05VTEw7CisrICAgIH0KKysKKysgICAgaWYgKCFsb2ctPmxvY2spCisrICAgIHsKKysgICAg
ICAgIHFwUHJpbnRmKCJFUlJPUjogVW5hYmxlIHRvIGNyZWF0ZSBtdXRleC5cbiIpOworKyAgICAg
ICAgcXBUZXN0TG9nX2Rlc3Ryb3kobG9nKTsKKysgICAgICAgIHJldHVybiBERV9OVUxMOworKyAg
ICB9CisrCisrICAgIGJlZ2luU2Vzc2lvbihsb2cpOworKworKyAgICByZXR1cm4gbG9nOworIH0K
KyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKKyAgKiBcYnJpZWYgRGVzdHJveSBhIGxvZ2dlciBpbnN0
YW5jZQorLSAqIFxwYXJhbSBhCXFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxwYXJhbSBhIHFwVGVz
dExvZyBpbnN0YW5jZQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIHZvaWQgcXBUZXN0TG9nX2Rlc3Ry
b3kgKHFwVGVzdExvZyogbG9nKQorIHsKKy0JREVfQVNTRVJUKGxvZyk7CisrICAgIERFX0FTU0VS
VChsb2cpOworIAorLQlpZiAobG9nLT5pc1Nlc3Npb25PcGVuKQorLQkJZW5kU2Vzc2lvbihsb2cp
OworKyAgICBpZiAobG9nLT5pc1Nlc3Npb25PcGVuKQorKyAgICAgICAgZW5kU2Vzc2lvbihsb2cp
OworIAorLQlpZiAobG9nLT53cml0ZXIpCistCQlxcFhtbFdyaXRlcl9kZXN0cm95KGxvZy0+d3Jp
dGVyKTsKKysgICAgaWYgKGxvZy0+d3JpdGVyKQorKyAgICAgICAgcXBYbWxXcml0ZXJfZGVzdHJv
eShsb2ctPndyaXRlcik7CisgCistCWlmIChsb2ctPm91dHB1dEZpbGUpCistCQlmY2xvc2UobG9n
LT5vdXRwdXRGaWxlKTsKKysgICAgaWYgKGxvZy0+b3V0cHV0RmlsZSkKKysgICAgICAgIGZjbG9z
ZShsb2ctPm91dHB1dEZpbGUpOworIAorLQlpZiAobG9nLT5sb2NrKQorLQkJZGVNdXRleF9kZXN0
cm95KGxvZy0+bG9jayk7CisrICAgIGlmIChsb2ctPmxvY2spCisrICAgICAgICBkZU11dGV4X2Rl
c3Ryb3kobG9nLT5sb2NrKTsKKyAKKy0JZGVGcmVlKGxvZyk7CisrICAgIGRlRnJlZShsb2cpOwor
IH0KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKKyAgKiBcYnJpZWYgTG9nIHN0YXJ0IG9mIHRlc3Qg
Y2FzZQorICAqIFxwYXJhbSBsb2cgcXBUZXN0TG9nIGluc3RhbmNlCistICogXHBhcmFtIHRlc3RD
YXNlUGF0aAlGdWxsIHRlc3QgY2FzZSBwYXRoIChhcyBzZWVuIGluIENhbmR5KS4KKy0gKiBccGFy
YW0gdGVzdENhc2VUeXBlCVRlc3QgY2FzZSB0eXBlCisrICogXHBhcmFtIHRlc3RDYXNlUGF0aCAg
RnVsbCB0ZXN0IGNhc2UgcGF0aCAoYXMgc2VlbiBpbiBDYW5keSkuCisrICogXHBhcmFtIHRlc3RD
YXNlVHlwZSAgVGVzdCBjYXNlIHR5cGUKKyAgKiBccmV0dXJuIHRydWUgaWYgb2ssIGZhbHNlIG90
aGVyd2lzZQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIGRlQm9vbCBxcFRlc3RMb2dfc3RhcnRDYXNl
IChxcFRlc3RMb2cqIGxvZywgY29uc3QgY2hhciogdGVzdENhc2VQYXRoLCBxcFRlc3RDYXNlVHlw
ZSB0ZXN0Q2FzZVR5cGUpCisgeworLQljb25zdCBjaGFyKgkJdHlwZVN0cgkJCQk9IFFQX0xPT0tV
UF9TVFJJTkcoc19xcFRlc3RUeXBlTWFwLCB0ZXN0Q2FzZVR5cGUpOworLQlpbnQJCQkJbnVtUmVz
dWx0QXR0cmlicwk9IDA7CistCXFwWG1sQXR0cmlidXRlCXJlc3VsdEF0dHJpYnNbOF07CisrICAg
IGNvbnN0IGNoYXIqICAgICB0eXBlU3RyICAgICAgICAgICAgID0gUVBfTE9PS1VQX1NUUklORyhz
X3FwVGVzdFR5cGVNYXAsIHRlc3RDYXNlVHlwZSk7CisrICAgIGludCAgICAgICAgICAgICBudW1S
ZXN1bHRBdHRyaWJzICAgID0gMDsKKysgICAgcXBYbWxBdHRyaWJ1dGUgIHJlc3VsdEF0dHJpYnNb
OF07CisgCistCURFX0FTU0VSVChsb2cgJiYgdGVzdENhc2VQYXRoICYmICh0ZXN0Q2FzZVBhdGhb
MF0gIT0gMCkpOworLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxv
ZyAmJiB0ZXN0Q2FzZVBhdGggJiYgKHRlc3RDYXNlUGF0aFswXSAhPSAwKSk7CisrICAgIGRlTXV0
ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlERV9BU1NFUlQoIWxvZy0+aXNDYXNlT3Blbik7Cist
CURFX0FTU0VSVChDb250YWluZXJTdGFja19pc0VtcHR5KCZsb2ctPmNvbnRhaW5lclN0YWNrKSk7
CisrICAgIERFX0FTU0VSVCghbG9nLT5pc0Nhc2VPcGVuKTsKKysgICAgREVfQVNTRVJUKENvbnRh
aW5lclN0YWNrX2lzRW1wdHkoJmxvZy0+Y29udGFpbmVyU3RhY2spKTsKKyAKKy0JLyogRmx1c2gg
WE1MIGFuZCB3cml0ZSBvdXQgI2JlZ2luVGVzdENhc2VSZXN1bHQuICovCistCXFwWG1sV3JpdGVy
X2ZsdXNoKGxvZy0+d3JpdGVyKTsKKy0JZnByaW50Zihsb2ctPm91dHB1dEZpbGUsICJcbiNiZWdp
blRlc3RDYXNlUmVzdWx0ICVzXG4iLCB0ZXN0Q2FzZVBhdGgpOworLQlpZiAoIShsb2ctPmZsYWdz
ICYgUVBfVEVTVF9MT0dfTk9fRkxVU0gpKQorLQkJcXBUZXN0TG9nX2ZsdXNoRmlsZShsb2cpOwor
LQorLQlsb2ctPmlzQ2FzZU9wZW4gPSBERV9UUlVFOworLQorLQkvKiBGaWxsIGluIGF0dHJpYnV0
ZXMuICovCistCXJlc3VsdEF0dHJpYnNbbnVtUmVzdWx0QXR0cmlicysrXSA9IHFwU2V0U3RyaW5n
QXR0cmliKCJWZXJzaW9uIiwgTE9HX0ZPUk1BVF9WRVJTSU9OKTsKKy0JcmVzdWx0QXR0cmlic1tu
dW1SZXN1bHRBdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkNhc2VQYXRoIiwgdGVzdENh
c2VQYXRoKTsKKy0JcmVzdWx0QXR0cmlic1tudW1SZXN1bHRBdHRyaWJzKytdID0gcXBTZXRTdHJp
bmdBdHRyaWIoIkNhc2VUeXBlIiwgdHlwZVN0cik7CistCistCWlmICghcXBYbWxXcml0ZXJfc3Rh
cnREb2N1bWVudChsb2ctPndyaXRlcikgfHwKKy0JCSFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQo
bG9nLT53cml0ZXIsICJUZXN0Q2FzZVJlc3VsdCIsIG51bVJlc3VsdEF0dHJpYnMsIHJlc3VsdEF0
dHJpYnMpKQorLQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3N0YXJ0Q2FzZSgpOiBXcml0aW5n
IFhNTCBmYWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVy
biBERV9GQUxTRTsKKy0JfQorLQorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1
cm4gREVfVFJVRTsKKysgICAgLyogRmx1c2ggWE1MIGFuZCB3cml0ZSBvdXQgI2JlZ2luVGVzdENh
c2VSZXN1bHQuICovCisrICAgIHFwWG1sV3JpdGVyX2ZsdXNoKGxvZy0+d3JpdGVyKTsKKysgICAg
ZnByaW50Zihsb2ctPm91dHB1dEZpbGUsICJcbiNiZWdpblRlc3RDYXNlUmVzdWx0ICVzXG4iLCB0
ZXN0Q2FzZVBhdGgpOworKyAgICBpZiAoIShsb2ctPmZsYWdzICYgUVBfVEVTVF9MT0dfTk9fRkxV
U0gpKQorKyAgICAgICAgcXBUZXN0TG9nX2ZsdXNoRmlsZShsb2cpOworKworKyAgICBsb2ctPmlz
Q2FzZU9wZW4gPSBERV9UUlVFOworKworKyAgICAvKiBGaWxsIGluIGF0dHJpYnV0ZXMuICovCisr
ICAgIHJlc3VsdEF0dHJpYnNbbnVtUmVzdWx0QXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmli
KCJWZXJzaW9uIiwgTE9HX0ZPUk1BVF9WRVJTSU9OKTsKKysgICAgcmVzdWx0QXR0cmlic1tudW1S
ZXN1bHRBdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkNhc2VQYXRoIiwgdGVzdENhc2VQ
YXRoKTsKKysgICAgcmVzdWx0QXR0cmlic1tudW1SZXN1bHRBdHRyaWJzKytdID0gcXBTZXRTdHJp
bmdBdHRyaWIoIkNhc2VUeXBlIiwgdHlwZVN0cik7CisrCisrICAgIGlmICghcXBYbWxXcml0ZXJf
c3RhcnREb2N1bWVudChsb2ctPndyaXRlcikgfHwKKysgICAgICAgICFxcFhtbFdyaXRlcl9zdGFy
dEVsZW1lbnQobG9nLT53cml0ZXIsICJUZXN0Q2FzZVJlc3VsdCIsIG51bVJlc3VsdEF0dHJpYnMs
IHJlc3VsdEF0dHJpYnMpKQorKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX3N0
YXJ0Q2FzZSgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91bmxv
Y2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorKworKyAg
ICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9Cisg
CisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovLyohCitAQCAtNDUyLDYwMCArNDUyLDYwMCBAQCBkZUJvb2wgcXBU
ZXN0TG9nX3N0YXJ0Q2FzZSAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIHRlc3RDYXNlUGF0
aCwgcXBUZXN0Q2FzZQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIGRlQm9vbCBxcFRlc3RMb2dfZW5k
Q2FzZSAocXBUZXN0TG9nKiBsb2csIHFwVGVzdFJlc3VsdCByZXN1bHQsIGNvbnN0IGNoYXIqIHJl
c3VsdERldGFpbHMpCisgeworLQljb25zdCBjaGFyKgkJc3RhdHVzU3RyCQk9IFFQX0xPT0tVUF9T
VFJJTkcoc19xcFRlc3RSZXN1bHRNYXAsIHJlc3VsdCk7CistCXFwWG1sQXR0cmlidXRlCXN0YXR1
c0F0dHJpYgk9IHFwU2V0U3RyaW5nQXR0cmliKCJTdGF0dXNDb2RlIiwgc3RhdHVzU3RyKTsKKy0K
Ky0JZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CistCistCURFX0FTU0VSVChsb2ctPmlzQ2FzZU9w
ZW4pOworLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfaXNFbXB0eSgmbG9nLT5jb250YWluZXJT
dGFjaykpOworLQorLQkvKiA8UmVzdWx0IFN0YXR1c0NvZGU9IlBhc3MiPlJlc3VsdCBkZXRhaWxz
PC9SZXN1bHQ+CistCSAqIDwvVGVzdENhc2VSZXN1bHQ+CistCSAqLworLQlpZiAoIXFwWG1sV3Jp
dGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwgIlJlc3VsdCIsIDEsICZzdGF0dXNBdHRyaWIp
IHx8CistCQkocmVzdWx0RGV0YWlscyAmJiAhcXBYbWxXcml0ZXJfd3JpdGVTdHJpbmcobG9nLT53
cml0ZXIsIHJlc3VsdERldGFpbHMpKSB8fAorLQkJIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9n
LT53cml0ZXIsICJSZXN1bHQiKSB8fAorLQkJIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53
cml0ZXIsICJUZXN0Q2FzZVJlc3VsdCIpIHx8CistCQkhcXBYbWxXcml0ZXJfZW5kRG9jdW1lbnQo
bG9nLT53cml0ZXIpKQkJLyogQ2xvc2UgYW55IFhNTCBlbGVtZW50cyBzdGlsbCBvcGVuICovCist
CXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfZW5kQ2FzZSgpOiBXcml0aW5nIFhNTCBmYWlsZWRc
biIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9GQUxTRTsK
Ky0JfQorLQorLQkvKiBGbHVzaCBYTUwgYW5kIHdyaXRlICNlbmRUZXN0Q2FzZVJlc3VsdC4gKi8K
Ky0JcXBYbWxXcml0ZXJfZmx1c2gobG9nLT53cml0ZXIpOworLQlmcHJpbnRmKGxvZy0+b3V0cHV0
RmlsZSwgIlxuI2VuZFRlc3RDYXNlUmVzdWx0XG4iKTsKKy0JaWYgKCEobG9nLT5mbGFncyAmIFFQ
X1RFU1RfTE9HX05PX0ZMVVNIKSkKKy0JCXFwVGVzdExvZ19mbHVzaEZpbGUobG9nKTsKKy0KKy0J
bG9nLT5pc0Nhc2VPcGVuID0gREVfRkFMU0U7CistCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9j
ayk7CistCXJldHVybiBERV9UUlVFOworKyAgICBjb25zdCBjaGFyKiAgICAgc3RhdHVzU3RyICAg
ICAgID0gUVBfTE9PS1VQX1NUUklORyhzX3FwVGVzdFJlc3VsdE1hcCwgcmVzdWx0KTsKKysgICAg
cXBYbWxBdHRyaWJ1dGUgIHN0YXR1c0F0dHJpYiAgICA9IHFwU2V0U3RyaW5nQXR0cmliKCJTdGF0
dXNDb2RlIiwgc3RhdHVzU3RyKTsKKysKKysgICAgZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7Cisr
CisrICAgIERFX0FTU0VSVChsb2ctPmlzQ2FzZU9wZW4pOworKyAgICBERV9BU1NFUlQoQ29udGFp
bmVyU3RhY2tfaXNFbXB0eSgmbG9nLT5jb250YWluZXJTdGFjaykpOworKworKyAgICAvKiA8UmVz
dWx0IFN0YXR1c0NvZGU9IlBhc3MiPlJlc3VsdCBkZXRhaWxzPC9SZXN1bHQ+CisrICAgICAqIDwv
VGVzdENhc2VSZXN1bHQ+CisrICAgICAqLworKyAgICBpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxl
bWVudChsb2ctPndyaXRlciwgIlJlc3VsdCIsIDEsICZzdGF0dXNBdHRyaWIpIHx8CisrICAgICAg
ICAocmVzdWx0RGV0YWlscyAmJiAhcXBYbWxXcml0ZXJfd3JpdGVTdHJpbmcobG9nLT53cml0ZXIs
IHJlc3VsdERldGFpbHMpKSB8fAorKyAgICAgICAgIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9n
LT53cml0ZXIsICJSZXN1bHQiKSB8fAorKyAgICAgICAgIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQo
bG9nLT53cml0ZXIsICJUZXN0Q2FzZVJlc3VsdCIpIHx8CisrICAgICAgICAhcXBYbWxXcml0ZXJf
ZW5kRG9jdW1lbnQobG9nLT53cml0ZXIpKSAgICAgIC8qIENsb3NlIGFueSBYTUwgZWxlbWVudHMg
c3RpbGwgb3BlbiAqLworKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX2VuZENh
c2UoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxv
Zy0+bG9jayk7CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKysKKysgICAgLyog
Rmx1c2ggWE1MIGFuZCB3cml0ZSAjZW5kVGVzdENhc2VSZXN1bHQuICovCisrICAgIHFwWG1sV3Jp
dGVyX2ZsdXNoKGxvZy0+d3JpdGVyKTsKKysgICAgZnByaW50Zihsb2ctPm91dHB1dEZpbGUsICJc
biNlbmRUZXN0Q2FzZVJlc3VsdFxuIik7CisrICAgIGlmICghKGxvZy0+ZmxhZ3MgJiBRUF9URVNU
X0xPR19OT19GTFVTSCkpCisrICAgICAgICBxcFRlc3RMb2dfZmx1c2hGaWxlKGxvZyk7CisrCisr
ICAgIGxvZy0+aXNDYXNlT3BlbiA9IERFX0ZBTFNFOworKworKyAgICBkZU11dGV4X3VubG9jayhs
b2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9CisgCisgLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
LyohCisgICogXGJyaWVmIEFicnVwdCB0ZXJtaW5hdGlvbiBvZiBsb2dnaW5nLgorLSAqIFxwYXJh
bSBsb2cJCXFwVGVzdExvZyBpbnN0YW5jZQorLSAqIFxwYXJhbSByZXN1bHQJUmVzdWx0IGNvZGUs
IG9ubHkgQ3Jhc2ggYW5kIFRpbWVvdXQgYXJlIGFsbG93ZWQuCisrICogXHBhcmFtIGxvZyAgICAg
ICBxcFRlc3RMb2cgaW5zdGFuY2UKKysgKiBccGFyYW0gcmVzdWx0ICAgIFJlc3VsdCBjb2RlLCBv
bmx5IENyYXNoIGFuZCBUaW1lb3V0IGFyZSBhbGxvd2VkLgorICAqIFxyZXR1cm4gdHJ1ZSBpZiBv
aywgZmFsc2Ugb3RoZXJ3aXNlCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExv
Z190ZXJtaW5hdGVDYXNlIChxcFRlc3RMb2cqIGxvZywgcXBUZXN0UmVzdWx0IHJlc3VsdCkKKyB7
CistCWNvbnN0IGNoYXIqIHJlc3VsdFN0ciA9IFFQX0xPT0tVUF9TVFJJTkcoc19xcFRlc3RSZXN1
bHRNYXAsIHJlc3VsdCk7CisrICAgIGNvbnN0IGNoYXIqIHJlc3VsdFN0ciA9IFFQX0xPT0tVUF9T
VFJJTkcoc19xcFRlc3RSZXN1bHRNYXAsIHJlc3VsdCk7CisgCistCURFX0FTU0VSVChsb2cpOwor
LQlERV9BU1NFUlQocmVzdWx0ID09IFFQX1RFU1RfUkVTVUxUX0NSQVNIIHx8IHJlc3VsdCA9PSBR
UF9URVNUX1JFU1VMVF9USU1FT1VUKTsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAgIERFX0FT
U0VSVChyZXN1bHQgPT0gUVBfVEVTVF9SRVNVTFRfQ1JBU0ggfHwgcmVzdWx0ID09IFFQX1RFU1Rf
UkVTVUxUX1RJTUVPVVQpOworIAorLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgZGVN
dXRleF9sb2NrKGxvZy0+bG9jayk7CisgCistCWlmICghbG9nLT5pc0Nhc2VPcGVuKQorLQl7Cist
CQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNFOyAvKiBTb2Z0
IGVycm9yLiBUaGlzIGlzIGNhbGxlZCBmcm9tIGVycm9yIGhhbmRsZXIuICovCistCX0KKysgICAg
aWYgKCFsb2ctPmlzQ2FzZU9wZW4pCisrICAgIHsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxv
Zy0+bG9jayk7CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7IC8qIFNvZnQgZXJyb3IuIFRoaXMg
aXMgY2FsbGVkIGZyb20gZXJyb3IgaGFuZGxlci4gKi8KKysgICAgfQorIAorLQkvKiBGbHVzaCBY
TUwgYW5kIHdyaXRlICN0ZXJtaW5hdGVUZXN0Q2FzZVJlc3VsdC4gKi8KKy0JcXBYbWxXcml0ZXJf
Zmx1c2gobG9nLT53cml0ZXIpOworLQlmcHJpbnRmKGxvZy0+b3V0cHV0RmlsZSwgIlxuI3Rlcm1p
bmF0ZVRlc3RDYXNlUmVzdWx0ICVzXG4iLCByZXN1bHRTdHIpOworLQlxcFRlc3RMb2dfZmx1c2hG
aWxlKGxvZyk7CisrICAgIC8qIEZsdXNoIFhNTCBhbmQgd3JpdGUgI3Rlcm1pbmF0ZVRlc3RDYXNl
UmVzdWx0LiAqLworKyAgICBxcFhtbFdyaXRlcl9mbHVzaChsb2ctPndyaXRlcik7CisrICAgIGZw
cmludGYobG9nLT5vdXRwdXRGaWxlLCAiXG4jdGVybWluYXRlVGVzdENhc2VSZXN1bHQgJXNcbiIs
IHJlc3VsdFN0cik7CisrICAgIHFwVGVzdExvZ19mbHVzaEZpbGUobG9nKTsKKyAKKy0JbG9nLT5p
c0Nhc2VPcGVuID0gREVfRkFMU0U7CisrICAgIGxvZy0+aXNDYXNlT3BlbiA9IERFX0ZBTFNFOwor
IAorICNpZiBkZWZpbmVkKERFX0RFQlVHKQorLQlDb250YWluZXJTdGFja19yZXNldCgmbG9nLT5j
b250YWluZXJTdGFjayk7CisrICAgIENvbnRhaW5lclN0YWNrX3Jlc2V0KCZsb2ctPmNvbnRhaW5l
clN0YWNrKTsKKyAjZW5kaWYKKyAKKy0JZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0
dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CisrICAgIHJldHVy
biBERV9UUlVFOworIH0KKyAKKyBzdGF0aWMgZGVCb29sIHFwVGVzdExvZ193cml0ZUtleVZhbHVl
UGFpciAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlwdGlvbiwgY29uc3QgY2hhciogdW5pdCwgcXBLZXlW
YWx1ZVRhZyB0YWcsIGNvbnN0IGNoYXIqIHRleHQpCisgeworLQljb25zdCBjaGFyKgkJdGFnU3Ry
aW5nID0gUVBfTE9PS1VQX1NUUklORyhzX3FwVGFnTWFwLCB0YWcpOworLQlxcFhtbEF0dHJpYnV0
ZQlhdHRyaWJzWzhdOworLQlpbnQJCQkJbnVtQXR0cmlicyA9IDA7CistCistCURFX0FTU0VSVChs
b2cgJiYgZWxlbWVudE5hbWUgJiYgdGV4dCk7CistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOwor
LQorLQkvKiBGaWxsIGluIGF0dHJpYnV0ZXMuICovCistCWlmIChuYW1lKQkJCWF0dHJpYnNbbnVt
QXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJOYW1lIiwgbmFtZSk7CistCWlmIChkZXNj
cmlwdGlvbikJYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkRlc2Ny
aXB0aW9uIiwgZGVzY3JpcHRpb24pOworLQlpZiAodGFnU3RyaW5nKQkJYXR0cmlic1tudW1BdHRy
aWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIlRhZyIsIHRhZ1N0cmluZyk7CistCWlmICh1bml0
KQkJCWF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJVbml0IiwgdW5p
dCk7CistCistCWlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCBlbGVt
ZW50TmFtZSwgbnVtQXR0cmlicywgYXR0cmlicykgfHwKKy0JCSFxcFhtbFdyaXRlcl93cml0ZVN0
cmluZyhsb2ctPndyaXRlciwgdGV4dCkgfHwKKy0JCSFxcFhtbFdyaXRlcl9lbmRFbGVtZW50KGxv
Zy0+d3JpdGVyLCBlbGVtZW50TmFtZSkpCistCXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfd3Jp
dGVLZXlWYWx1ZVBhaXIoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKy0JCWRlTXV0ZXhfdW5s
b2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4gREVfRkFMU0U7CistCX0KKy0KKy0JZGVNdXRleF91
bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGNvbnN0IGNoYXIqICAg
ICB0YWdTdHJpbmcgPSBRUF9MT09LVVBfU1RSSU5HKHNfcXBUYWdNYXAsIHRhZyk7CisrICAgIHFw
WG1sQXR0cmlidXRlICBhdHRyaWJzWzhdOworKyAgICBpbnQgICAgICAgICAgICAgbnVtQXR0cmli
cyA9IDA7CisrCisrICAgIERFX0FTU0VSVChsb2cgJiYgZWxlbWVudE5hbWUgJiYgdGV4dCk7Cisr
ICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworKworKyAgICAvKiBGaWxsIGluIGF0dHJpYnV0
ZXMuICovCisrICAgIGlmIChuYW1lKSAgICAgICAgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0g
cXBTZXRTdHJpbmdBdHRyaWIoIk5hbWUiLCBuYW1lKTsKKysgICAgaWYgKGRlc2NyaXB0aW9uKSAg
ICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVzY3JpcHRpb24i
LCBkZXNjcmlwdGlvbik7CisrICAgIGlmICh0YWdTdHJpbmcpICAgICAgYXR0cmlic1tudW1BdHRy
aWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIlRhZyIsIHRhZ1N0cmluZyk7CisrICAgIGlmICh1
bml0KSAgICAgICAgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIo
IlVuaXQiLCB1bml0KTsKKysKKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9n
LT53cml0ZXIsIGVsZW1lbnROYW1lLCBudW1BdHRyaWJzLCBhdHRyaWJzKSB8fAorKyAgICAgICAg
IXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5nKGxvZy0+d3JpdGVyLCB0ZXh0KSB8fAorKyAgICAgICAg
IXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53cml0ZXIsIGVsZW1lbnROYW1lKSkKKysgICAg
eworKyAgICAgICAgcXBQcmludGYoInFwVGVzdExvZ193cml0ZUtleVZhbHVlUGFpcigpOiBXcml0
aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsK
KysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorKworKyAgICBkZU11dGV4X3VubG9j
ayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9CisgCisgLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovLyohCisgICogXGJyaWVmIFdyaXRlIGEgbWVzc2FnZSB0byBvdXRwdXQgbG9nCistICogXHBh
cmFtIGxvZwkJcXBUZXN0TG9nIGluc3RhbmNlCistICogXHBhcmFtIGZvcm1hdAlGb3JtYXQgc3Ry
aW5nIG9mIG1lc3NhZ2UKKy0gKiBccGFyYW0gLi4uCQlQYXJhbWV0ZXJzIGZvciBtZXNzYWdlCisr
ICogXHBhcmFtIGxvZyAgICAgICBxcFRlc3RMb2cgaW5zdGFuY2UKKysgKiBccGFyYW0gZm9ybWF0
ICAgIEZvcm1hdCBzdHJpbmcgb2YgbWVzc2FnZQorKyAqIFxwYXJhbSAuLi4gICAgICAgUGFyYW1l
dGVycyBmb3IgbWVzc2FnZQorICAqIFxyZXR1cm4gdHJ1ZSBpZiBvaywgZmFsc2Ugb3RoZXJ3aXNl
CisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExvZ193cml0ZU1lc3NhZ2UgKHFw
VGVzdExvZyogbG9nLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKKyB7CistCWNoYXIJYnVmZmVy
WzEwMjRdOworLQl2YV9saXN0CWFyZ3M7CisrICAgIGNoYXIgICAgYnVmZmVyWzEwMjRdOworKyAg
ICB2YV9saXN0IGFyZ3M7CisgCistCS8qIFx0b2RvIFtwZXRyaV0gSGFuZGxlIGJ1ZmZlciBvdmVy
Zmxvd3MhICovCisrICAgIC8qIFx0b2RvIFtwZXRyaV0gSGFuZGxlIGJ1ZmZlciBvdmVyZmxvd3Mh
ICovCisgCistCXZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CistCWJ1ZmZlcltERV9MRU5HVEhfT0Zf
QVJSQVkoYnVmZmVyKSAtIDFdID0gMDsKKy0JdnNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksIGZvcm1hdCwgYXJncyk7CistCXZhX2VuZChhcmdzKTsKKysgICAgdmFfc3RhcnQoYXJncywg
Zm9ybWF0KTsKKysgICAgYnVmZmVyW0RFX0xFTkdUSF9PRl9BUlJBWShidWZmZXIpIC0gMV0gPSAw
OworKyAgICB2c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZm9ybWF0LCBhcmdzKTsK
KysgICAgdmFfZW5kKGFyZ3MpOworIAorLQkvKiA8VGV4dD50ZXh0PC9UZXh0PiAqLworLQlyZXR1
cm4gcXBUZXN0TG9nX3dyaXRlS2V5VmFsdWVQYWlyKGxvZywgIlRleHQiLCBERV9OVUxMLCBERV9O
VUxMLCBERV9OVUxMLCBRUF9LRVlfVEFHX0xBU1QsIGJ1ZmZlcik7CisrICAgIC8qIDxUZXh0PnRl
eHQ8L1RleHQ+ICovCisrICAgIHJldHVybiBxcFRlc3RMb2dfd3JpdGVLZXlWYWx1ZVBhaXIobG9n
LCAiVGV4dCIsIERFX05VTEwsIERFX05VTEwsIERFX05VTEwsIFFQX0tFWV9UQUdfTEFTVCwgYnVm
ZmVyKTsKKyB9CisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyohCisgICogXGJyaWVmIFdyaXRlIGtleS12
YWx1ZS1wYWlyIGludG8gbG9nCistICogXHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQor
LSAqIFxwYXJhbSBuYW1lCQkJVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVudHJ5CistICogXHBhcmFt
IGRlc2NyaXB0aW9uCUh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uCistICogXHBhcmFtIHRhZwkJ
CU9wdGlvbmFsIHRhZworLSAqIFxwYXJhbSB2YWx1ZQkJCVZhbHVlIG9mIHRoZSBrZXktdmFsdWUt
cGFpcgorKyAqIFxwYXJhbSBsb2cgICAgICAgICAgIHFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxw
YXJhbSBuYW1lICAgICAgICAgIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBlbnRyeQorKyAqIFxwYXJh
bSBkZXNjcmlwdGlvbiAgIEh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uCisrICogXHBhcmFtIHRh
ZyAgICAgICAgICAgT3B0aW9uYWwgdGFnCisrICogXHBhcmFtIHZhbHVlICAgICAgICAgVmFsdWUg
b2YgdGhlIGtleS12YWx1ZS1wYWlyCisgICogXHJldHVybiB0cnVlIGlmIG9rLCBmYWxzZSBvdGhl
cndpc2UKKyAgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyBkZUJvb2wgcXBUZXN0TG9nX3dyaXRlVGV4dCAo
cXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9u
LCBxcEtleVZhbHVlVGFnIHRhZywgY29uc3QgY2hhciogdGV4dCkKKyB7CistCS8qIDxUZXh0IE5h
bWU9Im5hbWUiIERlc2NyaXB0aW9uPSJkZXNjcmlwdGlvbiIgVGFnPSJ0YWciPnRleHQ8L1RleHQ+
ICovCistCXJldHVybiBxcFRlc3RMb2dfd3JpdGVLZXlWYWx1ZVBhaXIobG9nLCAiVGV4dCIsIG5h
bWUsIGRlc2NyaXB0aW9uLCBERV9OVUxMLCB0YWcsIHRleHQpOworKyAgICAvKiA8VGV4dCBOYW1l
PSJuYW1lIiBEZXNjcmlwdGlvbj0iZGVzY3JpcHRpb24iIFRhZz0idGFnIj50ZXh0PC9UZXh0PiAq
LworKyAgICByZXR1cm4gcXBUZXN0TG9nX3dyaXRlS2V5VmFsdWVQYWlyKGxvZywgIlRleHQiLCBu
YW1lLCBkZXNjcmlwdGlvbiwgREVfTlVMTCwgdGFnLCB0ZXh0KTsKKyB9CisgCisgLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovLyohCisgICogXGJyaWVmIFdyaXRlIGtleS12YWx1ZS1wYWlyIGludG8gbG9nCistICog
XHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQorLSAqIFxwYXJhbSBuYW1lCQkJVW5pcXVl
IGlkZW50aWZpZXIgZm9yIGVudHJ5CistICogXHBhcmFtIGRlc2NyaXB0aW9uCUh1bWFuIHJlYWRh
YmxlIGRlc2NyaXB0aW9uCistICogXHBhcmFtIHRhZwkJCU9wdGlvbmFsIHRhZworLSAqIFxwYXJh
bSB2YWx1ZQkJCVZhbHVlIG9mIHRoZSBrZXktdmFsdWUtcGFpcgorKyAqIFxwYXJhbSBsb2cgICAg
ICAgICAgIHFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxwYXJhbSBuYW1lICAgICAgICAgIFVuaXF1
ZSBpZGVudGlmaWVyIGZvciBlbnRyeQorKyAqIFxwYXJhbSBkZXNjcmlwdGlvbiAgIEh1bWFuIHJl
YWRhYmxlIGRlc2NyaXB0aW9uCisrICogXHBhcmFtIHRhZyAgICAgICAgICAgT3B0aW9uYWwgdGFn
CisrICogXHBhcmFtIHZhbHVlICAgICAgICAgVmFsdWUgb2YgdGhlIGtleS12YWx1ZS1wYWlyCisg
ICogXHJldHVybiB0cnVlIGlmIG9rLCBmYWxzZSBvdGhlcndpc2UKKyAgKi8vKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKyBkZUJvb2wgcXBUZXN0TG9nX3dyaXRlSW50ZWdlciAocXBUZXN0TG9nKiBsb2csIGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiB1bml0LCBx
cEtleVZhbHVlVGFnIHRhZywgZGVJbnQ2NCB2YWx1ZSkKKyB7CistCWNoYXIgdG1wU3RyaW5nWzY0
XTsKKy0JaW50NjRUb1N0cmluZyh2YWx1ZSwgdG1wU3RyaW5nKTsKKysgICAgY2hhciB0bXBTdHJp
bmdbNjRdOworKyAgICBpbnQ2NFRvU3RyaW5nKHZhbHVlLCB0bXBTdHJpbmcpOworIAorLQkvKiA8
TnVtYmVyIE5hbWU9Im5hbWUiIERlc2NyaXB0aW9uPSJkZXNjcmlwdGlvbiIgVGFnPSJQZXJmb3Jt
YW5jZSI+MTU8L051bWJlcj4gKi8KKy0JcmV0dXJuIHFwVGVzdExvZ193cml0ZUtleVZhbHVlUGFp
cihsb2csICJOdW1iZXIiLCBuYW1lLCBkZXNjcmlwdGlvbiwgdW5pdCwgdGFnLCB0bXBTdHJpbmcp
OworKyAgICAvKiA8TnVtYmVyIE5hbWU9Im5hbWUiIERlc2NyaXB0aW9uPSJkZXNjcmlwdGlvbiIg
VGFnPSJQZXJmb3JtYW5jZSI+MTU8L051bWJlcj4gKi8KKysgICAgcmV0dXJuIHFwVGVzdExvZ193
cml0ZUtleVZhbHVlUGFpcihsb2csICJOdW1iZXIiLCBuYW1lLCBkZXNjcmlwdGlvbiwgdW5pdCwg
dGFnLCB0bXBTdHJpbmcpOworIH0KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKKyAgKiBcYnJpZWYg
V3JpdGUga2V5LXZhbHVlLXBhaXIgaW50byBsb2cKKy0gKiBccGFyYW0gbG9nCQkJcXBUZXN0TG9n
IGluc3RhbmNlCistICogXHBhcmFtIG5hbWUJCQlVbmlxdWUgaWRlbnRpZmllciBmb3IgZW50cnkK
Ky0gKiBccGFyYW0gZGVzY3JpcHRpb24JSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24KKy0gKiBc
cGFyYW0gdGFnCQkJT3B0aW9uYWwgdGFnCistICogXHBhcmFtIHZhbHVlCQkJVmFsdWUgb2YgdGhl
IGtleS12YWx1ZS1wYWlyCisrICogXHBhcmFtIGxvZyAgICAgICAgICAgcXBUZXN0TG9nIGluc3Rh
bmNlCisrICogXHBhcmFtIG5hbWUgICAgICAgICAgVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVudHJ5
CisrICogXHBhcmFtIGRlc2NyaXB0aW9uICAgSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24KKysg
KiBccGFyYW0gdGFnICAgICAgICAgICBPcHRpb25hbCB0YWcKKysgKiBccGFyYW0gdmFsdWUgICAg
ICAgICBWYWx1ZSBvZiB0aGUga2V5LXZhbHVlLXBhaXIKKyAgKiBccmV0dXJuIHRydWUgaWYgb2ss
IGZhbHNlIG90aGVyd2lzZQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIGRlQm9vbCBxcFRlc3RMb2df
d3JpdGVGbG9hdCAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIq
IGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiB1bml0LCBxcEtleVZhbHVlVGFnIHRhZywgZmxvYXQg
dmFsdWUpCisgeworLQljaGFyIHRtcFN0cmluZ1s2NF07CistCWZsb2F0VG9TdHJpbmcodmFsdWUs
IHRtcFN0cmluZywgc2l6ZW9mKHRtcFN0cmluZykpOworKyAgICBjaGFyIHRtcFN0cmluZ1s2NF07
CisrICAgIGZsb2F0VG9TdHJpbmcodmFsdWUsIHRtcFN0cmluZywgc2l6ZW9mKHRtcFN0cmluZykp
OworIAorLQkvKiA8TnVtYmVyIE5hbWU9Im5hbWUiIERlc2NyaXB0aW9uPSJkZXNjcmlwdGlvbiIg
VGFnPSJQZXJmb3JtYW5jZSI+MTU8L051bWJlcj4gKi8KKy0JcmV0dXJuIHFwVGVzdExvZ193cml0
ZUtleVZhbHVlUGFpcihsb2csICJOdW1iZXIiLCBuYW1lLCBkZXNjcmlwdGlvbiwgdW5pdCwgdGFn
LCB0bXBTdHJpbmcpOworKyAgICAvKiA8TnVtYmVyIE5hbWU9Im5hbWUiIERlc2NyaXB0aW9uPSJk
ZXNjcmlwdGlvbiIgVGFnPSJQZXJmb3JtYW5jZSI+MTU8L051bWJlcj4gKi8KKysgICAgcmV0dXJu
IHFwVGVzdExvZ193cml0ZUtleVZhbHVlUGFpcihsb2csICJOdW1iZXIiLCBuYW1lLCBkZXNjcmlw
dGlvbiwgdW5pdCwgdGFnLCB0bXBTdHJpbmcpOworIH0KKyAKKyB0eXBlZGVmIHN0cnVjdCBCdWZm
ZXJfcworIHsKKy0Jc2l6ZV90CQljYXBhY2l0eTsKKy0Jc2l6ZV90CQlzaXplOworLQlkZVVpbnQ4
KglkYXRhOworKyAgICBzaXplX3QgICAgICBjYXBhY2l0eTsKKysgICAgc2l6ZV90ICAgICAgc2l6
ZTsKKysgICAgZGVVaW50OCogICAgZGF0YTsKKyB9IEJ1ZmZlcjsKKyAKKyB2b2lkIEJ1ZmZlcl9p
bml0IChCdWZmZXIqIGJ1ZmZlcikKKyB7CistCWJ1ZmZlci0+Y2FwYWNpdHkJPSAwOworLQlidWZm
ZXItPnNpemUJCT0gMDsKKy0JYnVmZmVyLT5kYXRhCQk9IERFX05VTEw7CisrICAgIGJ1ZmZlci0+
Y2FwYWNpdHkgICAgPSAwOworKyAgICBidWZmZXItPnNpemUgICAgICAgID0gMDsKKysgICAgYnVm
ZmVyLT5kYXRhICAgICAgICA9IERFX05VTEw7CisgfQorIAorIHZvaWQgQnVmZmVyX2RlaW5pdCAo
QnVmZmVyKiBidWZmZXIpCisgeworLQlkZUZyZWUoYnVmZmVyLT5kYXRhKTsKKy0JQnVmZmVyX2lu
aXQoYnVmZmVyKTsKKysgICAgZGVGcmVlKGJ1ZmZlci0+ZGF0YSk7CisrICAgIEJ1ZmZlcl9pbml0
KGJ1ZmZlcik7CisgfQorIAorIGRlQm9vbCBCdWZmZXJfcmVzaXplIChCdWZmZXIqIGJ1ZmZlciwg
c2l6ZV90IG5ld1NpemUpCisgeworLQkvKiBHcm93IGJ1ZmZlciBpZiBuZWNlc3NhcnkuICovCist
CWlmIChuZXdTaXplID4gYnVmZmVyLT5jYXBhY2l0eSkKKy0JeworLQkJc2l6ZV90CQluZXdDYXBh
Y2l0eQk9IChzaXplX3QpZGVBbGlnbjMyKGRlTWF4MzIoMiooaW50KWJ1ZmZlci0+Y2FwYWNpdHks
IChpbnQpbmV3U2l6ZSksIDUxMik7CistCQlkZVVpbnQ4KgluZXdEYXRhCQk9IChkZVVpbnQ4Kilk
ZU1hbGxvYyhuZXdDYXBhY2l0eSk7CistCQlpZiAoIW5ld0RhdGEpCistCQkJcmV0dXJuIERFX0ZB
TFNFOworLQorLQkJbWVtY3B5KG5ld0RhdGEsIGJ1ZmZlci0+ZGF0YSwgYnVmZmVyLT5zaXplKTsK
Ky0JCWRlRnJlZShidWZmZXItPmRhdGEpOworLQkJYnVmZmVyLT5kYXRhCQk9IG5ld0RhdGE7Cist
CQlidWZmZXItPmNhcGFjaXR5CT0gbmV3Q2FwYWNpdHk7CistCX0KKy0KKy0JYnVmZmVyLT5zaXpl
ID0gbmV3U2l6ZTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIC8qIEdyb3cgYnVmZmVyIGlmIG5l
Y2Vzc2FyeS4gKi8KKysgICAgaWYgKG5ld1NpemUgPiBidWZmZXItPmNhcGFjaXR5KQorKyAgICB7
CisrICAgICAgICBzaXplX3QgICAgICBuZXdDYXBhY2l0eSA9IChzaXplX3QpZGVBbGlnbjMyKGRl
TWF4MzIoMiooaW50KWJ1ZmZlci0+Y2FwYWNpdHksIChpbnQpbmV3U2l6ZSksIDUxMik7CisrICAg
ICAgICBkZVVpbnQ4KiAgICBuZXdEYXRhICAgICA9IChkZVVpbnQ4KilkZU1hbGxvYyhuZXdDYXBh
Y2l0eSk7CisrICAgICAgICBpZiAoIW5ld0RhdGEpCisrICAgICAgICAgICAgcmV0dXJuIERFX0ZB
TFNFOworKworKyAgICAgICAgbWVtY3B5KG5ld0RhdGEsIGJ1ZmZlci0+ZGF0YSwgYnVmZmVyLT5z
aXplKTsKKysgICAgICAgIGRlRnJlZShidWZmZXItPmRhdGEpOworKyAgICAgICAgYnVmZmVyLT5k
YXRhICAgICAgICA9IG5ld0RhdGE7CisrICAgICAgICBidWZmZXItPmNhcGFjaXR5ICAgID0gbmV3
Q2FwYWNpdHk7CisrICAgIH0KKysKKysgICAgYnVmZmVyLT5zaXplID0gbmV3U2l6ZTsKKysgICAg
cmV0dXJuIERFX1RSVUU7CisgfQorIAorIGRlQm9vbCBCdWZmZXJfYXBwZW5kIChCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgZGVVaW50OCogZGF0YSwgc2l6ZV90IG51bUJ5dGVzKQorIHsKKy0Jc2l6ZV90
IG9mZnNldCA9IGJ1ZmZlci0+c2l6ZTsKKysgICAgc2l6ZV90IG9mZnNldCA9IGJ1ZmZlci0+c2l6
ZTsKKyAKKy0JaWYgKCFCdWZmZXJfcmVzaXplKGJ1ZmZlciwgYnVmZmVyLT5zaXplICsgbnVtQnl0
ZXMpKQorLQkJcmV0dXJuIERFX0ZBTFNFOworKyAgICBpZiAoIUJ1ZmZlcl9yZXNpemUoYnVmZmVy
LCBidWZmZXItPnNpemUgKyBudW1CeXRlcykpCisrICAgICAgICByZXR1cm4gREVfRkFMU0U7Cisg
CistCS8qIEFwcGVuZCBieXRlcy4gKi8KKy0JbWVtY3B5KCZidWZmZXItPmRhdGFbb2Zmc2V0XSwg
ZGF0YSwgbnVtQnl0ZXMpOworLQlyZXR1cm4gREVfVFJVRTsKKysgICAgLyogQXBwZW5kIGJ5dGVz
LiAqLworKyAgICBtZW1jcHkoJmJ1ZmZlci0+ZGF0YVtvZmZzZXRdLCBkYXRhLCBudW1CeXRlcyk7
CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyAjaWYgZGVmaW5lZChRUF9TVVBQT1JUX1BO
RykKKyB2b2lkIHBuZ1dyaXRlRGF0YSAocG5nX3N0cnVjdHAgcG5nLCBwbmdfYnl0ZXAgZGF0YVB0
ciwgcG5nX3NpemVfdCBudW1CeXRlcykKKyB7CistCUJ1ZmZlciogYnVmZmVyID0gKEJ1ZmZlciop
cG5nX2dldF9pb19wdHIocG5nKTsKKy0JaWYgKCFCdWZmZXJfYXBwZW5kKGJ1ZmZlciwgKGNvbnN0
IGRlVWludDgqKWRhdGFQdHIsIG51bUJ5dGVzKSkKKy0JCXBuZ19lcnJvcihwbmcsICJ1bmFibGUg
dG8gcmVzaXplIFBORyB3cml0ZSBidWZmZXIhIik7CisrICAgIEJ1ZmZlciogYnVmZmVyID0gKEJ1
ZmZlciopcG5nX2dldF9pb19wdHIocG5nKTsKKysgICAgaWYgKCFCdWZmZXJfYXBwZW5kKGJ1ZmZl
ciwgKGNvbnN0IGRlVWludDgqKWRhdGFQdHIsIG51bUJ5dGVzKSkKKysgICAgICAgIHBuZ19lcnJv
cihwbmcsICJ1bmFibGUgdG8gcmVzaXplIFBORyB3cml0ZSBidWZmZXIhIik7CisgfQorIAorIHZv
aWQgcG5nRmx1c2hEYXRhIChwbmdfc3RydWN0cCBwbmcpCisgeworLQlERV9VTlJFRihwbmcpOwor
LQkvKiBuYWRhICovCisrICAgIERFX1VOUkVGKHBuZyk7CisrICAgIC8qIG5hZGEgKi8KKyB9Cisg
Cisgc3RhdGljIGRlQm9vbCB3cml0ZUNvbXByZXNzZWRQTkcgKHBuZ19zdHJ1Y3RwIHBuZywgcG5n
X2luZm9wIGluZm8sIHBuZ19ieXRlKiogcm93UG9pbnRlcnMsIGludCB3aWR0aCwgaW50IGhlaWdo
dCwgaW50IGNvbG9yRm9ybWF0KQorIHsKKy0JaWYgKHNldGptcChwbmdfam1wYnVmKHBuZykpID09
IDApCistCXsKKy0JCS8qIFdyaXRlIGRhdGEuICovCistCQlwbmdfc2V0X0lIRFIocG5nLCBpbmZv
LCAocG5nX3VpbnRfMzIpd2lkdGgsIChwbmdfdWludF8zMiloZWlnaHQsCistCQkJOCwKKy0JCQlj
b2xvckZvcm1hdCwKKy0JCQlQTkdfSU5URVJMQUNFX05PTkUsCistCQkJUE5HX0NPTVBSRVNTSU9O
X1RZUEVfQkFTRSwKKy0JCQlQTkdfRklMVEVSX1RZUEVfQkFTRSk7CistCQlwbmdfd3JpdGVfaW5m
byhwbmcsIGluZm8pOworLQkJcG5nX3dyaXRlX2ltYWdlKHBuZywgcm93UG9pbnRlcnMpOworLQkJ
cG5nX3dyaXRlX2VuZChwbmcsIE5VTEwpOworLQorLQkJcmV0dXJuIERFX1RSVUU7CistCX0KKy0J
ZWxzZQorLQkJcmV0dXJuIERFX0ZBTFNFOworKyAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYocG5n
KSkgPT0gMCkKKysgICAgeworKyAgICAgICAgLyogV3JpdGUgZGF0YS4gKi8KKysgICAgICAgIHBu
Z19zZXRfSUhEUihwbmcsIGluZm8sIChwbmdfdWludF8zMil3aWR0aCwgKHBuZ191aW50XzMyKWhl
aWdodCwKKysgICAgICAgICAgICA4LAorKyAgICAgICAgICAgIGNvbG9yRm9ybWF0LAorKyAgICAg
ICAgICAgIFBOR19JTlRFUkxBQ0VfTk9ORSwKKysgICAgICAgICAgICBQTkdfQ09NUFJFU1NJT05f
VFlQRV9CQVNFLAorKyAgICAgICAgICAgIFBOR19GSUxURVJfVFlQRV9CQVNFKTsKKysgICAgICAg
IHBuZ193cml0ZV9pbmZvKHBuZywgaW5mbyk7CisrICAgICAgICBwbmdfd3JpdGVfaW1hZ2UocG5n
LCByb3dQb2ludGVycyk7CisrICAgICAgICBwbmdfd3JpdGVfZW5kKHBuZywgTlVMTCk7CisrCisr
ICAgICAgICByZXR1cm4gREVfVFJVRTsKKysgICAgfQorKyAgICBlbHNlCisrICAgICAgICByZXR1
cm4gREVfRkFMU0U7CisgfQorIAorIHN0YXRpYyBkZUJvb2wgY29tcHJlc3NJbWFnZVBORyAoQnVm
ZmVyKiBidWZmZXIsIHFwSW1hZ2VGb3JtYXQgaW1hZ2VGb3JtYXQsIGludCB3aWR0aCwgaW50IGhl
aWdodCwgaW50IHJvd1N0cmlkZSwgY29uc3Qgdm9pZCogZGF0YSkKKyB7CistCWRlQm9vbAkJCWNv
bXByZXNzT2sJCT0gREVfRkFMU0U7CistCXBuZ19zdHJ1Y3RwCQlwbmcJCQkJPSBERV9OVUxMOwor
LQlwbmdfaW5mb3AJCWluZm8JCQk9IERFX05VTEw7CistCXBuZ19ieXRlKioJCXJvd1BvaW50ZXJz
CQk9IERFX05VTEw7CistCWRlQm9vbAkJCWhhc0FscGhhCQk9IGltYWdlRm9ybWF0ID09IFFQX0lN
QUdFX0ZPUk1BVF9SR0JBODg4ODsKKy0JaW50CQkJCW5keDsKKy0KKy0JLyogSGFuZGxlIGZvcm1h
dC4gKi8KKy0JREVfQVNTRVJUKGltYWdlRm9ybWF0ID09IFFQX0lNQUdFX0ZPUk1BVF9SR0I4ODgg
fHwgaW1hZ2VGb3JtYXQgPT0gUVBfSU1BR0VfRk9STUFUX1JHQkE4ODg4KTsKKy0KKy0JLyogQWxs
b2NhdGUgJiBzZXQgcm93IHBvaW50ZXJzLiAqLworLQlyb3dQb2ludGVycyA9IChwbmdfYnl0ZSoq
KWRlTWFsbG9jKChzaXplX3QpaGVpZ2h0ICogc2l6ZW9mKHBuZ19ieXRlKikpOworLQlpZiAoIXJv
d1BvaW50ZXJzKQorLQkJcmV0dXJuIERFX0ZBTFNFOworLQorLQlmb3IgKG5keCA9IDA7IG5keCA8
IGhlaWdodDsgbmR4KyspCistCQlyb3dQb2ludGVyc1tuZHhdID0gKHBuZ19ieXRlKikoKGNvbnN0
IGRlVWludDgqKWRhdGEgKyBuZHgqcm93U3RyaWRlKTsKKy0KKy0JLyogSW5pdGlhbGl6ZSBQTkcg
Y29tcHJlc3Nvci4gKi8KKy0JcG5nID0gcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3QoUE5HX0xJQlBO
R19WRVJfU1RSSU5HLCBOVUxMLCBOVUxMLCBOVUxMKTsKKy0JaW5mbyA9IHBuZyA/IHBuZ19jcmVh
dGVfaW5mb19zdHJ1Y3QocG5nKSA6IERFX05VTEw7CistCWlmIChwbmcgJiYgaW5mbykKKy0Jewor
LQkJLyogU2V0IG91ciBvd24gd3JpdGUgZnVuY3Rpb24uICovCistCQlwbmdfc2V0X3dyaXRlX2Zu
KHBuZywgYnVmZmVyLCBwbmdXcml0ZURhdGEsIHBuZ0ZsdXNoRGF0YSk7CistCistCQljb21wcmVz
c09rID0gd3JpdGVDb21wcmVzc2VkUE5HKHBuZywgaW5mbywgcm93UG9pbnRlcnMsIHdpZHRoLCBo
ZWlnaHQsCistCQkJCQkJCQkJCWhhc0FscGhhID8gUE5HX0NPTE9SX1RZUEVfUkdCQSA6IFBOR19D
T0xPUl9UWVBFX1JHQik7CistCX0KKy0KKy0JLyogQ2xlYW51cCAmIHJldHVybi4gKi8KKy0JaWYg
KHBuZyAmJiBpbmZvKQorLQl7CistCQlwbmdfZGVzdHJveV9pbmZvX3N0cnVjdChwbmcsICZpbmZv
KTsKKy0JCXBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCgmcG5nLCBERV9OVUxMKTsKKy0JfQorLQll
bHNlIGlmIChwbmcpCistCQlwbmdfZGVzdHJveV93cml0ZV9zdHJ1Y3QoJnBuZywgJmluZm8pOwor
LQorLQlkZUZyZWUocm93UG9pbnRlcnMpOworLQlyZXR1cm4gY29tcHJlc3NPazsKKysgICAgZGVC
b29sICAgICAgICAgIGNvbXByZXNzT2sgICAgICA9IERFX0ZBTFNFOworKyAgICBwbmdfc3RydWN0
cCAgICAgcG5nICAgICAgICAgICAgID0gREVfTlVMTDsKKysgICAgcG5nX2luZm9wICAgICAgIGlu
Zm8gICAgICAgICAgICA9IERFX05VTEw7CisrICAgIHBuZ19ieXRlKiogICAgICByb3dQb2ludGVy
cyAgICAgPSBERV9OVUxMOworKyAgICBkZUJvb2wgICAgICAgICAgaGFzQWxwaGEgICAgICAgID0g
aW1hZ2VGb3JtYXQgPT0gUVBfSU1BR0VfRk9STUFUX1JHQkE4ODg4OworKyAgICBpbnQgICAgICAg
ICAgICAgbmR4OworKworKyAgICAvKiBIYW5kbGUgZm9ybWF0LiAqLworKyAgICBERV9BU1NFUlQo
aW1hZ2VGb3JtYXQgPT0gUVBfSU1BR0VfRk9STUFUX1JHQjg4OCB8fCBpbWFnZUZvcm1hdCA9PSBR
UF9JTUFHRV9GT1JNQVRfUkdCQTg4ODgpOworKworKyAgICAvKiBBbGxvY2F0ZSAmIHNldCByb3cg
cG9pbnRlcnMuICovCisrICAgIHJvd1BvaW50ZXJzID0gKHBuZ19ieXRlKiopZGVNYWxsb2MoKHNp
emVfdCloZWlnaHQgKiBzaXplb2YocG5nX2J5dGUqKSk7CisrICAgIGlmICghcm93UG9pbnRlcnMp
CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrCisrICAgIGZvciAobmR4ID0gMDsgbmR4IDwg
aGVpZ2h0OyBuZHgrKykKKysgICAgICAgIHJvd1BvaW50ZXJzW25keF0gPSAocG5nX2J5dGUqKSgo
Y29uc3QgZGVVaW50OCopZGF0YSArIG5keCpyb3dTdHJpZGUpOworKworKyAgICAvKiBJbml0aWFs
aXplIFBORyBjb21wcmVzc29yLiAqLworKyAgICBwbmcgPSBwbmdfY3JlYXRlX3dyaXRlX3N0cnVj
dChQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIE5VTEwsIE5VTEwsIE5VTEwpOworKyAgICBpbmZvID0g
cG5nID8gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChwbmcpIDogREVfTlVMTDsKKysgICAgaWYgKHBu
ZyAmJiBpbmZvKQorKyAgICB7CisrICAgICAgICAvKiBTZXQgb3VyIG93biB3cml0ZSBmdW5jdGlv
bi4gKi8KKysgICAgICAgIHBuZ19zZXRfd3JpdGVfZm4ocG5nLCBidWZmZXIsIHBuZ1dyaXRlRGF0
YSwgcG5nRmx1c2hEYXRhKTsKKysKKysgICAgICAgIGNvbXByZXNzT2sgPSB3cml0ZUNvbXByZXNz
ZWRQTkcocG5nLCBpbmZvLCByb3dQb2ludGVycywgd2lkdGgsIGhlaWdodCwKKysgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQWxwaGEgPyBQTkdfQ09MT1JfVFlQRV9S
R0JBIDogUE5HX0NPTE9SX1RZUEVfUkdCKTsKKysgICAgfQorKworKyAgICAvKiBDbGVhbnVwICYg
cmV0dXJuLiAqLworKyAgICBpZiAocG5nICYmIGluZm8pCisrICAgIHsKKysgICAgICAgIHBuZ19k
ZXN0cm95X2luZm9fc3RydWN0KHBuZywgJmluZm8pOworKyAgICAgICAgcG5nX2Rlc3Ryb3lfd3Jp
dGVfc3RydWN0KCZwbmcsIERFX05VTEwpOworKyAgICB9CisrICAgIGVsc2UgaWYgKHBuZykKKysg
ICAgICAgIHBuZ19kZXN0cm95X3dyaXRlX3N0cnVjdCgmcG5nLCAmaW5mbyk7CisrCisrICAgIGRl
RnJlZShyb3dQb2ludGVycyk7CisrICAgIHJldHVybiBjb21wcmVzc09rOworIH0KKyAjZW5kaWYg
LyogUVBfU1VQUE9SVF9QTkcgKi8KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKKyAgKiBcYnJpZWYg
U3RhcnQgaW1hZ2Ugc2V0CistICogXHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQorLSAq
IFxwYXJhbSBuYW1lCQkJVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzZXQKKy0gKiBccGFyYW0g
ZGVzY3JpcHRpb24JSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24KKysgKiBccGFyYW0gbG9nICAg
ICAgICAgICBxcFRlc3RMb2cgaW5zdGFuY2UKKysgKiBccGFyYW0gbmFtZSAgICAgICAgICBVbmlx
dWUgaWRlbnRpZmllciBmb3IgdGhlIHNldAorKyAqIFxwYXJhbSBkZXNjcmlwdGlvbiAgIEh1bWFu
IHJlYWRhYmxlIGRlc2NyaXB0aW9uCisgICogXHJldHVybiB0cnVlIGlmIG9rLCBmYWxzZSBvdGhl
cndpc2UKKyAgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyBkZUJvb2wgcXBUZXN0TG9nX3N0YXJ0SW1hZ2VT
ZXQgKHFwVGVzdExvZyogbG9nLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlw
dGlvbikKKyB7CistCXFwWG1sQXR0cmlidXRlCWF0dHJpYnNbNF07CistCWludAkJCQludW1BdHRy
aWJzID0gMDsKKysgICAgcXBYbWxBdHRyaWJ1dGUgIGF0dHJpYnNbNF07CisrICAgIGludCAgICAg
ICAgICAgICBudW1BdHRyaWJzID0gMDsKKyAKKy0JREVfQVNTRVJUKGxvZyAmJiBuYW1lKTsKKy0J
ZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisrICAgIERFX0FTU0VSVChsb2cgJiYgbmFtZSk7Cisr
ICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlhdHRyaWJzW251bUF0dHJpYnMrK10g
PSBxcFNldFN0cmluZ0F0dHJpYigiTmFtZSIsIG5hbWUpOworLQlpZiAoZGVzY3JpcHRpb24pCist
CQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVzY3JpcHRpb24i
LCBkZXNjcmlwdGlvbik7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5n
QXR0cmliKCJOYW1lIiwgbmFtZSk7CisrICAgIGlmIChkZXNjcmlwdGlvbikKKysgICAgICAgIGF0
dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJEZXNjcmlwdGlvbiIsIGRl
c2NyaXB0aW9uKTsKKyAKKy0JLyogPEltYWdlU2V0IE5hbWU9IjxuYW1lPiI+ICovCistCWlmICgh
cXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCAiSW1hZ2VTZXQiLCBudW1BdHRy
aWJzLCBhdHRyaWJzKSkKKy0JeworLQkJcXBQcmludGYoInFwVGVzdExvZ19zdGFydEltYWdlU2V0
KCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2sp
OworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAgIC8qIDxJbWFnZVNldCBOYW1lPSI8bmFt
ZT4iPiAqLworKyAgICBpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwg
IkltYWdlU2V0IiwgbnVtQXR0cmlicywgYXR0cmlicykpCisrICAgIHsKKysgICAgICAgIHFwUHJp
bnRmKCJxcFRlc3RMb2dfc3RhcnRJbWFnZVNldCgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOwor
KyAgICAgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9G
QUxTRTsKKysgICAgfQorIAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5j
b250YWluZXJTdGFjaywgQ09OVEFJTkVSVFlQRV9JTUFHRVNFVCkpOworKyAgICBERV9BU1NFUlQo
Q29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5jb250YWluZXJTdGFjaywgQ09OVEFJTkVSVFlQRV9J
TUFHRVNFVCkpOworIAorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1cm4gREVf
VFJVRTsKKysgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RS
VUU7CisgfQorIAorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQorICAqIFxicmllZiBFbmQgaW1hZ2Ugc2V0
CistICogXHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxwYXJhbSBsb2cgICAg
ICAgICAgIHFwVGVzdExvZyBpbnN0YW5jZQorICAqIFxyZXR1cm4gdHJ1ZSBpZiBvaywgZmFsc2Ug
b3RoZXJ3aXNlCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExvZ19lbmRJbWFn
ZVNldCAocXBUZXN0TG9nKiBsb2cpCisgeworLQlERV9BU1NFUlQobG9nKTsKKy0JZGVNdXRleF9s
b2NrKGxvZy0+bG9jayk7CisrICAgIERFX0FTU0VSVChsb2cpOworKyAgICBkZU11dGV4X2xvY2so
bG9nLT5sb2NrKTsKKyAKKy0JLyogPEltYWdlU2V0IE5hbWU9IjxuYW1lPiI+ICovCistCWlmICgh
cXBYbWxXcml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwgIkltYWdlU2V0IikpCistCXsKKy0J
CXFwUHJpbnRmKCJxcFRlc3RMb2dfZW5kSW1hZ2VTZXQoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4i
KTsKKy0JCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4gREVfRkFMU0U7Cist
CX0KKysgICAgLyogPEltYWdlU2V0IE5hbWU9IjxuYW1lPiI+ICovCisrICAgIGlmICghcXBYbWxX
cml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwgIkltYWdlU2V0IikpCisrICAgIHsKKysgICAg
ICAgIHFwUHJpbnRmKCJxcFRlc3RMb2dfZW5kSW1hZ2VTZXQoKTogV3JpdGluZyBYTUwgZmFpbGVk
XG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CisrICAgICAgICByZXR1
cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX3BvcCgm
bG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9JTUFHRVNFVCk7CisrICAgIERF
X0FTU0VSVChDb250YWluZXJTdGFja19wb3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09IENPTlRB
SU5FUlRZUEVfSU1BR0VTRVQpOworIAorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQly
ZXR1cm4gREVfVFJVRTsKKysgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0
dXJuIERFX1RSVUU7CisgfQorIAorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQorICAqIFxicmllZiBXcml0
ZSBiYXNlNjQgZW5jb2RlZCByYXcgaW1hZ2UgZGF0YSBpbnRvIGxvZworLSAqIFxwYXJhbSBsb2cJ
CQkJcXBUZXN0TG9nIGluc3RhbmNlCistICogXHBhcmFtIG5hbWUJCQkJVW5pcXVlIG5hbWUgKG1h
dGNoaW5nIG5hbWVzIGNhbiBiZSBjb21wYXJlZCBhY3Jvc3MgQmF0Y2hSZXN1bHRzKS4KKy0gKiBc
cGFyYW0gZGVzY3JpcHRpb24JCVRleHR1YWwgZGVzY3JpcHRpb24gKHNob3duIGluIENhbmR5KS4K
Ky0gKiBccGFyYW0gY29tcHJlc3Npb25Nb2RlCUNvbXByZXNzaW9uIG1vZGUKKy0gKiBccGFyYW0g
aW1hZ2VGb3JtYXQJCUNvbG9yIGZvcm1hdAorLSAqIFxwYXJhbSB3aWR0aAkJCQlXaWR0aCBpbiBw
aXhlbHMKKy0gKiBccGFyYW0gaGVpZ2h0CQkJSGVpZ2h0IGluIHBpeGVscworLSAqIFxwYXJhbSBz
dHJpZGUJCQlEYXRhIHN0cmlkZSAob2Zmc2V0IGJldHdlZW4gcm93cykKKy0gKiBccGFyYW0gZGF0
YQkJCQlQb2ludGVyIHRvIHBpeGVsIGRhdGEKKysgKiBccGFyYW0gbG9nICAgICAgICAgICAgICAg
cXBUZXN0TG9nIGluc3RhbmNlCisrICogXHBhcmFtIG5hbWUgICAgICAgICAgICAgIFVuaXF1ZSBu
YW1lIChtYXRjaGluZyBuYW1lcyBjYW4gYmUgY29tcGFyZWQgYWNyb3NzIEJhdGNoUmVzdWx0cyku
CisrICogXHBhcmFtIGRlc2NyaXB0aW9uICAgICAgIFRleHR1YWwgZGVzY3JpcHRpb24gKHNob3du
IGluIENhbmR5KS4KKysgKiBccGFyYW0gY29tcHJlc3Npb25Nb2RlICAgQ29tcHJlc3Npb24gbW9k
ZQorKyAqIFxwYXJhbSBpbWFnZUZvcm1hdCAgICAgICBDb2xvciBmb3JtYXQKKysgKiBccGFyYW0g
d2lkdGggICAgICAgICAgICAgV2lkdGggaW4gcGl4ZWxzCisrICogXHBhcmFtIGhlaWdodCAgICAg
ICAgICAgIEhlaWdodCBpbiBwaXhlbHMKKysgKiBccGFyYW0gc3RyaWRlICAgICAgICAgICAgRGF0
YSBzdHJpZGUgKG9mZnNldCBiZXR3ZWVuIHJvd3MpCisrICogXHBhcmFtIGRhdGEgICAgICAgICAg
ICAgIFBvaW50ZXIgdG8gcGl4ZWwgZGF0YQorICAqIFxyZXR1cm4gMCBpZiBPSywgb3RoZXJ3aXNl
IDwwCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCistZGVCb29sIHFwVGVzdExvZ193cml0ZUltYWdlCSgK
Ky0JcXBUZXN0TG9nKgkJCQlsb2csCistCWNvbnN0IGNoYXIqCQkJCW5hbWUsCistCWNvbnN0IGNo
YXIqCQkJCWRlc2NyaXB0aW9uLAorLQlxcEltYWdlQ29tcHJlc3Npb25Nb2RlCWNvbXByZXNzaW9u
TW9kZSwKKy0JcXBJbWFnZUZvcm1hdAkJCWltYWdlRm9ybWF0LAorLQlpbnQJCQkJCQl3aWR0aCwK
Ky0JaW50CQkJCQkJaGVpZ2h0LAorLQlpbnQJCQkJCQlzdHJpZGUsCistCWNvbnN0IHZvaWQqCQkJ
CWRhdGEpCisteworLQljaGFyCQkJd2lkdGhTdHJbMzJdOworLQljaGFyCQkJaGVpZ2h0U3RyWzMy
XTsKKy0JcXBYbWxBdHRyaWJ1dGUJYXR0cmlic1s4XTsKKy0JaW50CQkJCW51bUF0dHJpYnMJCQk9
IDA7CistCUJ1ZmZlcgkJCWNvbXByZXNzZWRCdWZmZXI7CistCWNvbnN0IHZvaWQqCQl3cml0ZURh
dGFQdHIJCT0gREVfTlVMTDsKKy0Jc2l6ZV90CQkJd3JpdGVEYXRhQnl0ZXMJCT0gfihzaXplX3Qp
MDsKKy0KKy0JREVfQVNTRVJUKGxvZyAmJiBuYW1lKTsKKy0JREVfQVNTRVJUKGRlSW5SYW5nZTMy
KHdpZHRoLCAxLCAxNjM4NCkpOworLQlERV9BU1NFUlQoZGVJblJhbmdlMzIoaGVpZ2h0LCAxLCAx
NjM4NCkpOworLQlERV9BU1NFUlQoZGF0YSk7CistCistCWlmIChsb2ctPmZsYWdzICYgUVBfVEVT
VF9MT0dfRVhDTFVERV9JTUFHRVMpCistCQlyZXR1cm4gREVfVFJVRTsgLyogSW1hZ2Ugbm90IGxv
Z2dlZC4gKi8KKy0KKy0JQnVmZmVyX2luaXQoJmNvbXByZXNzZWRCdWZmZXIpOworLQorLQkvKiBC
RVNUIGNvbXByZXNzaW9uIG1vZGUgZGVmYXVsdHMgdG8gUE5HLiAqLworLQlpZiAoY29tcHJlc3Np
b25Nb2RlID09IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfQkVTVCkKKy0JeworK2RlQm9vbCBx
cFRlc3RMb2dfd3JpdGVJbWFnZSAoCisrICAgIHFwVGVzdExvZyogICAgICAgICAgICAgIGxvZywK
KysgICAgY29uc3QgY2hhciogICAgICAgICAgICAgbmFtZSwKKysgICAgY29uc3QgY2hhciogICAg
ICAgICAgICAgZGVzY3JpcHRpb24sCisrICAgIHFwSW1hZ2VDb21wcmVzc2lvbk1vZGUgIGNvbXBy
ZXNzaW9uTW9kZSwKKysgICAgcXBJbWFnZUZvcm1hdCAgICAgICAgICAgaW1hZ2VGb3JtYXQsCisr
ICAgIGludCAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorKyAgICBpbnQgICAgICAgICAgICAg
ICAgICAgICBoZWlnaHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgICAgIHN0cmlkZSwKKysg
ICAgY29uc3Qgdm9pZCogICAgICAgICAgICAgZGF0YSkKKyt7CisrICAgIGNoYXIgICAgICAgICAg
ICB3aWR0aFN0clszMl07CisrICAgIGNoYXIgICAgICAgICAgICBoZWlnaHRTdHJbMzJdOworKyAg
ICBxcFhtbEF0dHJpYnV0ZSAgYXR0cmlic1s4XTsKKysgICAgaW50ICAgICAgICAgICAgIG51bUF0
dHJpYnMgICAgICAgICAgPSAwOworKyAgICBCdWZmZXIgICAgICAgICAgY29tcHJlc3NlZEJ1ZmZl
cjsKKysgICAgY29uc3Qgdm9pZCogICAgIHdyaXRlRGF0YVB0ciAgICAgICAgPSBERV9OVUxMOwor
KyAgICBzaXplX3QgICAgICAgICAgd3JpdGVEYXRhQnl0ZXMgICAgICA9IH4oc2l6ZV90KTA7Cisr
CisrICAgIERFX0FTU0VSVChsb2cgJiYgbmFtZSk7CisrICAgIERFX0FTU0VSVChkZUluUmFuZ2Uz
Mih3aWR0aCwgMSwgMTYzODQpKTsKKysgICAgREVfQVNTRVJUKGRlSW5SYW5nZTMyKGhlaWdodCwg
MSwgMTYzODQpKTsKKysgICAgREVfQVNTRVJUKGRhdGEpOworKworKyAgICBpZiAobG9nLT5mbGFn
cyAmIFFQX1RFU1RfTE9HX0VYQ0xVREVfSU1BR0VTKQorKyAgICAgICAgcmV0dXJuIERFX1RSVUU7
IC8qIEltYWdlIG5vdCBsb2dnZWQuICovCisrCisrICAgIEJ1ZmZlcl9pbml0KCZjb21wcmVzc2Vk
QnVmZmVyKTsKKysKKysgICAgLyogQkVTVCBjb21wcmVzc2lvbiBtb2RlIGRlZmF1bHRzIHRvIFBO
Ry4gKi8KKysgICAgaWYgKGNvbXByZXNzaW9uTW9kZSA9PSBRUF9JTUFHRV9DT01QUkVTU0lPTl9N
T0RFX0JFU1QpCisrICAgIHsKKyAjaWYgZGVmaW5lZChRUF9TVVBQT1JUX1BORykKKy0JCWNvbXBy
ZXNzaW9uTW9kZSA9IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfUE5HOworKyAgICAgICAgY29t
cHJlc3Npb25Nb2RlID0gUVBfSU1BR0VfQ09NUFJFU1NJT05fTU9ERV9QTkc7CisgI2Vsc2UKKy0J
CWNvbXByZXNzaW9uTW9kZSA9IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTk9ORTsKKysgICAg
ICAgIGNvbXByZXNzaW9uTW9kZSA9IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTk9ORTsKKyAj
ZW5kaWYKKy0JfQorKyAgICB9CisgCisgI2lmIGRlZmluZWQoUVBfU1VQUE9SVF9QTkcpCistCS8q
IFRyeSBzdG9yaW5nIHdpdGggUE5HIGNvbXByZXNzaW9uLiAqLworLQlpZiAoY29tcHJlc3Npb25N
b2RlID09IFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfUE5HKQorLQl7CistCQlkZUJvb2wgY29t
cHJlc3NPayA9IGNvbXByZXNzSW1hZ2VQTkcoJmNvbXByZXNzZWRCdWZmZXIsIGltYWdlRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIGRhdGEpOworLQkJaWYgKGNvbXByZXNzT2spCistCQl7
CistCQkJd3JpdGVEYXRhUHRyCT0gY29tcHJlc3NlZEJ1ZmZlci5kYXRhOworLQkJCXdyaXRlRGF0
YUJ5dGVzCT0gY29tcHJlc3NlZEJ1ZmZlci5zaXplOworLQkJfQorLQkJZWxzZQorLQkJeworLQkJ
CS8qIEZhbGwtYmFjayB0byBkZWZhdWx0IGNvbXByZXNzaW9uLiAqLworLQkJCXFwUHJpbnRmKCJX
QVJOSU5HOiBQTkcgY29tcHJlc3Npb24gZmFpbGVkIC0tIHN0b3JpbmcgaW1hZ2UgdW5jb21wcmVz
c2VkLlxuIik7CistCQkJY29tcHJlc3Npb25Nb2RlCT0gUVBfSU1BR0VfQ09NUFJFU1NJT05fTU9E
RV9OT05FOworLQkJfQorLQl9CisrICAgIC8qIFRyeSBzdG9yaW5nIHdpdGggUE5HIGNvbXByZXNz
aW9uLiAqLworKyAgICBpZiAoY29tcHJlc3Npb25Nb2RlID09IFFQX0lNQUdFX0NPTVBSRVNTSU9O
X01PREVfUE5HKQorKyAgICB7CisrICAgICAgICBkZUJvb2wgY29tcHJlc3NPayA9IGNvbXByZXNz
SW1hZ2VQTkcoJmNvbXByZXNzZWRCdWZmZXIsIGltYWdlRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBz
dHJpZGUsIGRhdGEpOworKyAgICAgICAgaWYgKGNvbXByZXNzT2spCisrICAgICAgICB7CisrICAg
ICAgICAgICAgd3JpdGVEYXRhUHRyICAgID0gY29tcHJlc3NlZEJ1ZmZlci5kYXRhOworKyAgICAg
ICAgICAgIHdyaXRlRGF0YUJ5dGVzICA9IGNvbXByZXNzZWRCdWZmZXIuc2l6ZTsKKysgICAgICAg
IH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICAvKiBGYWxsLWJhY2sg
dG8gZGVmYXVsdCBjb21wcmVzc2lvbi4gKi8KKysgICAgICAgICAgICBxcFByaW50ZigiV0FSTklO
RzogUE5HIGNvbXByZXNzaW9uIGZhaWxlZCAtLSBzdG9yaW5nIGltYWdlIHVuY29tcHJlc3NlZC5c
biIpOworKyAgICAgICAgICAgIGNvbXByZXNzaW9uTW9kZSA9IFFQX0lNQUdFX0NPTVBSRVNTSU9O
X01PREVfTk9ORTsKKysgICAgICAgIH0KKysgICAgfQorICNlbmRpZgorIAorLQkvKiBIYW5kbGUg
aW1hZ2UgY29tcHJlc3Npb24uICovCistCXN3aXRjaCAoY29tcHJlc3Npb25Nb2RlKQorLQl7Cist
CQljYXNlIFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTk9ORToKKy0JCXsKKy0JCQlpbnQgcGl4
ZWxTaXplCQk9IGltYWdlRm9ybWF0ID09IFFQX0lNQUdFX0ZPUk1BVF9SR0I4ODggPyAzIDogNDsK
Ky0JCQlpbnQgcGFja2VkU3RyaWRlCT0gcGl4ZWxTaXplKndpZHRoOworLQorLQkJCWlmIChwYWNr
ZWRTdHJpZGUgPT0gc3RyaWRlKQorLQkJCQl3cml0ZURhdGFQdHIgPSBkYXRhOworLQkJCWVsc2UK
Ky0JCQl7CistCQkJCS8qIE5lZWQgdG8gcmUtcGFjayBwaXhlbHMuICovCistCQkJCWlmIChCdWZm
ZXJfcmVzaXplKCZjb21wcmVzc2VkQnVmZmVyLCAoc2l6ZV90KShwYWNrZWRTdHJpZGUqaGVpZ2h0
KSkpCistCQkJCXsKKy0JCQkJCWludCByb3c7CistCQkJCQlmb3IgKHJvdyA9IDA7IHJvdyA8IGhl
aWdodDsgcm93KyspCistCQkJCQkJbWVtY3B5KCZjb21wcmVzc2VkQnVmZmVyLmRhdGFbcGFja2Vk
U3RyaWRlKnJvd10sICYoKGNvbnN0IGRlVWludDgqKWRhdGEpW3JvdypzdHJpZGVdLCAoc2l6ZV90
KShwaXhlbFNpemUqd2lkdGgpKTsKKy0JCQkJfQorLQkJCQllbHNlCistCQkJCXsKKy0JCQkJCXFw
UHJpbnRmKCJFUlJPUjogRmFpbGVkIHRvIHBhY2sgcGl4ZWxzIGZvciB3cml0aW5nLlxuIik7Cist
CQkJCQlCdWZmZXJfZGVpbml0KCZjb21wcmVzc2VkQnVmZmVyKTsKKy0JCQkJCXJldHVybiBERV9G
QUxTRTsKKy0JCQkJfQorLQkJCX0KKy0KKy0JCQl3cml0ZURhdGFCeXRlcyA9IChzaXplX3QpKHBh
Y2tlZFN0cmlkZSpoZWlnaHQpOworLQkJCWJyZWFrOworLQkJfQorKyAgICAvKiBIYW5kbGUgaW1h
Z2UgY29tcHJlc3Npb24uICovCisrICAgIHN3aXRjaCAoY29tcHJlc3Npb25Nb2RlKQorKyAgICB7
CisrICAgICAgICBjYXNlIFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfTk9ORToKKysgICAgICAg
IHsKKysgICAgICAgICAgICBpbnQgcGl4ZWxTaXplICAgICAgID0gaW1hZ2VGb3JtYXQgPT0gUVBf
SU1BR0VfRk9STUFUX1JHQjg4OCA/IDMgOiA0OworKyAgICAgICAgICAgIGludCBwYWNrZWRTdHJp
ZGUgICAgPSBwaXhlbFNpemUqd2lkdGg7CisrCisrICAgICAgICAgICAgaWYgKHBhY2tlZFN0cmlk
ZSA9PSBzdHJpZGUpCisrICAgICAgICAgICAgICAgIHdyaXRlRGF0YVB0ciA9IGRhdGE7CisrICAg
ICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgLyogTmVlZCB0
byByZS1wYWNrIHBpeGVscy4gKi8KKysgICAgICAgICAgICAgICAgaWYgKEJ1ZmZlcl9yZXNpemUo
JmNvbXByZXNzZWRCdWZmZXIsIChzaXplX3QpKHBhY2tlZFN0cmlkZSpoZWlnaHQpKSkKKysgICAg
ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgaW50IHJvdzsKKysgICAgICAgICAg
ICAgICAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3crKykKKysgICAgICAgICAg
ICAgICAgICAgICAgICBtZW1jcHkoJmNvbXByZXNzZWRCdWZmZXIuZGF0YVtwYWNrZWRTdHJpZGUq
cm93XSwgJigoY29uc3QgZGVVaW50OCopZGF0YSlbcm93KnN0cmlkZV0sIChzaXplX3QpKHBpeGVs
U2l6ZSp3aWR0aCkpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGVsc2UK
KysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgcXBQcmludGYoIkVSUk9S
OiBGYWlsZWQgdG8gcGFjayBwaXhlbHMgZm9yIHdyaXRpbmcuXG4iKTsKKysgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlcl9kZWluaXQoJmNvbXByZXNzZWRCdWZmZXIpOworKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIERFX0ZBTFNFOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg
fQorKworKyAgICAgICAgICAgIHdyaXRlRGF0YUJ5dGVzID0gKHNpemVfdCkocGFja2VkU3RyaWRl
KmhlaWdodCk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisgCisgI2lmIGRlZmlu
ZWQoUVBfU1VQUE9SVF9QTkcpCistCQljYXNlIFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfUE5H
OgorLQkJCURFX0FTU0VSVCh3cml0ZURhdGFQdHIpOyAvKiBBbHJlYWR5IGhhbmRsZWQuICovCist
CQkJYnJlYWs7CisrICAgICAgICBjYXNlIFFQX0lNQUdFX0NPTVBSRVNTSU9OX01PREVfUE5HOgor
KyAgICAgICAgICAgIERFX0FTU0VSVCh3cml0ZURhdGFQdHIpOyAvKiBBbHJlYWR5IGhhbmRsZWQu
ICovCisrICAgICAgICAgICAgYnJlYWs7CisgI2VuZGlmCisgCistCQlkZWZhdWx0OgorLQkJCXFw
UHJpbnRmKCJxcFRlc3RMb2dfd3JpdGVJbWFnZSgpOiBVbmtub3duIGNvbXByZXNzaW9uIG1vZGU6
ICVzXG4iLCBRUF9MT09LVVBfU1RSSU5HKHNfcXBJbWFnZUNvbXByZXNzaW9uTW9kZU1hcCwgY29t
cHJlc3Npb25Nb2RlKSk7CistCQkJQnVmZmVyX2RlaW5pdCgmY29tcHJlc3NlZEJ1ZmZlcik7Cist
CQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CistCistCS8qIEZpbGwgaW4gYXR0cmlidXRlcy4gKi8K
Ky0JaW50MzJUb1N0cmluZyh3aWR0aCwgd2lkdGhTdHIpOworLQlpbnQzMlRvU3RyaW5nKGhlaWdo
dCwgaGVpZ2h0U3RyKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRy
aWIoIk5hbWUiLCBuYW1lKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdB
dHRyaWIoIldpZHRoIiwgd2lkdGhTdHIpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNl
dFN0cmluZ0F0dHJpYigiSGVpZ2h0IiwgaGVpZ2h0U3RyKTsKKy0JYXR0cmlic1tudW1BdHRyaWJz
KytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkZvcm1hdCIsIFFQX0xPT0tVUF9TVFJJTkcoc19xcElt
YWdlRm9ybWF0TWFwLCBpbWFnZUZvcm1hdCkpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBx
cFNldFN0cmluZ0F0dHJpYigiQ29tcHJlc3Npb25Nb2RlIiwgUVBfTE9PS1VQX1NUUklORyhzX3Fw
SW1hZ2VDb21wcmVzc2lvbk1vZGVNYXAsIGNvbXByZXNzaW9uTW9kZSkpOworLQlpZiAoZGVzY3Jp
cHRpb24pIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJEZXNjcmlw
dGlvbiIsIGRlc2NyaXB0aW9uKTsKKy0KKy0JLyogXG5vdGUgTG9nIGxvY2sgaXMgYWNxdWlyZWQg
YWZ0ZXIgY29tcHJlc3Npb24hICovCistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworLQorLQkv
KiA8SW1hZ2UgSUQ9InJlc3VsdCIgTmFtZT0iRm9vYmFyIiBXaWR0aD0iNjQwIiBIZWlnaHQ9IjQ4
MCIgRm9ybWF0PSJSR0I4ODgiIENvbXByZXNzaW9uTW9kZT0iTm9uZSI+YmFzZTY0IGRhdGE8L0lt
YWdlPiAqLworLQlpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwgIklt
YWdlIiwgbnVtQXR0cmlicywgYXR0cmlicykgfHwKKy0JCSFxcFhtbFdyaXRlcl93cml0ZUJhc2U2
NChsb2ctPndyaXRlciwgKGNvbnN0IGRlVWludDgqKXdyaXRlRGF0YVB0ciwgd3JpdGVEYXRhQnl0
ZXMpIHx8CistCQkhcXBYbWxXcml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwgIkltYWdlIikp
CistCXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfd3JpdGVJbWFnZSgpOiBXcml0aW5nIFhNTCBm
YWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCUJ1ZmZlcl9kZWlu
aXQoJmNvbXByZXNzZWRCdWZmZXIpOworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CistCistCWRl
TXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCistCS8qIEZyZWUgY29tcHJlc3NlZCBkYXRhIGlm
IGFsbG9jYXRlZC4gKi8KKy0JQnVmZmVyX2RlaW5pdCgmY29tcHJlc3NlZEJ1ZmZlcik7CistCist
CXJldHVybiBERV9UUlVFOworKyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICBxcFByaW50
ZigicXBUZXN0TG9nX3dyaXRlSW1hZ2UoKTogVW5rbm93biBjb21wcmVzc2lvbiBtb2RlOiAlc1xu
IiwgUVBfTE9PS1VQX1NUUklORyhzX3FwSW1hZ2VDb21wcmVzc2lvbk1vZGVNYXAsIGNvbXByZXNz
aW9uTW9kZSkpOworKyAgICAgICAgICAgIEJ1ZmZlcl9kZWluaXQoJmNvbXByZXNzZWRCdWZmZXIp
OworKyAgICAgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorKworKyAgICAvKiBGaWxs
IGluIGF0dHJpYnV0ZXMuICovCisrICAgIGludDMyVG9TdHJpbmcod2lkdGgsIHdpZHRoU3RyKTsK
KysgICAgaW50MzJUb1N0cmluZyhoZWlnaHQsIGhlaWdodFN0cik7CisrICAgIGF0dHJpYnNbbnVt
QXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJOYW1lIiwgbmFtZSk7CisrICAgIGF0dHJp
YnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJXaWR0aCIsIHdpZHRoU3RyKTsK
KysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkhlaWdodCIs
IGhlaWdodFN0cik7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0
cmliKCJGb3JtYXQiLCBRUF9MT09LVVBfU1RSSU5HKHNfcXBJbWFnZUZvcm1hdE1hcCwgaW1hZ2VG
b3JtYXQpKTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIo
IkNvbXByZXNzaW9uTW9kZSIsIFFQX0xPT0tVUF9TVFJJTkcoc19xcEltYWdlQ29tcHJlc3Npb25N
b2RlTWFwLCBjb21wcmVzc2lvbk1vZGUpKTsKKysgICAgaWYgKGRlc2NyaXB0aW9uKSBhdHRyaWJz
W251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVzY3JpcHRpb24iLCBkZXNjcmlw
dGlvbik7CisrCisrICAgIC8qIFxub3RlIExvZyBsb2NrIGlzIGFjcXVpcmVkIGFmdGVyIGNvbXBy
ZXNzaW9uISAqLworKyAgICBkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysKKysgICAgLyogPElt
YWdlIElEPSJyZXN1bHQiIE5hbWU9IkZvb2JhciIgV2lkdGg9IjY0MCIgSGVpZ2h0PSI0ODAiIEZv
cm1hdD0iUkdCODg4IiBDb21wcmVzc2lvbk1vZGU9Ik5vbmUiPmJhc2U2NCBkYXRhPC9JbWFnZT4g
Ki8KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0ZXIsICJJbWFn
ZSIsIG51bUF0dHJpYnMsIGF0dHJpYnMpIHx8CisrICAgICAgICAhcXBYbWxXcml0ZXJfd3JpdGVC
YXNlNjQobG9nLT53cml0ZXIsIChjb25zdCBkZVVpbnQ4Kil3cml0ZURhdGFQdHIsIHdyaXRlRGF0
YUJ5dGVzKSB8fAorKyAgICAgICAgIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53cml0ZXIs
ICJJbWFnZSIpKQorKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlSW1h
Z2UoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxv
Zy0+bG9jayk7CisrICAgICAgICBCdWZmZXJfZGVpbml0KCZjb21wcmVzc2VkQnVmZmVyKTsKKysg
ICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorKworKyAgICBkZU11dGV4X3VubG9jayhs
b2ctPmxvY2spOworKworKyAgICAvKiBGcmVlIGNvbXByZXNzZWQgZGF0YSBpZiBhbGxvY2F0ZWQu
ICovCisrICAgIEJ1ZmZlcl9kZWluaXQoJmNvbXByZXNzZWRCdWZmZXIpOworKworKyAgICByZXR1
cm4gREVfVFJVRTsKKyB9CisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyohCisgICogXGJyaWVmIFdyaXRl
IGEgT3BlbkdMIEVTIHNoYWRlciBwcm9ncmFtIGludG8gdGhlIGxvZy4KKy0gKiBccGFyYW0gbGlu
a09rCQkJU2hhZGVyIHByb2dyYW0gbGluayByZXN1bHQsIGZhbHNlIG9uIGZhaWx1cmUKKy0gKiBc
cGFyYW0gbGlua0luZm9Mb2cJCUltcGxlbWVudGF0aW9uIHByb3ZpZGVkIGxpbmthZ2UgbG9nCisr
ICogXHBhcmFtIGxpbmtPayAgICAgICAgICAgIFNoYWRlciBwcm9ncmFtIGxpbmsgcmVzdWx0LCBm
YWxzZSBvbiBmYWlsdXJlCisrICogXHBhcmFtIGxpbmtJbmZvTG9nICAgICAgIEltcGxlbWVudGF0
aW9uIHByb3ZpZGVkIGxpbmthZ2UgbG9nCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFw
VGVzdExvZ19zdGFydFNoYWRlclByb2dyYW0gKHFwVGVzdExvZyogbG9nLCBkZUJvb2wgbGlua09r
LCBjb25zdCBjaGFyKiBsaW5rSW5mb0xvZykKKyB7CistCXFwWG1sQXR0cmlidXRlCXByb2dyYW1B
dHRyaWJzWzRdOworLQlpbnQJCQkJbnVtUHJvZ3JhbUF0dHJpYnMgPSAwOworKyAgICBxcFhtbEF0
dHJpYnV0ZSAgcHJvZ3JhbUF0dHJpYnNbNF07CisrICAgIGludCAgICAgICAgICAgICBudW1Qcm9n
cmFtQXR0cmlicyA9IDA7CisgCistCURFX0FTU0VSVChsb2cpOworLQlkZU11dGV4X2xvY2sobG9n
LT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxv
Y2spOworIAorLQlwcm9ncmFtQXR0cmlic1tudW1Qcm9ncmFtQXR0cmlicysrXSA9IHFwU2V0U3Ry
aW5nQXR0cmliKCJMaW5rU3RhdHVzIiwgbGlua09rID8gIk9LIiA6ICJGYWlsIik7CisrICAgIHBy
b2dyYW1BdHRyaWJzW251bVByb2dyYW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkxp
bmtTdGF0dXMiLCBsaW5rT2sgPyAiT0siIDogIkZhaWwiKTsKKyAKKy0JaWYgKCFxcFhtbFdyaXRl
cl9zdGFydEVsZW1lbnQobG9nLT53cml0ZXIsICJTaGFkZXJQcm9ncmFtIiwgbnVtUHJvZ3JhbUF0
dHJpYnMsIHByb2dyYW1BdHRyaWJzKSB8fAorLQkJIXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5nRWxl
bWVudChsb2ctPndyaXRlciwgIkluZm9Mb2ciLCBsaW5rSW5mb0xvZykpCistCXsKKy0JCXFwUHJp
bnRmKCJxcFRlc3RMb2dfc3RhcnRTaGFkZXJQcm9ncmFtKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxu
Iik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNFOwor
LQl9CisrICAgIGlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCAiU2hh
ZGVyUHJvZ3JhbSIsIG51bVByb2dyYW1BdHRyaWJzLCBwcm9ncmFtQXR0cmlicykgfHwKKysgICAg
ICAgICFxcFhtbFdyaXRlcl93cml0ZVN0cmluZ0VsZW1lbnQobG9nLT53cml0ZXIsICJJbmZvTG9n
IiwgbGlua0luZm9Mb2cpKQorKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX3N0
YXJ0U2hhZGVyUHJvZ3JhbSgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVN
dXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAg
fQorIAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5jb250YWluZXJTdGFj
aywgQ09OVEFJTkVSVFlQRV9TSEFERVJQUk9HUkFNKSk7CisrICAgIERFX0FTU0VSVChDb250YWlu
ZXJTdGFja19wdXNoKCZsb2ctPmNvbnRhaW5lclN0YWNrLCBDT05UQUlORVJUWVBFX1NIQURFUlBS
T0dSQU0pKTsKKyAKKy0JZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0dXJuIERFX1RS
VUU7CisrICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CisrICAgIHJldHVybiBERV9UUlVF
OworIH0KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKKyAgKiBcYnJpZWYgRW5kIHNoYWRlciBwcm9n
cmFtCistICogXHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxwYXJhbSBsb2cg
ICAgICAgICAgIHFwVGVzdExvZyBpbnN0YW5jZQorICAqIFxyZXR1cm4gdHJ1ZSBpZiBvaywgZmFs
c2Ugb3RoZXJ3aXNlCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExvZ19lbmRT
aGFkZXJQcm9ncmFtIChxcFRlc3RMb2cqIGxvZykKKyB7CistCURFX0FTU0VSVChsb2cpOworLQlk
ZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAgIGRlTXV0
ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQkvKiA8L1NoYWRlclByb2dyYW0+ICovCistCWlmICgh
cXBYbWxXcml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwgIlNoYWRlclByb2dyYW0iKSkKKy0J
eworLQkJcXBQcmludGYoInFwVGVzdExvZ19lbmRTaGFkZXJQcm9ncmFtKCk6IFdyaXRpbmcgWE1M
IGZhaWxlZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERF
X0ZBTFNFOworLQl9CisrICAgIC8qIDwvU2hhZGVyUHJvZ3JhbT4gKi8KKysgICAgaWYgKCFxcFht
bFdyaXRlcl9lbmRFbGVtZW50KGxvZy0+d3JpdGVyLCAiU2hhZGVyUHJvZ3JhbSIpKQorKyAgICB7
CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX2VuZFNoYWRlclByb2dyYW0oKTogV3JpdGlu
ZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7Cisr
ICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JREVfQVNTRVJUKENvbnRhaW5l
clN0YWNrX3BvcCgmbG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9TSEFERVJQ
Uk9HUkFNKTsKKysgICAgREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX3BvcCgmbG9nLT5jb250YWlu
ZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9TSEFERVJQUk9HUkFNKTsKKyAKKy0JZGVNdXRleF91
bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2Nr
KGxvZy0+bG9jayk7CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyAvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8vKiEKKyAgKiBcYnJpZWYgV3JpdGUgYSBPcGVuR0wgRVMgc2hhZGVyIGludG8gdGhlIGxvZy4K
Ky0gKiBccGFyYW0gdHlwZQkJCQlTaGFkZXIgdHlwZQorLSAqIFxwYXJhbSBzb3VyY2UJCQlTaGFk
ZXIgc291cmNlCistICogXHBhcmFtIGNvbXBpbGVPawkJCVNoYWRlciBjb21waWxhdGlvbiByZXN1
bHQsIGZhbHNlIG9uIGZhaWx1cmUKKy0gKiBccGFyYW0gaW5mb0xvZwkJCUltcGxlbWVudGF0aW9u
IHByb3ZpZGVkIHNoYWRlciBjb21waWxhdGlvbiBsb2cKKysgKiBccGFyYW0gdHlwZSAgICAgICAg
ICAgICAgU2hhZGVyIHR5cGUKKysgKiBccGFyYW0gc291cmNlICAgICAgICAgICAgU2hhZGVyIHNv
dXJjZQorKyAqIFxwYXJhbSBjb21waWxlT2sgICAgICAgICBTaGFkZXIgY29tcGlsYXRpb24gcmVz
dWx0LCBmYWxzZSBvbiBmYWlsdXJlCisrICogXHBhcmFtIGluZm9Mb2cgICAgICAgICAgIEltcGxl
bWVudGF0aW9uIHByb3ZpZGVkIHNoYWRlciBjb21waWxhdGlvbiBsb2cKKyAgKi8vKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KKyBkZUJvb2wgcXBUZXN0TG9nX3dyaXRlU2hhZGVyIChxcFRlc3RMb2cqIGxvZywgcXBT
aGFkZXJUeXBlIHR5cGUsIGNvbnN0IGNoYXIqIHNvdXJjZSwgZGVCb29sIGNvbXBpbGVPaywgY29u
c3QgY2hhciogaW5mb0xvZykKKyB7CistCWNvbnN0IGNoYXIqCQl0YWdOYW1lCQkJCT0gUVBfTE9P
S1VQX1NUUklORyhzX3FwU2hhZGVyVHlwZU1hcCwgdHlwZSk7CistCWNvbnN0IGNoYXIqCQlzb3Vy
Y2VTdHIJCQk9ICgobG9nLT5mbGFncyAmIFFQX1RFU1RfTE9HX0VYQ0xVREVfU0hBREVSX1NPVVJD
RVMpID09IDAgfHwgIWNvbXBpbGVPaykgPyBzb3VyY2UgOiAiIjsKKy0JaW50CQkJCW51bVNoYWRl
ckF0dHJpYnMJPSAwOworLQlxcFhtbEF0dHJpYnV0ZQlzaGFkZXJBdHRyaWJzWzRdOworKyAgICBj
b25zdCBjaGFyKiAgICAgdGFnTmFtZSAgICAgICAgICAgICA9IFFQX0xPT0tVUF9TVFJJTkcoc19x
cFNoYWRlclR5cGVNYXAsIHR5cGUpOworKyAgICBjb25zdCBjaGFyKiAgICAgc291cmNlU3RyICAg
ICAgICAgICA9ICgobG9nLT5mbGFncyAmIFFQX1RFU1RfTE9HX0VYQ0xVREVfU0hBREVSX1NPVVJD
RVMpID09IDAgfHwgIWNvbXBpbGVPaykgPyBzb3VyY2UgOiAiIjsKKysgICAgaW50ICAgICAgICAg
ICAgIG51bVNoYWRlckF0dHJpYnMgICAgPSAwOworKyAgICBxcFhtbEF0dHJpYnV0ZSAgc2hhZGVy
QXR0cmlic1s0XTsKKyAKKy0JZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisrICAgIGRlTXV0ZXhf
bG9jayhsb2ctPmxvY2spOworIAorLQlERV9BU1NFUlQoc291cmNlKTsKKy0JREVfQVNTRVJUKENv
bnRhaW5lclN0YWNrX2dldFRvcCgmbG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQ
RV9TSEFERVJQUk9HUkFNKTsKKysgICAgREVfQVNTRVJUKHNvdXJjZSk7CisrICAgIERFX0FTU0VS
VChDb250YWluZXJTdGFja19nZXRUb3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5F
UlRZUEVfU0hBREVSUFJPR1JBTSk7CisgCistCXNoYWRlckF0dHJpYnNbbnVtU2hhZGVyQXR0cmli
cysrXQk9IHFwU2V0U3RyaW5nQXR0cmliKCJDb21waWxlU3RhdHVzIiwgY29tcGlsZU9rID8gIk9L
IiA6ICJGYWlsIik7CisrICAgIHNoYWRlckF0dHJpYnNbbnVtU2hhZGVyQXR0cmlicysrXSAgID0g
cXBTZXRTdHJpbmdBdHRyaWIoIkNvbXBpbGVTdGF0dXMiLCBjb21waWxlT2sgPyAiT0siIDogIkZh
aWwiKTsKKyAKKy0JaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0ZXIsIHRh
Z05hbWUsIG51bVNoYWRlckF0dHJpYnMsIHNoYWRlckF0dHJpYnMpIHx8CistCQkhcXBYbWxXcml0
ZXJfd3JpdGVTdHJpbmdFbGVtZW50KGxvZy0+d3JpdGVyLCAiU2hhZGVyU291cmNlIiwgc291cmNl
U3RyKSB8fAorLQkJIXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5nRWxlbWVudChsb2ctPndyaXRlciwg
IkluZm9Mb2ciLCBpbmZvTG9nKSB8fAorLQkJIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53
cml0ZXIsIHRhZ05hbWUpKQorLQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlU2hhZGVy
KCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2sp
OworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAgIGlmICghcXBYbWxXcml0ZXJfc3RhcnRF
bGVtZW50KGxvZy0+d3JpdGVyLCB0YWdOYW1lLCBudW1TaGFkZXJBdHRyaWJzLCBzaGFkZXJBdHRy
aWJzKSB8fAorKyAgICAgICAgIXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5nRWxlbWVudChsb2ctPndy
aXRlciwgIlNoYWRlclNvdXJjZSIsIHNvdXJjZVN0cikgfHwKKysgICAgICAgICFxcFhtbFdyaXRl
cl93cml0ZVN0cmluZ0VsZW1lbnQobG9nLT53cml0ZXIsICJJbmZvTG9nIiwgaW5mb0xvZykgfHwK
KysgICAgICAgICFxcFhtbFdyaXRlcl9lbmRFbGVtZW50KGxvZy0+d3JpdGVyLCB0YWdOYW1lKSkK
KysgICAgeworKyAgICAgICAgcXBQcmludGYoInFwVGVzdExvZ193cml0ZVNoYWRlcigpOiBXcml0
aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsK
KysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorIAorLQlkZU11dGV4X3VubG9jayhs
b2ctPmxvY2spOworLQlyZXR1cm4gREVfVFJVRTsKKysgICAgZGVNdXRleF91bmxvY2sobG9nLT5s
b2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7CisgfQorIAorIC8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQor
QEAgLTEwNTMsMjggKzEwNTMsMjggQEAgZGVCb29sIHFwVGVzdExvZ193cml0ZVNoYWRlciAocXBU
ZXN0TG9nKiBsb2csIHFwU2hhZGVyVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBzb3UKKyAgKi8vKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KKyBkZUJvb2wgcXBUZXN0TG9nX3N0YXJ0RWdsQ29uZmlnU2V0IChxcFRlc3RM
b2cqIGxvZywgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCisgewor
LQlxcFhtbEF0dHJpYnV0ZQlhdHRyaWJzWzRdOworLQlpbnQJCQkJbnVtQXR0cmlicyA9IDA7Cisr
ICAgIHFwWG1sQXR0cmlidXRlICBhdHRyaWJzWzRdOworKyAgICBpbnQgICAgICAgICAgICAgbnVt
QXR0cmlicyA9IDA7CisgCistCURFX0FTU0VSVChsb2cgJiYgbmFtZSk7CistCWRlTXV0ZXhfbG9j
ayhsb2ctPmxvY2spOworKyAgICBERV9BU1NFUlQobG9nICYmIG5hbWUpOworKyAgICBkZU11dGV4
X2xvY2sobG9nLT5sb2NrKTsKKyAKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJp
bmdBdHRyaWIoIk5hbWUiLCBuYW1lKTsKKy0JaWYgKGRlc2NyaXB0aW9uKQorLQkJYXR0cmlic1tu
dW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkRlc2NyaXB0aW9uIiwgZGVzY3JpcHRp
b24pOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiTmFt
ZSIsIG5hbWUpOworKyAgICBpZiAoZGVzY3JpcHRpb24pCisrICAgICAgICBhdHRyaWJzW251bUF0
dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbik7
CisgCistCS8qIDxFZ2xDb25maWdTZXQgTmFtZT0iPG5hbWU+Ij4gKi8KKy0JaWYgKCFxcFhtbFdy
aXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0ZXIsICJFZ2xDb25maWdTZXQiLCBudW1BdHRyaWJz
LCBhdHRyaWJzKSkKKy0JeworLQkJcXBQcmludGYoInFwVGVzdExvZ19zdGFydEVnbEltYWdlU2V0
KCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2sp
OworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAgIC8qIDxFZ2xDb25maWdTZXQgTmFtZT0i
PG5hbWU+Ij4gKi8KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0
ZXIsICJFZ2xDb25maWdTZXQiLCBudW1BdHRyaWJzLCBhdHRyaWJzKSkKKysgICAgeworKyAgICAg
ICAgcXBQcmludGYoInFwVGVzdExvZ19zdGFydEVnbEltYWdlU2V0KCk6IFdyaXRpbmcgWE1MIGZh
aWxlZFxuIik7CisrICAgICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICAgICAg
cmV0dXJuIERFX0ZBTFNFOworKyAgICB9CisgCistCURFX0FTU0VSVChDb250YWluZXJTdGFja19w
dXNoKCZsb2ctPmNvbnRhaW5lclN0YWNrLCBDT05UQUlORVJUWVBFX0VHTENPTkZJR1NFVCkpOwor
KyAgICBERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5jb250YWluZXJTdGFjaywg
Q09OVEFJTkVSVFlQRV9FR0xDT05GSUdTRVQpKTsKKyAKKy0JZGVNdXRleF91bmxvY2sobG9nLT5s
b2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7
CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKK0BAIC0x
MDgyLDIxICsxMDgyLDIxIEBAIGRlQm9vbCBxcFRlc3RMb2dfc3RhcnRFZ2xDb25maWdTZXQgKHFw
VGVzdExvZyogbG9nLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyCisgICovLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovCisgZGVCb29sIHFwVGVzdExvZ19lbmRFZ2xDb25maWdTZXQgKHFwVGVzdExvZyogbG9n
KQorIHsKKy0JREVfQVNTRVJUKGxvZyk7CistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworKyAg
ICBERV9BU1NFUlQobG9nKTsKKysgICAgZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisgCistCS8q
IDxFZ2xDb25maWdTZXQgTmFtZT0iPG5hbWU+Ij4gKi8KKy0JaWYgKCFxcFhtbFdyaXRlcl9lbmRF
bGVtZW50KGxvZy0+d3JpdGVyLCAiRWdsQ29uZmlnU2V0IikpCistCXsKKy0JCXFwUHJpbnRmKCJx
cFRlc3RMb2dfZW5kRWdsSW1hZ2VTZXQoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKy0JCWRl
TXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4gREVfRkFMU0U7CistCX0KKysgICAg
LyogPEVnbENvbmZpZ1NldCBOYW1lPSI8bmFtZT4iPiAqLworKyAgICBpZiAoIXFwWG1sV3JpdGVy
X2VuZEVsZW1lbnQobG9nLT53cml0ZXIsICJFZ2xDb25maWdTZXQiKSkKKysgICAgeworKyAgICAg
ICAgcXBQcmludGYoInFwVGVzdExvZ19lbmRFZ2xJbWFnZVNldCgpOiBXcml0aW5nIFhNTCBmYWls
ZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJl
dHVybiBERV9GQUxTRTsKKysgICAgfQorIAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcG9w
KCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9PSBDT05UQUlORVJUWVBFX0VHTENPTkZJR1NFVCk7Cisr
ICAgIERFX0FTU0VSVChDb250YWluZXJTdGFja19wb3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09
IENPTlRBSU5FUlRZUEVfRUdMQ09ORklHU0VUKTsKKyAKKy0JZGVNdXRleF91bmxvY2sobG9nLT5s
b2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7
CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKiEKK0BAIC0x
MTA1LDExMSArMTEwNSwxMTEgQEAgZGVCb29sIHFwVGVzdExvZ19lbmRFZ2xDb25maWdTZXQgKHFw
VGVzdExvZyogbG9nKQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIGRlQm9vbCBxcFRlc3RMb2dfd3Jp
dGVFZ2xDb25maWcgKHFwVGVzdExvZyogbG9nLCBjb25zdCBxcEVnbENvbmZpZ0luZm8qIGNvbmZp
ZykKKyB7CistCXFwWG1sQXR0cmlidXRlCWF0dHJpYnNbNjRdOworLQlpbnQJCQkJbnVtQXR0cmli
cyA9IDA7CistCistCURFX0FTU0VSVChsb2cgJiYgY29uZmlnKTsKKy0JZGVNdXRleF9sb2NrKGxv
Zy0+bG9jayk7CistCistCWF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliCQko
IkJ1ZmZlclNpemUiLCBjb25maWctPmJ1ZmZlclNpemUpOworLQlhdHRyaWJzW251bUF0dHJpYnMr
K10gPSBxcFNldEludEF0dHJpYgkJKCJSZWRTaXplIiwgY29uZmlnLT5yZWRTaXplKTsKKy0JYXR0
cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIJCSgiR3JlZW5TaXplIiwgY29uZmln
LT5ncmVlblNpemUpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYgkJ
KCJCbHVlU2l6ZSIsIGNvbmZpZy0+Ymx1ZVNpemUpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10g
PSBxcFNldEludEF0dHJpYgkJKCJMdW1pbmFuY2VTaXplIiwgY29uZmlnLT5sdW1pbmFuY2VTaXpl
KTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIJCSgiQWxwaGFTaXpl
IiwgY29uZmlnLT5hbHBoYVNpemUpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldElu
dEF0dHJpYgkJKCJBbHBoYU1hc2tTaXplIiwgY29uZmlnLT5hbHBoYU1hc2tTaXplKTsKKy0JYXR0
cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRCb29sQXR0cmliCQkoIkJpbmRUb1RleHR1cmVSR0Ii
LCBjb25maWctPmJpbmRUb1RleHR1cmVSR0IpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBx
cFNldEJvb2xBdHRyaWIJCSgiQmluZFRvVGV4dHVyZVJHQkEiLCBjb25maWctPmJpbmRUb1RleHR1
cmVSR0JBKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIJKCJD
b2xvckJ1ZmZlclR5cGUiLCBjb25maWctPmNvbG9yQnVmZmVyVHlwZSk7CistCWF0dHJpYnNbbnVt
QXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliCSgiQ29uZmlnQ2F2ZWF0IiwgY29uZmlnLT5j
b25maWdDYXZlYXQpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYgkJ
KCJDb25maWdJRCIsIGNvbmZpZy0+Y29uZmlnSUQpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10g
PSBxcFNldFN0cmluZ0F0dHJpYgkoIkNvbmZvcm1hbnQiLCBjb25maWctPmNvbmZvcm1hbnQpOwor
LQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYgkJKCJEZXB0aFNpemUiLCBj
b25maWctPmRlcHRoU2l6ZSk7CistCWF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0
cmliCQkoIkxldmVsIiwgY29uZmlnLT5sZXZlbCk7CistCWF0dHJpYnNbbnVtQXR0cmlicysrXSA9
IHFwU2V0SW50QXR0cmliCQkoIk1heFBCdWZmZXJXaWR0aCIsIGNvbmZpZy0+bWF4UEJ1ZmZlcldp
ZHRoKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIJCSgiTWF4UEJ1
ZmZlckhlaWdodCIsIGNvbmZpZy0+bWF4UEJ1ZmZlckhlaWdodCk7CistCWF0dHJpYnNbbnVtQXR0
cmlicysrXSA9IHFwU2V0SW50QXR0cmliCQkoIk1heFBCdWZmZXJQaXhlbHMiLCBjb25maWctPm1h
eFBCdWZmZXJQaXhlbHMpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJp
YgkJKCJNYXhTd2FwSW50ZXJ2YWwiLCBjb25maWctPm1heFN3YXBJbnRlcnZhbCk7CistCWF0dHJp
YnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliCQkoIk1pblN3YXBJbnRlcnZhbCIsIGNv
bmZpZy0+bWluU3dhcEludGVydmFsKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRC
b29sQXR0cmliCQkoIk5hdGl2ZVJlbmRlcmFibGUiLCBjb25maWctPm5hdGl2ZVJlbmRlcmFibGUp
OworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYgkoIlJlbmRlcmFi
bGVUeXBlIiwgY29uZmlnLT5yZW5kZXJhYmxlVHlwZSk7CistCWF0dHJpYnNbbnVtQXR0cmlicysr
XSA9IHFwU2V0SW50QXR0cmliCQkoIlNhbXBsZUJ1ZmZlcnMiLCBjb25maWctPnNhbXBsZUJ1ZmZl
cnMpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYgkJKCJTYW1wbGVz
IiwgY29uZmlnLT5zYW1wbGVzKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRB
dHRyaWIJCSgiU3RlbmNpbFNpemUiLCBjb25maWctPnN0ZW5jaWxTaXplKTsKKy0JYXR0cmlic1tu
dW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIJKCJTdXJmYWNlVHlwZXMiLCBjb25maWct
PnN1cmZhY2VUeXBlcyk7CistCWF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0
cmliCSgiVHJhbnNwYXJlbnRUeXBlIiwgY29uZmlnLT50cmFuc3BhcmVudFR5cGUpOworLQlhdHRy
aWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYgkJKCJUcmFuc3BhcmVudFJlZFZhbHVl
IiwgY29uZmlnLT50cmFuc3BhcmVudFJlZFZhbHVlKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytd
ID0gcXBTZXRJbnRBdHRyaWIJCSgiVHJhbnNwYXJlbnRHcmVlblZhbHVlIiwgY29uZmlnLT50cmFu
c3BhcmVudEdyZWVuVmFsdWUpOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0
dHJpYgkJKCJUcmFuc3BhcmVudEJsdWVWYWx1ZSIsIGNvbmZpZy0+dHJhbnNwYXJlbnRCbHVlVmFs
dWUpOworLQlERV9BU1NFUlQobnVtQXR0cmlicyA8PSBERV9MRU5HVEhfT0ZfQVJSQVkoYXR0cmli
cykpOworLQorLQlpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwgIkVn
bENvbmZpZyIsIG51bUF0dHJpYnMsIGF0dHJpYnMpIHx8CistCQkhcXBYbWxXcml0ZXJfZW5kRWxl
bWVudChsb2ctPndyaXRlciwgIkVnbENvbmZpZyIpKQorLQl7CistCQlxcFByaW50ZigicXBUZXN0
TG9nX3dyaXRlRWdsQ29uZmlnKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4
X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CistCistCWRlTXV0
ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCXJldHVybiBERV9UUlVFOworKyAgICBxcFhtbEF0dHJp
YnV0ZSAgYXR0cmlic1s2NF07CisrICAgIGludCAgICAgICAgICAgICBudW1BdHRyaWJzID0gMDsK
KysKKysgICAgREVfQVNTRVJUKGxvZyAmJiBjb25maWcpOworKyAgICBkZU11dGV4X2xvY2sobG9n
LT5sb2NrKTsKKysKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIg
ICAgICAoIkJ1ZmZlclNpemUiLCBjb25maWctPmJ1ZmZlclNpemUpOworKyAgICBhdHRyaWJzW251
bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYiAgICAgICgiUmVkU2l6ZSIsIGNvbmZpZy0+cmVk
U2l6ZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAg
KCJHcmVlblNpemUiLCBjb25maWctPmdyZWVuU2l6ZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmli
cysrXSA9IHFwU2V0SW50QXR0cmliICAgICAgKCJCbHVlU2l6ZSIsIGNvbmZpZy0+Ymx1ZVNpemUp
OworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYiAgICAgICgiTHVt
aW5hbmNlU2l6ZSIsIGNvbmZpZy0+bHVtaW5hbmNlU2l6ZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0
cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAgKCJBbHBoYVNpemUiLCBjb25maWctPmFscGhh
U2l6ZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAg
KCJBbHBoYU1hc2tTaXplIiwgY29uZmlnLT5hbHBoYU1hc2tTaXplKTsKKysgICAgYXR0cmlic1tu
dW1BdHRyaWJzKytdID0gcXBTZXRCb29sQXR0cmliICAgICAoIkJpbmRUb1RleHR1cmVSR0IiLCBj
b25maWctPmJpbmRUb1RleHR1cmVSR0IpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBx
cFNldEJvb2xBdHRyaWIgICAgICgiQmluZFRvVGV4dHVyZVJHQkEiLCBjb25maWctPmJpbmRUb1Rl
eHR1cmVSR0JBKTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRy
aWIgICAoIkNvbG9yQnVmZmVyVHlwZSIsIGNvbmZpZy0+Y29sb3JCdWZmZXJUeXBlKTsKKysgICAg
YXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIgICAoIkNvbmZpZ0NhdmVh
dCIsIGNvbmZpZy0+Y29uZmlnQ2F2ZWF0KTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0g
cXBTZXRJbnRBdHRyaWIgICAgICAoIkNvbmZpZ0lEIiwgY29uZmlnLT5jb25maWdJRCk7CisrICAg
IGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliICAgKCJDb25mb3JtYW50
IiwgY29uZmlnLT5jb25mb3JtYW50KTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBT
ZXRJbnRBdHRyaWIgICAgICAoIkRlcHRoU2l6ZSIsIGNvbmZpZy0+ZGVwdGhTaXplKTsKKysgICAg
YXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIgICAgICAoIkxldmVsIiwgY29u
ZmlnLT5sZXZlbCk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmli
ICAgICAgKCJNYXhQQnVmZmVyV2lkdGgiLCBjb25maWctPm1heFBCdWZmZXJXaWR0aCk7CisrICAg
IGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAgKCJNYXhQQnVmZmVy
SGVpZ2h0IiwgY29uZmlnLT5tYXhQQnVmZmVySGVpZ2h0KTsKKysgICAgYXR0cmlic1tudW1BdHRy
aWJzKytdID0gcXBTZXRJbnRBdHRyaWIgICAgICAoIk1heFBCdWZmZXJQaXhlbHMiLCBjb25maWct
Pm1heFBCdWZmZXJQaXhlbHMpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldElu
dEF0dHJpYiAgICAgICgiTWF4U3dhcEludGVydmFsIiwgY29uZmlnLT5tYXhTd2FwSW50ZXJ2YWwp
OworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYiAgICAgICgiTWlu
U3dhcEludGVydmFsIiwgY29uZmlnLT5taW5Td2FwSW50ZXJ2YWwpOworKyAgICBhdHRyaWJzW251
bUF0dHJpYnMrK10gPSBxcFNldEJvb2xBdHRyaWIgICAgICgiTmF0aXZlUmVuZGVyYWJsZSIsIGNv
bmZpZy0+bmF0aXZlUmVuZGVyYWJsZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFw
U2V0U3RyaW5nQXR0cmliICAgKCJSZW5kZXJhYmxlVHlwZSIsIGNvbmZpZy0+cmVuZGVyYWJsZVR5
cGUpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldEludEF0dHJpYiAgICAgICgi
U2FtcGxlQnVmZmVycyIsIGNvbmZpZy0+c2FtcGxlQnVmZmVycyk7CisrICAgIGF0dHJpYnNbbnVt
QXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAgKCJTYW1wbGVzIiwgY29uZmlnLT5zYW1w
bGVzKTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIgICAgICAo
IlN0ZW5jaWxTaXplIiwgY29uZmlnLT5zdGVuY2lsU2l6ZSk7CisrICAgIGF0dHJpYnNbbnVtQXR0
cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliICAgKCJTdXJmYWNlVHlwZXMiLCBjb25maWctPnN1
cmZhY2VUeXBlcyk7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0
cmliICAgKCJUcmFuc3BhcmVudFR5cGUiLCBjb25maWctPnRyYW5zcGFyZW50VHlwZSk7CisrICAg
IGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0SW50QXR0cmliICAgICAgKCJUcmFuc3BhcmVu
dFJlZFZhbHVlIiwgY29uZmlnLT50cmFuc3BhcmVudFJlZFZhbHVlKTsKKysgICAgYXR0cmlic1tu
dW1BdHRyaWJzKytdID0gcXBTZXRJbnRBdHRyaWIgICAgICAoIlRyYW5zcGFyZW50R3JlZW5WYWx1
ZSIsIGNvbmZpZy0+dHJhbnNwYXJlbnRHcmVlblZhbHVlKTsKKysgICAgYXR0cmlic1tudW1BdHRy
aWJzKytdID0gcXBTZXRJbnRBdHRyaWIgICAgICAoIlRyYW5zcGFyZW50Qmx1ZVZhbHVlIiwgY29u
ZmlnLT50cmFuc3BhcmVudEJsdWVWYWx1ZSk7CisrICAgIERFX0FTU0VSVChudW1BdHRyaWJzIDw9
IERFX0xFTkdUSF9PRl9BUlJBWShhdHRyaWJzKSk7CisrCisrICAgIGlmICghcXBYbWxXcml0ZXJf
c3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCAiRWdsQ29uZmlnIiwgbnVtQXR0cmlicywgYXR0cmli
cykgfHwKKysgICAgICAgICFxcFhtbFdyaXRlcl9lbmRFbGVtZW50KGxvZy0+d3JpdGVyLCAiRWds
Q29uZmlnIikpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRmKCJxcFRlc3RMb2dfd3JpdGVFZ2xD
b25maWcoKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2Nr
KGxvZy0+bG9jayk7CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKysKKysgICAg
ZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7CisgfQorIAor
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLy8qIQorICAqIFxicmllZiBTdGFydCBzZWN0aW9uIGluIGxvZy4KKy0g
KiBccGFyYW0gbG9nCQkJcXBUZXN0TG9nIGluc3RhbmNlCistICogXHBhcmFtIG5hbWUJCQlTZWN0
aW9uIG5hbWUKKy0gKiBccGFyYW0gZGVzY3JpcHRpb24JSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRp
b24KKysgKiBccGFyYW0gbG9nICAgICAgICAgICBxcFRlc3RMb2cgaW5zdGFuY2UKKysgKiBccGFy
YW0gbmFtZSAgICAgICAgICBTZWN0aW9uIG5hbWUKKysgKiBccGFyYW0gZGVzY3JpcHRpb24gICBI
dW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbgorICAqIFxyZXR1cm4gdHJ1ZSBpZiBvaywgZmFsc2Ug
b3RoZXJ3aXNlCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExvZ19zdGFydFNl
Y3Rpb24gKHFwVGVzdExvZyogbG9nLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBkZXNj
cmlwdGlvbikKKyB7CistCXFwWG1sQXR0cmlidXRlCWF0dHJpYnNbMl07CistCWludAkJCQludW1B
dHRyaWJzID0gMDsKKysgICAgcXBYbWxBdHRyaWJ1dGUgIGF0dHJpYnNbMl07CisrICAgIGludCAg
ICAgICAgICAgICBudW1BdHRyaWJzID0gMDsKKyAKKy0JREVfQVNTRVJUKGxvZyAmJiBuYW1lKTsK
Ky0JZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisrICAgIERFX0FTU0VSVChsb2cgJiYgbmFtZSk7
CisrICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlhdHRyaWJzW251bUF0dHJpYnMr
K10gPSBxcFNldFN0cmluZ0F0dHJpYigiTmFtZSIsIG5hbWUpOworLQlpZiAoZGVzY3JpcHRpb24p
CistCQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVzY3JpcHRp
b24iLCBkZXNjcmlwdGlvbik7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3Ry
aW5nQXR0cmliKCJOYW1lIiwgbmFtZSk7CisrICAgIGlmIChkZXNjcmlwdGlvbikKKysgICAgICAg
IGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJEZXNjcmlwdGlvbiIs
IGRlc2NyaXB0aW9uKTsKKyAKKy0JLyogPFNlY3Rpb24gTmFtZT0iPG5hbWU+IiBEZXNjcmlwdGlv
bj0iPGRlc2NyaXB0aW9uPiI+ICovCistCWlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxv
Zy0+d3JpdGVyLCAiU2VjdGlvbiIsIG51bUF0dHJpYnMsIGF0dHJpYnMpKQorLQl7CistCQlxcFBy
aW50ZigicXBUZXN0TG9nX3N0YXJ0U2VjdGlvbigpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOwor
LQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9GQUxTRTsKKy0JfQor
KyAgICAvKiA8U2VjdGlvbiBOYW1lPSI8bmFtZT4iIERlc2NyaXB0aW9uPSI8ZGVzY3JpcHRpb24+
Ij4gKi8KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0ZXIsICJT
ZWN0aW9uIiwgbnVtQXR0cmlicywgYXR0cmlicykpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRm
KCJxcFRlc3RMb2dfc3RhcnRTZWN0aW9uKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CisrICAg
ICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICAgICAgcmV0dXJuIERFX0ZBTFNF
OworKyAgICB9CisgCistCURFX0FTU0VSVChDb250YWluZXJTdGFja19wdXNoKCZsb2ctPmNvbnRh
aW5lclN0YWNrLCBDT05UQUlORVJUWVBFX1NFQ1RJT04pKTsKKysgICAgREVfQVNTRVJUKENvbnRh
aW5lclN0YWNrX3B1c2goJmxvZy0+Y29udGFpbmVyU3RhY2ssIENPTlRBSU5FUlRZUEVfU0VDVElP
TikpOworIAorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1cm4gREVfVFJVRTsK
KysgICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7Cisg
fQorIAorIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qIQorICAqIFxicmllZiBFbmQgc2VjdGlvbiBpbiBsb2cu
CistICogXHBhcmFtIGxvZwkJCXFwVGVzdExvZyBpbnN0YW5jZQorKyAqIFxwYXJhbSBsb2cgICAg
ICAgICAgIHFwVGVzdExvZyBpbnN0YW5jZQorICAqIFxyZXR1cm4gdHJ1ZSBpZiBvaywgZmFsc2Ug
b3RoZXJ3aXNlCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExvZ19lbmRTZWN0
aW9uIChxcFRlc3RMb2cqIGxvZykKKyB7CistCURFX0FTU0VSVChsb2cpOworLQlkZU11dGV4X2xv
Y2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAgIGRlTXV0ZXhfbG9jayhs
b2ctPmxvY2spOworIAorLQkvKiA8L1NlY3Rpb24+ICovCistCWlmICghcXBYbWxXcml0ZXJfZW5k
RWxlbWVudChsb2ctPndyaXRlciwgIlNlY3Rpb24iKSkKKy0JeworLQkJcXBQcmludGYoInFwVGVz
dExvZ19lbmRTZWN0aW9uKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4X3Vu
bG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAgIC8qIDwvU2Vj
dGlvbj4gKi8KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9lbmRFbGVtZW50KGxvZy0+d3JpdGVyLCAi
U2VjdGlvbiIpKQorKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX2VuZFNlY3Rp
b24oKTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxv
Zy0+bG9jayk7CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JREVfQVNT
RVJUKENvbnRhaW5lclN0YWNrX3BvcCgmbG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVS
VFlQRV9TRUNUSU9OKTsKKysgICAgREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX3BvcCgmbG9nLT5j
b250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9TRUNUSU9OKTsKKyAKKy0JZGVNdXRleF91
bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2Nr
KGxvZy0+bG9jayk7CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyAvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8vKiEKK0BAIC0xMjE3LDIwICsxMjE3LDIwIEBAIGRlQm9vbCBxcFRlc3RMb2dfZW5kU2VjdGlv
biAocXBUZXN0TG9nKiBsb2cpCisgICovLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgZGVCb29sIHFwVGVzdExv
Z193cml0ZUtlcm5lbFNvdXJjZSAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIHNvdXJjZSkK
KyB7CistCWNvbnN0IGNoYXIqCQlzb3VyY2VTdHIJPSAobG9nLT5mbGFncyAmIFFQX1RFU1RfTE9H
X0VYQ0xVREVfU0hBREVSX1NPVVJDRVMpICE9IDAgPyAiIiA6IHNvdXJjZTsKKysgICAgY29uc3Qg
Y2hhciogICAgIHNvdXJjZVN0ciAgID0gKGxvZy0+ZmxhZ3MgJiBRUF9URVNUX0xPR19FWENMVURF
X1NIQURFUl9TT1VSQ0VTKSAhPSAwID8gIiIgOiBzb3VyY2U7CisgCistCURFX0FTU0VSVChsb2cp
OworLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAg
IGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlpZiAoIXFwWG1sV3JpdGVyX3dyaXRlU3Ry
aW5nRWxlbWVudChsb2ctPndyaXRlciwgIktlcm5lbFNvdXJjZSIsIHNvdXJjZVN0cikpCistCXsK
Ky0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfd3JpdGVLZXJuZWxTb3VyY2UoKTogV3JpdGluZyBYTUwg
ZmFpbGVkXG4iKTsKKy0JCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4gREVf
RkFMU0U7CistCX0KKysgICAgaWYgKCFxcFhtbFdyaXRlcl93cml0ZVN0cmluZ0VsZW1lbnQobG9n
LT53cml0ZXIsICJLZXJuZWxTb3VyY2UiLCBzb3VyY2VTdHIpKQorKyAgICB7CisrICAgICAgICBx
cFByaW50ZigicXBUZXN0TG9nX3dyaXRlS2VybmVsU291cmNlKCk6IFdyaXRpbmcgWE1MIGZhaWxl
ZFxuIik7CisrICAgICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICAgICAgcmV0
dXJuIERFX0ZBTFNFOworKyAgICB9CisgCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7Cist
CXJldHVybiBERV9UUlVFOworKyAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICBy
ZXR1cm4gREVfVFJVRTsKKyB9CisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyohCitAQCAtMTIzOCwyMSAr
MTIzOCwyMSBAQCBkZUJvb2wgcXBUZXN0TG9nX3dyaXRlS2VybmVsU291cmNlIChxcFRlc3RMb2cq
IGxvZywgY29uc3QgY2hhciogc291cmNlKQorICAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIGRlQm9vbCBx
cFRlc3RMb2dfd3JpdGVTcGlyVkFzc2VtYmx5U291cmNlIChxcFRlc3RMb2cqIGxvZywgY29uc3Qg
Y2hhciogc291cmNlKQorIHsKKy0JY29uc3QgY2hhciogY29uc3QJc291cmNlU3RyCT0gKGxvZy0+
ZmxhZ3MgJiBRUF9URVNUX0xPR19FWENMVURFX1NIQURFUl9TT1VSQ0VTKSAhPSAwID8gIiIgOiBz
b3VyY2U7CisrICAgIGNvbnN0IGNoYXIqIGNvbnN0ICAgc291cmNlU3RyICAgPSAobG9nLT5mbGFn
cyAmIFFQX1RFU1RfTE9HX0VYQ0xVREVfU0hBREVSX1NPVVJDRVMpICE9IDAgPyAiIiA6IHNvdXJj
ZTsKKyAKKy0JZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisrICAgIGRlTXV0ZXhfbG9jayhsb2ct
PmxvY2spOworIAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfZ2V0VG9wKCZsb2ctPmNvbnRh
aW5lclN0YWNrKSA9PSBDT05UQUlORVJUWVBFX1NIQURFUlBST0dSQU0pOworKyAgICBERV9BU1NF
UlQoQ29udGFpbmVyU3RhY2tfZ2V0VG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9PSBDT05UQUlO
RVJUWVBFX1NIQURFUlBST0dSQU0pOworIAorLQlpZiAoIXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5n
RWxlbWVudChsb2ctPndyaXRlciwgIlNwaXJWQXNzZW1ibHlTb3VyY2UiLCBzb3VyY2VTdHIpKQor
LQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlU3BpclZBc3NlbWJseVNvdXJjZSgpOiBX
cml0aW5nIFhNTCBmYWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0J
CXJldHVybiBERV9GQUxTRTsKKy0JfQorKyAgICBpZiAoIXFwWG1sV3JpdGVyX3dyaXRlU3RyaW5n
RWxlbWVudChsb2ctPndyaXRlciwgIlNwaXJWQXNzZW1ibHlTb3VyY2UiLCBzb3VyY2VTdHIpKQor
KyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlU3BpclZBc3NlbWJseVNv
dXJjZSgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91bmxvY2so
bG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorIAorLQlkZU11
dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1cm4gREVfVFJVRTsKKysgICAgZGVNdXRleF91
bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7CisgfQorIAorIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLy8qIQorQEAgLTEyNjAsMjIyICsxMjYwLDIyMiBAQCBkZUJvb2wgcXBUZXN0TG9nX3dy
aXRlU3BpclZBc3NlbWJseVNvdXJjZSAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIHNvdXJj
ZSkKKyAgKi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyBkZUJvb2wgcXBUZXN0TG9nX3dyaXRlQ29tcGlsZUlu
Zm8gKHFwVGVzdExvZyogbG9nLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiBkZXNjcmlw
dGlvbiwgZGVCb29sIGNvbXBpbGVPaywgY29uc3QgY2hhciogaW5mb0xvZykKKyB7CistCWludAkJ
CQludW1BdHRyaWJzID0gMDsKKy0JcXBYbWxBdHRyaWJ1dGUJYXR0cmlic1szXTsKKysgICAgaW50
ICAgICAgICAgICAgIG51bUF0dHJpYnMgPSAwOworKyAgICBxcFhtbEF0dHJpYnV0ZSAgYXR0cmli
c1szXTsKKyAKKy0JREVfQVNTRVJUKGxvZyAmJiBuYW1lICYmIGRlc2NyaXB0aW9uICYmIGluZm9M
b2cpOworLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyAmJiBu
YW1lICYmIGRlc2NyaXB0aW9uICYmIGluZm9Mb2cpOworKyAgICBkZU11dGV4X2xvY2sobG9nLT5s
b2NrKTsKKyAKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIk5h
bWUiLCBuYW1lKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIo
IkRlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24pOworLQlhdHRyaWJzW251bUF0dHJpYnMrK10gPSBx
cFNldFN0cmluZ0F0dHJpYigiQ29tcGlsZVN0YXR1cyIsIGNvbXBpbGVPayA/ICJPSyIgOiAiRmFp
bCIpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiTmFt
ZSIsIG5hbWUpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJp
YigiRGVzY3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CisrICAgIGF0dHJpYnNbbnVtQXR0cmlicysr
XSA9IHFwU2V0U3RyaW5nQXR0cmliKCJDb21waWxlU3RhdHVzIiwgY29tcGlsZU9rID8gIk9LIiA6
ICJGYWlsIik7CisgCistCWlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVy
LCAiQ29tcGlsZUluZm8iLCBudW1BdHRyaWJzLCBhdHRyaWJzKSB8fAorLQkJIXFwWG1sV3JpdGVy
X3dyaXRlU3RyaW5nRWxlbWVudChsb2ctPndyaXRlciwgIkluZm9Mb2ciLCBpbmZvTG9nKSB8fAor
LQkJIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53cml0ZXIsICJDb21waWxlSW5mbyIpKQor
LQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlQ29tcGlsZUluZm8oKTogV3JpdGluZyBY
TUwgZmFpbGVkXG4iKTsKKy0JCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4g
REVfRkFMU0U7CistCX0KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53
cml0ZXIsICJDb21waWxlSW5mbyIsIG51bUF0dHJpYnMsIGF0dHJpYnMpIHx8CisrICAgICAgICAh
cXBYbWxXcml0ZXJfd3JpdGVTdHJpbmdFbGVtZW50KGxvZy0+d3JpdGVyLCAiSW5mb0xvZyIsIGlu
Zm9Mb2cpIHx8CisrICAgICAgICAhcXBYbWxXcml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwg
IkNvbXBpbGVJbmZvIikpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRmKCJxcFRlc3RMb2dfd3Jp
dGVDb21waWxlSW5mbygpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRl
eF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQor
IAorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1cm4gREVfVFJVRTsKKysgICAg
ZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7CisgfQorIAor
IGRlQm9vbCBxcFRlc3RMb2dfc3RhcnRTYW1wbGVMaXN0IChxcFRlc3RMb2cqIGxvZywgY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgY2hhciogZGVzY3JpcHRpb24pCisgeworLQlpbnQJCQkJbnVtQXR0
cmlicyA9IDA7CistCXFwWG1sQXR0cmlidXRlCWF0dHJpYnNbMl07CisrICAgIGludCAgICAgICAg
ICAgICBudW1BdHRyaWJzID0gMDsKKysgICAgcXBYbWxBdHRyaWJ1dGUgIGF0dHJpYnNbMl07Cisg
CistCURFX0FTU0VSVChsb2cgJiYgbmFtZSAmJiBkZXNjcmlwdGlvbik7CistCWRlTXV0ZXhfbG9j
ayhsb2ctPmxvY2spOworKyAgICBERV9BU1NFUlQobG9nICYmIG5hbWUgJiYgZGVzY3JpcHRpb24p
OworKyAgICBkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKyAKKy0JYXR0cmlic1tudW1BdHRyaWJz
KytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIk5hbWUiLCBuYW1lKTsKKy0JYXR0cmlic1tudW1BdHRy
aWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIkRlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24pOwor
KyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiTmFtZSIsIG5h
bWUpOworKyAgICBhdHRyaWJzW251bUF0dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiRGVz
Y3JpcHRpb24iLCBkZXNjcmlwdGlvbik7CisgCistCWlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVt
ZW50KGxvZy0+d3JpdGVyLCAiU2FtcGxlTGlzdCIsIG51bUF0dHJpYnMsIGF0dHJpYnMpKQorLQl7
CistCQlxcFByaW50ZigicXBUZXN0TG9nX3N0YXJ0U2FtcGxlTGlzdCgpOiBXcml0aW5nIFhNTCBm
YWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9G
QUxTRTsKKy0JfQorKyAgICBpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRl
ciwgIlNhbXBsZUxpc3QiLCBudW1BdHRyaWJzLCBhdHRyaWJzKSkKKysgICAgeworKyAgICAgICAg
cXBQcmludGYoInFwVGVzdExvZ19zdGFydFNhbXBsZUxpc3QoKTogV3JpdGluZyBYTUwgZmFpbGVk
XG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CisrICAgICAgICByZXR1
cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX3B1c2go
JmxvZy0+Y29udGFpbmVyU3RhY2ssIENPTlRBSU5FUlRZUEVfU0FNUExFTElTVCkpOworKyAgICBE
RV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5jb250YWluZXJTdGFjaywgQ09OVEFJ
TkVSVFlQRV9TQU1QTEVMSVNUKSk7CisgCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7Cist
CXJldHVybiBERV9UUlVFOworKyAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICBy
ZXR1cm4gREVfVFJVRTsKKyB9CisgCisgZGVCb29sIHFwVGVzdExvZ19zdGFydFNhbXBsZUluZm8g
KHFwVGVzdExvZyogbG9nKQorIHsKKy0JREVfQVNTRVJUKGxvZyk7CistCWRlTXV0ZXhfbG9jayhs
b2ctPmxvY2spOworKyAgICBERV9BU1NFUlQobG9nKTsKKysgICAgZGVNdXRleF9sb2NrKGxvZy0+
bG9jayk7CisgCistCWlmICghcXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCAi
U2FtcGxlSW5mbyIsIDAsIERFX05VTEwpKQorLQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3N0
YXJ0U2FtcGxlSW5mbygpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxv
Y2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9GQUxTRTsKKy0JfQorKyAgICBpZiAoIXFwWG1s
V3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwgIlNhbXBsZUluZm8iLCAwLCBERV9OVUxM
KSkKKysgICAgeworKyAgICAgICAgcXBQcmludGYoInFwVGVzdExvZ19zdGFydFNhbXBsZUluZm8o
KTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+
bG9jayk7CisrICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JREVfQVNTRVJU
KENvbnRhaW5lclN0YWNrX3B1c2goJmxvZy0+Y29udGFpbmVyU3RhY2ssIENPTlRBSU5FUlRZUEVf
U0FNUExFSU5GTykpOworKyAgICBERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5j
b250YWluZXJTdGFjaywgQ09OVEFJTkVSVFlQRV9TQU1QTEVJTkZPKSk7CisgCistCWRlTXV0ZXhf
dW5sb2NrKGxvZy0+bG9jayk7CistCXJldHVybiBERV9UUlVFOworKyAgICBkZU11dGV4X3VubG9j
ayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9CisgCisgZGVCb29sIHFwVGVz
dExvZ193cml0ZVZhbHVlSW5mbyAocXBUZXN0TG9nKiBsb2csIGNvbnN0IGNoYXIqIG5hbWUsIGNv
bnN0IGNoYXIqIGRlc2NyaXB0aW9uLCBjb25zdCBjaGFyKiB1bml0LCBxcFNhbXBsZVZhbHVlVGFn
IHRhZykKKyB7CistCWNvbnN0IGNoYXIqCQl0YWdOYW1lCQk9IFFQX0xPT0tVUF9TVFJJTkcoc19x
cFNhbXBsZVZhbHVlVGFnTWFwLCB0YWcpOworLQlpbnQJCQkJbnVtQXR0cmlicwk9IDA7CistCXFw
WG1sQXR0cmlidXRlCWF0dHJpYnNbNF07CisrICAgIGNvbnN0IGNoYXIqICAgICB0YWdOYW1lICAg
ICA9IFFQX0xPT0tVUF9TVFJJTkcoc19xcFNhbXBsZVZhbHVlVGFnTWFwLCB0YWcpOworKyAgICBp
bnQgICAgICAgICAgICAgbnVtQXR0cmlicyAgPSAwOworKyAgICBxcFhtbEF0dHJpYnV0ZSAgYXR0
cmlic1s0XTsKKyAKKy0JREVfQVNTRVJUKGxvZyAmJiBuYW1lICYmIGRlc2NyaXB0aW9uICYmIHRh
Z05hbWUpOworLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysgICAgREVfQVNTRVJUKGxvZyAm
JiBuYW1lICYmIGRlc2NyaXB0aW9uICYmIHRhZ05hbWUpOworKyAgICBkZU11dGV4X2xvY2sobG9n
LT5sb2NrKTsKKyAKKy0JREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX2dldFRvcCgmbG9nLT5jb250
YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9TQU1QTEVJTkZPKTsKKysgICAgREVfQVNTRVJU
KENvbnRhaW5lclN0YWNrX2dldFRvcCgmbG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVS
VFlQRV9TQU1QTEVJTkZPKTsKKyAKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJp
bmdBdHRyaWIoIk5hbWUiLCBuYW1lKTsKKy0JYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRT
dHJpbmdBdHRyaWIoIkRlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24pOworLQlhdHRyaWJzW251bUF0
dHJpYnMrK10gPSBxcFNldFN0cmluZ0F0dHJpYigiVGFnIiwgdGFnTmFtZSk7CisrICAgIGF0dHJp
YnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJOYW1lIiwgbmFtZSk7CisrICAg
IGF0dHJpYnNbbnVtQXR0cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJEZXNjcmlwdGlvbiIs
IGRlc2NyaXB0aW9uKTsKKysgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdB
dHRyaWIoIlRhZyIsIHRhZ05hbWUpOworIAorLQlpZiAodW5pdCkKKy0JCWF0dHJpYnNbbnVtQXR0
cmlicysrXSA9IHFwU2V0U3RyaW5nQXR0cmliKCJVbml0IiwgdW5pdCk7CisrICAgIGlmICh1bml0
KQorKyAgICAgICAgYXR0cmlic1tudW1BdHRyaWJzKytdID0gcXBTZXRTdHJpbmdBdHRyaWIoIlVu
aXQiLCB1bml0KTsKKyAKKy0JaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53cml0
ZXIsICJWYWx1ZUluZm8iLCBudW1BdHRyaWJzLCBhdHRyaWJzKSB8fAorLQkJIXFwWG1sV3JpdGVy
X2VuZEVsZW1lbnQobG9nLT53cml0ZXIsICJWYWx1ZUluZm8iKSkKKy0JeworLQkJcXBQcmludGYo
InFwVGVzdExvZ193cml0ZVZhbHVlSW5mbygpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworLQkJ
ZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9GQUxTRTsKKy0JfQorKyAg
ICBpZiAoIXFwWG1sV3JpdGVyX3N0YXJ0RWxlbWVudChsb2ctPndyaXRlciwgIlZhbHVlSW5mbyIs
IG51bUF0dHJpYnMsIGF0dHJpYnMpIHx8CisrICAgICAgICAhcXBYbWxXcml0ZXJfZW5kRWxlbWVu
dChsb2ctPndyaXRlciwgIlZhbHVlSW5mbyIpKQorKyAgICB7CisrICAgICAgICBxcFByaW50Zigi
cXBUZXN0TG9nX3dyaXRlVmFsdWVJbmZvKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CisrICAg
ICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICAgICAgcmV0dXJuIERFX0ZBTFNF
OworKyAgICB9CisgCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCXJldHVybiBERV9U
UlVFOworKyAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJV
RTsKKyB9CisgCisgZGVCb29sIHFwVGVzdExvZ19lbmRTYW1wbGVJbmZvIChxcFRlc3RMb2cqIGxv
ZykKKyB7CistCURFX0FTU0VSVChsb2cpOworLQlkZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKysg
ICAgREVfQVNTRVJUKGxvZyk7CisrICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlp
ZiAoIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53cml0ZXIsICJTYW1wbGVJbmZvIikpCist
CXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfZW5kU2FtcGxlSW5mbygpOiBXcml0aW5nIFhNTCBm
YWlsZWRcbiIpOworLQkJZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JCXJldHVybiBERV9G
QUxTRTsKKy0JfQorKyAgICBpZiAoIXFwWG1sV3JpdGVyX2VuZEVsZW1lbnQobG9nLT53cml0ZXIs
ICJTYW1wbGVJbmZvIikpCisrICAgIHsKKysgICAgICAgIHFwUHJpbnRmKCJxcFRlc3RMb2dfZW5k
U2FtcGxlSW5mbygpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRleF91
bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQorIAor
LQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9PSBD
T05UQUlORVJUWVBFX1NBTVBMRUlORk8pOworKyAgICBERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tf
cG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9PSBDT05UQUlORVJUWVBFX1NBTVBMRUlORk8pOwor
IAorLQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQlyZXR1cm4gREVfVFJVRTsKKysgICAg
ZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgcmV0dXJuIERFX1RSVUU7CisgfQorIAor
IGRlQm9vbCBxcFRlc3RMb2dfc3RhcnRTYW1wbGUgKHFwVGVzdExvZyogbG9nKQorIHsKKy0JREVf
QVNTRVJUKGxvZyk7CistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworKyAgICBERV9BU1NFUlQo
bG9nKTsKKysgICAgZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisgCistCURFX0FTU0VSVChDb250
YWluZXJTdGFja19nZXRUb3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVf
U0FNUExFTElTVCk7CisrICAgIERFX0FTU0VSVChDb250YWluZXJTdGFja19nZXRUb3AoJmxvZy0+
Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVfU0FNUExFTElTVCk7CisgCistCWlmICgh
cXBYbWxXcml0ZXJfc3RhcnRFbGVtZW50KGxvZy0+d3JpdGVyLCAiU2FtcGxlIiwgMCwgREVfTlVM
TCkpCistCXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfc3RhcnRTYW1wbGUoKTogV3JpdGluZyBY
TUwgZmFpbGVkXG4iKTsKKy0JCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCQlyZXR1cm4g
REVfRkFMU0U7CistCX0KKysgICAgaWYgKCFxcFhtbFdyaXRlcl9zdGFydEVsZW1lbnQobG9nLT53
cml0ZXIsICJTYW1wbGUiLCAwLCBERV9OVUxMKSkKKysgICAgeworKyAgICAgICAgcXBQcmludGYo
InFwVGVzdExvZ19zdGFydFNhbXBsZSgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAg
ICAgZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsK
KysgICAgfQorIAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcHVzaCgmbG9nLT5jb250YWlu
ZXJTdGFjaywgQ09OVEFJTkVSVFlQRV9TQU1QTEUpKTsKKysgICAgREVfQVNTRVJUKENvbnRhaW5l
clN0YWNrX3B1c2goJmxvZy0+Y29udGFpbmVyU3RhY2ssIENPTlRBSU5FUlRZUEVfU0FNUExFKSk7
CisgCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCXJldHVybiBERV9UUlVFOworKyAg
ICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9Cisg
CisgZGVCb29sIHFwVGVzdExvZ193cml0ZVZhbHVlRmxvYXQgKHFwVGVzdExvZyogbG9nLCBkb3Vi
bGUgdmFsdWUpCisgeworLQljaGFyIHRtcFN0cmluZ1s1MTJdOworLQlkb3VibGVUb1N0cmluZyh2
YWx1ZSwgdG1wU3RyaW5nLCAoaW50KXNpemVvZih0bXBTdHJpbmcpKTsKKysgICAgY2hhciB0bXBT
dHJpbmdbNTEyXTsKKysgICAgZG91YmxlVG9TdHJpbmcodmFsdWUsIHRtcFN0cmluZywgKGludClz
aXplb2YodG1wU3RyaW5nKSk7CisgCistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworKyAgICBk
ZU11dGV4X2xvY2sobG9nLT5sb2NrKTsKKyAKKy0JREVfQVNTRVJUKENvbnRhaW5lclN0YWNrX2dl
dFRvcCgmbG9nLT5jb250YWluZXJTdGFjaykgPT0gQ09OVEFJTkVSVFlQRV9TQU1QTEUpOworKyAg
ICBERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfZ2V0VG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9
PSBDT05UQUlORVJUWVBFX1NBTVBMRSk7CisgCistCWlmICghcXBYbWxXcml0ZXJfd3JpdGVTdHJp
bmdFbGVtZW50KGxvZy0+d3JpdGVyLCAiVmFsdWUiLCAmdG1wU3RyaW5nWzBdKSkKKy0JeworLQkJ
cXBQcmludGYoInFwVGVzdExvZ193cml0ZVNhbXBsZVZhbHVlKCk6IFdyaXRpbmcgWE1MIGZhaWxl
ZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNF
OworLQl9CisrICAgIGlmICghcXBYbWxXcml0ZXJfd3JpdGVTdHJpbmdFbGVtZW50KGxvZy0+d3Jp
dGVyLCAiVmFsdWUiLCAmdG1wU3RyaW5nWzBdKSkKKysgICAgeworKyAgICAgICAgcXBQcmludGYo
InFwVGVzdExvZ193cml0ZVNhbXBsZVZhbHVlKCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7Cisr
ICAgICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICAgICAgcmV0dXJuIERFX0ZB
TFNFOworKyAgICB9CisgCistCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7CistCXJldHVybiBE
RV9UUlVFOworKyAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworKyAgICByZXR1cm4gREVf
VFJVRTsKKyB9CisgCisgZGVCb29sIHFwVGVzdExvZ193cml0ZVZhbHVlSW50ZWdlciAocXBUZXN0
TG9nKiBsb2csIGRlSW50NjQgdmFsdWUpCisgeworLQljaGFyIHRtcFN0cmluZ1s2NF07CistCWlu
dDY0VG9TdHJpbmcodmFsdWUsIHRtcFN0cmluZyk7CisrICAgIGNoYXIgdG1wU3RyaW5nWzY0XTsK
KysgICAgaW50NjRUb1N0cmluZyh2YWx1ZSwgdG1wU3RyaW5nKTsKKyAKKy0JZGVNdXRleF9sb2Nr
KGxvZy0+bG9jayk7CisrICAgIGRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworIAorLQlERV9BU1NF
UlQoQ29udGFpbmVyU3RhY2tfZ2V0VG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9PSBDT05UQUlO
RVJUWVBFX1NBTVBMRSk7CisrICAgIERFX0FTU0VSVChDb250YWluZXJTdGFja19nZXRUb3AoJmxv
Zy0+Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVfU0FNUExFKTsKKyAKKy0JaWYgKCFx
cFhtbFdyaXRlcl93cml0ZVN0cmluZ0VsZW1lbnQobG9nLT53cml0ZXIsICJWYWx1ZSIsICZ0bXBT
dHJpbmdbMF0pKQorLQl7CistCQlxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlU2FtcGxlVmFsdWUo
KTogV3JpdGluZyBYTUwgZmFpbGVkXG4iKTsKKy0JCWRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7
CistCQlyZXR1cm4gREVfRkFMU0U7CistCX0KKysgICAgaWYgKCFxcFhtbFdyaXRlcl93cml0ZVN0
cmluZ0VsZW1lbnQobG9nLT53cml0ZXIsICJWYWx1ZSIsICZ0bXBTdHJpbmdbMF0pKQorKyAgICB7
CisrICAgICAgICBxcFByaW50ZigicXBUZXN0TG9nX3dyaXRlU2FtcGxlVmFsdWUoKTogV3JpdGlu
ZyBYTUwgZmFpbGVkXG4iKTsKKysgICAgICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9jayk7Cisr
ICAgICAgICByZXR1cm4gREVfRkFMU0U7CisrICAgIH0KKyAKKy0JZGVNdXRleF91bmxvY2sobG9n
LT5sb2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0ZXhfdW5sb2NrKGxvZy0+bG9j
ayk7CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyBkZUJvb2wgcXBUZXN0TG9nX2VuZFNh
bXBsZSAocXBUZXN0TG9nKiBsb2cpCisgeworLQlERV9BU1NFUlQobG9nKTsKKy0JZGVNdXRleF9s
b2NrKGxvZy0+bG9jayk7CisrICAgIERFX0FTU0VSVChsb2cpOworKyAgICBkZU11dGV4X2xvY2so
bG9nLT5sb2NrKTsKKyAKKy0JaWYgKCFxcFhtbFdyaXRlcl9lbmRFbGVtZW50KGxvZy0+d3JpdGVy
LCAiU2FtcGxlIikpCistCXsKKy0JCXFwUHJpbnRmKCJxcFRlc3RMb2dfZW5kU2FtcGxlKCk6IFdy
aXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlkZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJ
cmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAgIGlmICghcXBYbWxXcml0ZXJfZW5kRWxlbWVudChs
b2ctPndyaXRlciwgIlNhbXBsZSIpKQorKyAgICB7CisrICAgICAgICBxcFByaW50ZigicXBUZXN0
TG9nX2VuZFNhbXBsZSgpOiBXcml0aW5nIFhNTCBmYWlsZWRcbiIpOworKyAgICAgICAgZGVNdXRl
eF91bmxvY2sobG9nLT5sb2NrKTsKKysgICAgICAgIHJldHVybiBERV9GQUxTRTsKKysgICAgfQor
IAorLQlERV9BU1NFUlQoQ29udGFpbmVyU3RhY2tfcG9wKCZsb2ctPmNvbnRhaW5lclN0YWNrKSA9
PSBDT05UQUlORVJUWVBFX1NBTVBMRSk7CisrICAgIERFX0FTU0VSVChDb250YWluZXJTdGFja19w
b3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVfU0FNUExFKTsKKyAKKy0J
ZGVNdXRleF91bmxvY2sobG9nLT5sb2NrKTsKKy0JcmV0dXJuIERFX1RSVUU7CisrICAgIGRlTXV0
ZXhfdW5sb2NrKGxvZy0+bG9jayk7CisrICAgIHJldHVybiBERV9UUlVFOworIH0KKyAKKyBkZUJv
b2wgcXBUZXN0TG9nX2VuZFNhbXBsZUxpc3QgKHFwVGVzdExvZyogbG9nKQorIHsKKy0JREVfQVNT
RVJUKGxvZyk7CistCWRlTXV0ZXhfbG9jayhsb2ctPmxvY2spOworKyAgICBERV9BU1NFUlQobG9n
KTsKKysgICAgZGVNdXRleF9sb2NrKGxvZy0+bG9jayk7CisgCistCWlmICghcXBYbWxXcml0ZXJf
ZW5kRWxlbWVudChsb2ctPndyaXRlciwgIlNhbXBsZUxpc3QiKSkKKy0JeworLQkJcXBQcmludGYo
InFwVGVzdExvZ19lbmRTYW1wbGVMaXN0KCk6IFdyaXRpbmcgWE1MIGZhaWxlZFxuIik7CistCQlk
ZU11dGV4X3VubG9jayhsb2ctPmxvY2spOworLQkJcmV0dXJuIERFX0ZBTFNFOworLQl9CisrICAg
IGlmICghcXBYbWxXcml0ZXJfZW5kRWxlbWVudChsb2ctPndyaXRlciwgIlNhbXBsZUxpc3QiKSkK
KysgICAgeworKyAgICAgICAgcXBQcmludGYoInFwVGVzdExvZ19lbmRTYW1wbGVMaXN0KCk6IFdy
aXRpbmcgWE1MIGZhaWxlZFxuIik7CisrICAgICAgICBkZU11dGV4X3VubG9jayhsb2ctPmxvY2sp
OworKyAgICAgICAgcmV0dXJuIERFX0ZBTFNFOworKyAgICB9CisgCistCURFX0FTU0VSVChDb250
YWluZXJTdGFja19wb3AoJmxvZy0+Y29udGFpbmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVfU0FN
UExFTElTVCk7CisrICAgIERFX0FTU0VSVChDb250YWluZXJTdGFja19wb3AoJmxvZy0+Y29udGFp
bmVyU3RhY2spID09IENPTlRBSU5FUlRZUEVfU0FNUExFTElTVCk7CisgCistCWRlTXV0ZXhfdW5s
b2NrKGxvZy0+bG9jayk7CistCXJldHVybiBERV9UUlVFOworKyAgICBkZU11dGV4X3VubG9jayhs
b2ctPmxvY2spOworKyAgICByZXR1cm4gREVfVFJVRTsKKyB9CisgCisgZGVVaW50MzIgcXBUZXN0
TG9nX2dldExvZ0ZsYWdzIChjb25zdCBxcFRlc3RMb2cqIGxvZykKKyB7CistCURFX0FTU0VSVChs
b2cpOworLQlyZXR1cm4gbG9nLT5mbGFnczsKKysgICAgREVfQVNTRVJUKGxvZyk7CisrICAgIHJl
dHVybiBsb2ctPmZsYWdzOworIH0KKyAKKyBjb25zdCBjaGFyKiBxcEdldFRlc3RSZXN1bHROYW1l
IChxcFRlc3RSZXN1bHQgcmVzdWx0KQorIHsKKy0JcmV0dXJuIFFQX0xPT0tVUF9TVFJJTkcoc19x
cFRlc3RSZXN1bHRNYXAsIHJlc3VsdCk7CisrICAgIHJldHVybiBRUF9MT09LVVBfU1RSSU5HKHNf
cXBUZXN0UmVzdWx0TWFwLCByZXN1bHQpOworIH0KK2RpZmYgLS1naXQgYS9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy9NdWx0aXZpZXdQZXJmLmNwcCBiL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL011bHRpdmll
d1BlcmYuY3BwCitpbmRleCA4YzEwNmI0OTMuLmMzZDk5ZDIzZCAxMDA2NDQKKy0tLSBhL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL011bHRpdmlld1BlcmYuY3BwCisrKysgYi9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9NdWx0aXZpZXdQZXJmLmNwcAorQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIE11bHRpdmll
d0NQVUJvdW5kQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKKyAgICAgICAgICJ7XG4i
CisgICAgICAgICAiICAgdmVjNCB2ID0gdlBvc2l0aW9uO1xuIgorICAgICAgICAgIiAgIHYueHkg
Kz0gdU9mZnNldDtcbiIKKy0gICAgICAgICIJZ2xfUG9zaXRpb24gPSB2O1xuIgorKyAgICAgICAg
IiAgIGdsX1Bvc2l0aW9uID0gdjtcbiIKKyAgICAgICAgICJ9XG4iOworIAorICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmZnMgPQorQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIE11bHRpdmlld0dQVUJv
dW5kQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKKyAgICAgICAgICIgICBmcmFnX0Nv
bDMgPSB2ZXJ0X0NvbDM7XG4iCisgICAgICAgICAiICAgZnJhZ19Db2w0ID0gdmVydF9Db2w0O1xu
IgorICAgICAgICAgIiAgIGZyYWdfQ29sNSA9IHZlcnRfQ29sNTtcbiIKKy0gICAgICAgICIJZ2xf
UG9zaXRpb24gPSB2UG9zaXRpb247XG4iCisrICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2UG9z
aXRpb247XG4iCisgICAgICAgICAifVxuIjsKKyAKKyAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZz
ID0KK2RpZmYgLS1naXQgYS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL3ByZXR0eXdyaXRlci5oIGIvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9wcmV0dHl3cml0ZXIuaAoraW5kZXggY2UyZGFjNWExLi4xZDdj
NzBmMDIgMTAwNjQ0CistLS0gYS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1
ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oCisrKysgYi9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oCitAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CisgICAgIH0KKyAKKyAgICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6
ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkgPSBmYWxzZSkgeyByZXR1cm4gU3RyaW5nKHN0ciwgbGVu
Z3RoLCBjb3B5KTsgfQorLQkKKysgICAgCisgICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBlIG1l
bWJlckNvdW50ID0gMCkgeworICAgICAgICAgKHZvaWQpbWVtYmVyQ291bnQ7CisgICAgICAgICBS
QVBJREpTT05fQVNTRVJUKEJhc2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgPj0gc2l6ZW9mKHR5
cGVuYW1lIEJhc2U6OkxldmVsKSk7CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9yZWFkZXIuaCBiL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmVhZGVyLmgKK2luZGV4IDA4NDI1ZWI5
ZS4uYmM1Y2RjZjJkIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9yZWFkZXIuaAorKysrIGIvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9yZWFkZXIuaAorQEAgLTI2MSwyMyArMjYxLDIz
IEBAIHZvaWQgU2tpcFdoaXRlc3BhY2UoSW5wdXRTdHJlYW0mIGlzKSB7CisgI2lmZGVmIFJBUElE
SlNPTl9TU0U0MgorIC8vISBTa2lwIHdoaXRlc3BhY2Ugd2l0aCBTU0UgNC4yIHBjbXBpc3RybSBp
bnN0cnVjdGlvbiwgdGVzdGluZyAxNiA4LWJ5dGUgY2hhcmFjdGVycyBhdCBvbmNlLgorIGlubGlu
ZSBjb25zdCBjaGFyICpTa2lwV2hpdGVzcGFjZV9TSU1EKGNvbnN0IGNoYXIqIHApIHsKKy0JLy8g
RmFzdCByZXR1cm4gZm9yIHNpbmdsZSBub24td2hpdGVzcGFjZQorLQlpZiAoKnAgPT0gJyAnIHx8
ICpwID09ICdcbicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXHQnKQorLQkJKytwOworLQllbHNl
CistCQlyZXR1cm4gcDsKKy0KKy0JLy8gMTYtYnl0ZSBhbGlnbiB0byB0aGUgbmV4dCBib3VuZGFy
eQorLQljb25zdCBjaGFyKiBuZXh0QWxpZ25lZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KChyZWludGVycHJldF9jYXN0PHNpemVfdD4ocCkgKyAxNSkgJiB+MTUpOworLQl3aGlsZSAo
cCAhPSBuZXh0QWxpZ25lZCkKKy0JCWlmICgqcCA9PSAnICcgfHwgKnAgPT0gJ1xuJyB8fCAqcCA9
PSAnXHInIHx8ICpwID09ICdcdCcpCistCQkJKytwOworLQkJZWxzZQorLQkJCXJldHVybiBwOwor
KyAgICAvLyBGYXN0IHJldHVybiBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCisrICAgIGlmICgq
cCA9PSAnICcgfHwgKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInIHx8ICpwID09ICdcdCcpCisrICAg
ICAgICArK3A7CisrICAgIGVsc2UKKysgICAgICAgIHJldHVybiBwOworKworKyAgICAvLyAxNi1i
eXRlIGFsaWduIHRvIHRoZSBuZXh0IGJvdW5kYXJ5CisrICAgIGNvbnN0IGNoYXIqIG5leHRBbGln
bmVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6
ZV90PihwKSArIDE1KSAmIH4xNSk7CisrICAgIHdoaWxlIChwICE9IG5leHRBbGlnbmVkKQorKyAg
ICAgICAgaWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0g
J1x0JykKKysgICAgICAgICAgICArK3A7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcmV0
dXJuIHA7CisgCisgICAgIC8vIFRoZSByZXN0IG9mIHN0cmluZyB1c2luZyBTSU1ECistCXN0YXRp
YyBjb25zdCBjaGFyIHdoaXRlc3BhY2VbMTZdID0gIiBcblxyXHQiOworLQljb25zdCBfX20xMjhp
IHcgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZVswXSk7Cisr
ICAgIHN0YXRpYyBjb25zdCBjaGFyIHdoaXRlc3BhY2VbMTZdID0gIiBcblxyXHQiOworKyAgICBj
b25zdCBfX20xMjhpIHcgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVz
cGFjZVswXSk7CisgCisgICAgIGZvciAoOzsgcCArPSAxNikgeworICAgICAgICAgY29uc3QgX19t
MTI4aSBzID0gX21tX2xvYWRfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKilwKTsKK0BAIC0yOTgsMzEg
KzI5OCwzMSBAQCBpbmxpbmUgY29uc3QgY2hhciAqU2tpcFdoaXRlc3BhY2VfU0lNRChjb25zdCBj
aGFyKiBwKSB7CisgCisgLy8hIFNraXAgd2hpdGVzcGFjZSB3aXRoIFNTRTIgaW5zdHJ1Y3Rpb25z
LCB0ZXN0aW5nIDE2IDgtYnl0ZSBjaGFyYWN0ZXJzIGF0IG9uY2UuCisgaW5saW5lIGNvbnN0IGNo
YXIgKlNraXBXaGl0ZXNwYWNlX1NJTUQoY29uc3QgY2hhciogcCkgeworLQkvLyBGYXN0IHJldHVy
biBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCistCWlmICgqcCA9PSAnICcgfHwgKnAgPT0gJ1xu
JyB8fCAqcCA9PSAnXHInIHx8ICpwID09ICdcdCcpCistCQkrK3A7CistCWVsc2UKKy0JCXJldHVy
biBwOworKyAgICAvLyBGYXN0IHJldHVybiBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCisrICAg
IGlmICgqcCA9PSAnICcgfHwgKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInIHx8ICpwID09ICdcdCcp
CisrICAgICAgICArK3A7CisrICAgIGVsc2UKKysgICAgICAgIHJldHVybiBwOworIAorICAgICAv
LyAxNi1ieXRlIGFsaWduIHRvIHRoZSBuZXh0IGJvdW5kYXJ5CistCWNvbnN0IGNoYXIqIG5leHRB
bGlnbmVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8
c2l6ZV90PihwKSArIDE1KSAmIH4xNSk7CistCXdoaWxlIChwICE9IG5leHRBbGlnbmVkKQorLQkJ
aWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykK
Ky0JCQkrK3A7CistCQllbHNlCistCQkJcmV0dXJuIHA7CisrICAgIGNvbnN0IGNoYXIqIG5leHRB
bGlnbmVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8
c2l6ZV90PihwKSArIDE1KSAmIH4xNSk7CisrICAgIHdoaWxlIChwICE9IG5leHRBbGlnbmVkKQor
KyAgICAgICAgaWYgKCpwID09ICcgJyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAg
PT0gJ1x0JykKKysgICAgICAgICAgICArK3A7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAg
cmV0dXJuIHA7CisgCisgICAgIC8vIFRoZSByZXN0IG9mIHN0cmluZworLQlzdGF0aWMgY29uc3Qg
Y2hhciB3aGl0ZXNwYWNlc1s0XVsxN10gPSB7CistCQkiICAgICAgICAgICAgICAgICIsCistCQki
XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4iLAorLQkJIlxyXHJcclxyXHJcclxyXHJc
clxyXHJcclxyXHJcclxyIiwKKy0JCSJcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCJ9
OworLQorLQkJY29uc3QgX19tMTI4aSB3MCA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgX19tMTI4
aSAqKSZ3aGl0ZXNwYWNlc1swXVswXSk7CistCQljb25zdCBfX20xMjhpIHcxID0gX21tX2xvYWR1
X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2VzWzFdWzBdKTsKKy0JCWNvbnN0IF9f
bTEyOGkgdzIgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZXNb
Ml1bMF0pOworLQkJY29uc3QgX19tMTI4aSB3MyA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgX19t
MTI4aSAqKSZ3aGl0ZXNwYWNlc1szXVswXSk7CisrICAgIHN0YXRpYyBjb25zdCBjaGFyIHdoaXRl
c3BhY2VzWzRdWzE3XSA9IHsKKysgICAgICAgICIgICAgICAgICAgICAgICAgIiwKKysgICAgICAg
ICJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiIsCisrICAgICAgICAiXHJcclxyXHJc
clxyXHJcclxyXHJcclxyXHJcclxyXHIiLAorKyAgICAgICAgIlx0XHRcdFx0XHRcdFx0XHRcdFx0
XHRcdFx0XHRcdFx0In07CisrCisrICAgICAgICBjb25zdCBfX20xMjhpIHcwID0gX21tX2xvYWR1
X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2VzWzBdWzBdKTsKKysgICAgICAgIGNv
bnN0IF9fbTEyOGkgdzEgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVz
cGFjZXNbMV1bMF0pOworKyAgICAgICAgY29uc3QgX19tMTI4aSB3MiA9IF9tbV9sb2FkdV9zaTEy
OCgoY29uc3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1syXVswXSk7CisrICAgICAgICBjb25zdCBf
X20xMjhpIHczID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2Vz
WzNdWzBdKTsKKyAKKyAgICAgZm9yICg7OyBwICs9IDE2KSB7CisgICAgICAgICBjb25zdCBfX20x
MjhpIHMgPSBfbW1fbG9hZF9zaTEyOCgoY29uc3QgX19tMTI4aSAqKXApOworZGlmZiAtLWdpdCBh
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vd3JpdGVy
LmggYi9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3dy
aXRlci5oCitpbmRleCA2ZGFhNzgzMzAuLjk4OTMxZmUzMSAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vd3JpdGVyLmgKKysrKyBi
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vd3JpdGVy
LmgKK0BAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgorICAgICB9CiAgCisgICAgIGJvb2wgS2V5
KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5ID0gZmFsc2UpIHsgcmV0
dXJuIFN0cmluZyhzdHIsIGxlbmd0aCwgY29weSk7IH0KKy0JCisrICAgIAorICAgICBib29sIEVu
ZE9iamVjdChTaXplVHlwZSBtZW1iZXJDb3VudCA9IDApIHsKKyAgICAgICAgICh2b2lkKW1lbWJl
ckNvdW50OworICAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZXZlbF9zdGFja18uR2V0U2l6ZSgp
ID49IHNpemVvZihMZXZlbCkpOwo=
</data>
<flag name="review"
          id="347768"
          type_id="1"
          status="+"
          setter="graouts"
    />
          </attachment>
      

    </bug>

</bugzilla>