<?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>66087</bug_id>
          
          <creation_ts>2011-08-11 13:08:05 -0700</creation_ts>
          <short_desc>Remove dead code: borderInnerRect</short_desc>
          <delta_ts>2011-08-17 15:45:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>adamk</cc>
    
    <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>449965</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-08-11 13:08:05 -0700</bug_when>
    <thetext>Was originally used in drawBoxSideFromPath but no longer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450106</commentid>
    <comment_count>1</comment_count>
      <attachid>103691</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-08-11 15:49:19 -0700</bug_when>
    <thetext>Created attachment 103691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450133</commentid>
    <comment_count>2</comment_count>
      <attachid>103691</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 16:19:58 -0700</bug_when>
    <thetext>Comment on attachment 103691
Patch

Clearing flags on attachment: 103691

Committed r92888: &lt;http://trac.webkit.org/changeset/92888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450134</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-11 16:20:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452649</commentid>
    <comment_count>4</comment_count>
      <attachid>104259</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-17 15:44:55 -0700</bug_when>
    <thetext>Created attachment 104259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452650</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-08-17 15:45:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=104259) [details]
&gt; Patch

Ignore this patch, webkit-patch upload failure (bad parsing of ChangeLog).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103691</attachid>
            <date>2011-08-11 15:49:19 -0700</date>
            <delta_ts>2011-08-17 15:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66087-20110811154917.patch</filename>
            <type>text/plain</type>
            <size>2563</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyODgzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMTEgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbW92ZSBkZWFkIGNvZGU6
IGJvcmRlcklubmVyUmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYwODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmluZyBhbiBvbGQgYW5kIGN1cnJlbnRseSB1bnVzZWQgZnVuY3Rpb246IFJl
bmRlck9iamVjdDo6Ym9yZGVySW5uZXJSZWN0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5j
ZSBJJ20ganVzdCBwcnVuaW5nIGRlYWQgY29kZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKwogMjAx
MS0wOC0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVGhlIFBhZ2VTZXJpYWxpemVyIHNob3VsZCBhbHdheXMgdXNlIGFic29sdXRlIFVSTApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDky
ODczKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxNCwxNSArOTE0LDYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRyYXdMaW5l
Rm9yQm94U2lkZShHcgogICAgIH0KIH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmJvcmRlcklu
bmVyUmVjdChjb25zdCBJbnRSZWN0JiBib3JkZXJSZWN0LCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0
aCwgdW5zaWduZWQgc2hvcnQgYm90dG9tV2lkdGgsIHVuc2lnbmVkIHNob3J0IGxlZnRXaWR0aCwg
dW5zaWduZWQgc2hvcnQgcmlnaHRXaWR0aCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW50UmVjdCgK
LSAgICAgICAgICAgIGJvcmRlclJlY3QueCgpICsgbGVmdFdpZHRoLCAKLSAgICAgICAgICAgIGJv
cmRlclJlY3QueSgpICsgdG9wV2lkdGgsIAotICAgICAgICAgICAgYm9yZGVyUmVjdC53aWR0aCgp
IC0gbGVmdFdpZHRoIC0gcmlnaHRXaWR0aCwgCi0gICAgICAgICAgICBib3JkZXJSZWN0LmhlaWdo
dCgpIC0gdG9wV2lkdGggLSBib3R0b21XaWR0aCk7Ci19Ci0KICNpZiAhSEFWRShQQVRIX0JBU0VE
X0JPUkRFUl9SQURJVVNfRFJBV0lORykKIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3QXJjRm9yQm94
U2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHgsIGludCB5LCBmbG9h
dCB0aGlja25lc3MsIGNvbnN0IEludFNpemUmIHJhZGl1cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgYW5nbGVTdGFydCwgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSBz
LCBDb2xvciBjb2xvciwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHJldmlzaW9uIDkyODczKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsOSArNDYzLDYgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGFuZ2xlU3BhbiwgQm94U2lkZSwgQ29sb3IsIEVCb3Jk
ZXJTdHlsZSwgYm9vbCBmaXJzdENvcm5lcik7CiAjZW5kaWYKIAotICAgIEludFJlY3QgYm9yZGVy
SW5uZXJSZWN0KGNvbnN0IEludFJlY3QmLCB1bnNpZ25lZCBzaG9ydCB0b3BXaWR0aCwgdW5zaWdu
ZWQgc2hvcnQgYm90dG9tV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbGVmdFdpZHRoLCB1bnNpZ25lZCBzaG9ydCByaWdodFdpZHRoKSBjb25zdDsKLQog
ICAgIC8vIFRoZSBwc2V1ZG8gZWxlbWVudCBzdHlsZSBjYW4gYmUgY2FjaGVkIG9yIHVuY2FjaGVk
LiAgVXNlIHRoZSBjYWNoZWQgbWV0aG9kIGlmIHRoZSBwc2V1ZG8gZWxlbWVudCBkb2Vzbid0IHJl
c3BlY3QKICAgICAvLyBhbnkgcHNldWRvIGNsYXNzZXMgKGFuZCB0aGVyZWZvcmUgaGFzIG5vIGNv
bmNlcHQgb2YgY2hhbmdpbmcgc3RhdGUpLgogICAgIFJlbmRlclN0eWxlKiBnZXRDYWNoZWRQc2V1
ZG9TdHlsZShQc2V1ZG9JZCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104259</attachid>
            <date>2011-08-17 15:44:55 -0700</date>
            <delta_ts>2011-08-17 15:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66087-20110817154454.patch</filename>
            <type>text/plain</type>
            <size>120586</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4ODkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZWY1MzdlYTE2ZGRhY2U3ZTZiZGJj
NmQxYjc5Njk2Yzc5NGEzNWJiLi44NjgxMGFkMTAyZDViYzU5YjFkMmY2NjlhMzRmZDdjNzY2OTk2
NDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMTEgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW3dvcmsgaW4gcHJvZ3Jlc3NdIEltcGxlbWVudCBN
dXRhdGlvbkxpc3RlbmVyL011dGF0aW9uVGFyZ2V0LCBhIHJlcGxhY2VtZW50IGZvciBET00gTXV0
YXRpb24gRXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NjA3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKwogMjAxMS0w
OC0xMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIHBmZWxkbWFu
IHNheXMgd2UgbmVlZCB0byByZWJhc2VsaW5lIHRoaXMgdGVzdC4gIFRoZSBtYXNzaXZlbHkgY29t
cGxleApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhkMGIxZmEzZjEyNzNlNTFmOGU2MGE2ZDBmMTZmMTIxODVh
M2Q4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1s
aXN0ZW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCB0aGF0IE11dGF0aW9u
TGlzdGVuZXJzIHdvcmsgYXMgZXhwZWN0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG11dGF0aW9uc1swXS5pbnNlcnRlZE5vZGVzWzBdIGlzIGluc2VydGVkTm9kZXNb
MF0KK1BBU1MgbXV0YXRpb25zWzFdLmluc2VydGVkTm9kZXNbMF0gaXMgaW5zZXJ0ZWROb2Rlc1sx
XQorUEFTUyBtdXRhdGlvbnNbMl0uaW5zZXJ0ZWROb2Rlc1swXSBpcyBpbnNlcnRlZE5vZGVzWzJd
CitQQVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWRO
b2Rlc1swXSBpcyByZW1vdmVkTm9kZXNbMF0KK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgdHJ1ZQor
UEFTUyBtdXRhdGlvbnNbMF0uYXR0ck5hbWUgaXMgImRhdGEtZm9vIgorUEFTUyBsaXN0ZW5lckNh
bGxlZCBpcyB0cnVlCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgdGV4dE5vZGVzWzBdCitQ
QVNTIGxpc3RlbmVyQ2FsbGVkIGlzIHRydWUKK1BBU1MgbGlzdGVuZXJDYWxsZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9tdXRhdGlvbi1saXN0ZW5lci5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Yzc3
YTg4NDQyMGQzMDJjMDUwN2M4NGVlM2JlZGI2MWI3OWEzMzg3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbXV0YXRpb24tbGlzdGVuZXIuaHRtbApAQCAtMCwwICsxLDk0
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+CisgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICA8ZGl2
IGlkPSJzYW5kYm94IiBzdHlsZT0iZGlzcGxheTpub25lIj48L2Rpdj4KKyAgPHNjcmlwdD4KKyAg
ICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbkxpc3RlbmVycyB3b3JrIGFzIGV4
cGVjdGVkLicpOworICAgICAgICB2YXIgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgdmFyIGxp
c3RlbmVyQ2FsbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBpbnNlcnRlZE5vZGVzOworICAgICAg
ICB2YXIgcmVtb3ZlZE5vZGVzOworICAgICAgICB2YXIgbW9kaWZpZWRBdHRyczsKKyAgICAgICAg
dmFyIHRleHROb2RlczsKKyAgICAgICAgZnVuY3Rpb24gbGlzdGVuZXIobSkgeworICAgICAgICAg
ICAgbGlzdGVuZXJDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgbXV0YXRpb25zID0gbTsKKyAg
ICAgICAgICAgIHZhciBpbnNlcnRlZEluZGV4ID0gMDsKKyAgICAgICAgICAgIHZhciByZW1vdmVk
SW5kZXggPSAwOworICAgICAgICAgICAgdmFyIGF0dHJJbmRleCA9IDA7CisgICAgICAgICAgICB2
YXIgdGV4dE5vZGVJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0u
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAobVtpXS50eXBlID09ICdjaGlsZGxp
c3QnKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbVtpXS5pbnNl
cnRlZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWycgKyBpICsgJ10uaW5zZXJ0ZWROb2Rlc1snICsgaiArICddJywgJ2luc2Vy
dGVkTm9kZXNbJyArIChpbnNlcnRlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1baV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWycgKyBpICsgJ10ucmVtb3ZlZE5vZGVzWycgKyBqICsgJ10nLCAncmVtb3ZlZE5v
ZGVzWycgKyAocmVtb3ZlZEluZGV4KyspICsgJ10nKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobVtpXS50eXBlID09ICdhdHRyaWJ1dGUnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbXV0YXRpb25zWycgKyBp
ICsgJ10uYXR0ck5hbWUnLCBtb2RpZmllZEF0dHJzW2F0dHJJbmRleCsrXSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChtW2ldLnR5cGUgPT0gJ2NoYXJhY3RlcmRhdGEnKSB7CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbJyArIGkgKyAnXS50YXJnZXQnLCAndGV4
dE5vZGVzWycgKyAodGV4dE5vZGVJbmRleCsrKSArICddJyk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnNlcnRlZE5vZGVzID0gW107CisgICAgICAg
ICAgICByZW1vdmVkTm9kZXMgPSBbXTsKKyAgICAgICAgICAgIG1vZGlmaWVkQXR0cnMgPSBbXTsK
KyAgICAgICAgICAgIHRleHROb2RlcyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICAvLyBUZXN0IGluc2VydGlvbnMsICJidWJibGlu
ZyIsIGFuZCBkZS1kdXBpbmcuCisgICAgICAgIHZhciBpbm5lclNhbmRib3ggPSBzYW5kYm94LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKKyAgICAgICAgc2FuZGJv
eC53ZWJraXRBZGRNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB7Y2hpbGRsaXN0OiB0cnVlfSk7
CisgICAgICAgIHZhciBhID0gc2FuZGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJykpOworICAgICAgICBhLnRleHRDb250ZW50ID0gJ2hlbGxvLCB3b3JsZCc7Cisg
ICAgICAgIHZhciBiID0gaW5uZXJTYW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NwYW4nKSk7CisgICAgICAgIGluc2VydGVkTm9kZXMgPSBbYSwgYS5maXJzdENoaWxk
LCBiXTsKKyAgICAgICAgc3Bpbk11dGF0aW9uUXVldWUoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCdsaXN0ZW5lckNhbGxlZCcpOworICAgICAgICBsaXN0ZW5lckNhbGxlZCA9IGZhbHNlOworCisg
ICAgICAgIC8vIFRlc3QgcmVtb3ZhbC4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFkZE11
dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHtjaGlsZGxpc3Q6IHRydWV9KTsKKyAgICAgICAgaW5u
ZXJTYW5kYm94LnJlbW92ZUNoaWxkKGIpOworICAgICAgICByZW1vdmVkTm9kZXMgPSBbYl07Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBUZXN0IGF0dHJpYnV0ZSBtdXRhdGlvbi4KKyAgICAgICAgaW5uZXJTYW5kYm94LndlYmtpdEFk
ZE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHthdHRyaWJ1dGU6IHRydWV9KTsKKyAgICAgICAg
bW9kaWZpZWRBdHRycyA9IFsnZGF0YS1mb28nXTsKKyAgICAgICAgaW5uZXJTYW5kYm94LnNldEF0
dHJpYnV0ZSgnZGF0YS1mb28nLCAnbXlkYXRhJyk7CisgICAgICAgIHNwaW5NdXRhdGlvblF1ZXVl
KCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVuZXJDYWxsZWQnKTsKKyAgICAgICAgbGlz
dGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICAvLyBUZXN0IGNoYXJhY3RlcmRhdGEgbXV0
YXRpb24uCisgICAgICAgIHNhbmRib3gud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5l
ciwge2NoYXJhY3RlcmRhdGE6IHRydWV9KTsKKyAgICAgICAgdGV4dE5vZGVzID0gW2EuZmlyc3RD
aGlsZF07CisgICAgICAgIGEuZmlyc3RDaGlsZC50ZXh0Q29udGVudCA9ICdnb29kYnllISc7Cisg
ICAgICAgIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnbGlzdGVu
ZXJDYWxsZWQnKTsKKyAgICAgICAgbGlzdGVuZXJDYWxsZWQgPSBmYWxzZTsKKworICAgICAgICBz
YW5kYm94LndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBz
YW5kYm94LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSk7CisgICAgICAg
IHNwaW5NdXRhdGlvblF1ZXVlKCk7CisgICAgICAgIHNob3VsZEJlRmFsc2UoJ2xpc3RlbmVyQ2Fs
bGVkJyk7CisKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgIDwv
c2NyaXB0PgorICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmZDNkZDczMGY0MmNl
ZDFlZWJmMjE1NDg5NDJhMjAwMTRmNGYxNy4uZmVkOWZlMGY4YTY2YjdmNjQ3NmY1OGRmOThlZGY5
ZWFlMTk0MjdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMCBAQAorMjAxMS0wOC0xMSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBbd29yayBpbiBwcm9ncmVz
c10gSW1wbGVtZW50IE11dGF0aW9uTGlzdGVuZXIvTXV0YXRpb25UYXJnZXQsIGEgcmVwbGFjZW1l
bnQgZm9yIERPTSBNdXRhdGlvbiBFdmVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUGFydGlhbGx5IGltcGxlbWVudHMgYW4gZXhwZXJpbWVudGFsLCB2
ZW5kb3ItcHJlZml4ZWQgQVBJIHdpdGggdGhlCisgICAgICAgIGhvcGUgb2YgZXZlbnR1YWxseSBy
ZXBsYWNpbmcgTXV0YXRpb25FdmVudHMuIFRoZSBBUEkgaXMgYmFzZWQgaW4KKyAgICAgICAgbGFy
Z2UgcGFydCBvbiBhIHByb3Bvc2FsIGJ5IEpvbmFzIFNpY2tpbmcgaW4gYSBtZXNzYWdlIHRvIHB1
YmxpYy13ZWJhcHBzOgorCisgICAgICAgIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVi
bGljL3B1YmxpYy13ZWJhcHBzLzIwMTFKdWxTZXAvMDM2OS5odG1sCisKKyAgICAgICAgVGhhdCB0
aHJlYWQgaXMgdmVyeSBsb25nLCBidXQgaGFzIGhlbHBmdWxseSBiZWVuIHN1bW1hcml6ZWQgYnkK
KyAgICAgICAgUmFmYWVsIFdlaW5zdGVpbiBpbiBhIHJlY2VudCBtZXNzYWdlOgorCisgICAgICAg
IGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13ZWJhcHBzLzIwMTFK
dWxTZXAvMDc3OS5odG1sCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggaXMgaW4gbm8g
d2F5IG1lYW50IHRvIGJlIGEgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIFRoZSBi
aWdnZXN0IG1pc3NpbmcgZmVhdHVyZSBpcyB0aGUgYWN0dWFsIGRpc3BhdGNoaW5nCisgICAgICAg
IG9mIE11dGF0aW9uUmVjb3JkTGlzdHMgdG8gTXV0YXRpb25MaXN0ZW5lcnM6IHRoZSBpbmNsdWRl
ZCBsYXlvdXQKKyAgICAgICAgdGVzdCBpbnN0ZWFkIGNhbGxzIGEgInNwaW5NdXRhdGlvblF1ZXVl
IiBmdW5jdGlvbiB0byB0cmlnZ2VyCisgICAgICAgIG5vdGlmaWNhdGlvbnMuIFRoaXMgaXMgbm90
IGFjdHVhbGx5IG1lYW50IHRvIGJlIGV4cG9zZWQgdG8gSlMsCisgICAgICAgIHRob3VnaDogbXkg
aG9wZSBpcyB0byBpbnN0ZWFkIGNhbGwgc3Bpbk11dGF0aW9uUXVldWUgZnJvbQorICAgICAgICBD
KyssIGVpdGhlciBmcm9tIHNvbWV3aGVyZSBpbiBXZWJDb3JlIG9yIChtb3JlIGxpa2VseSkgaW4K
KyAgICAgICAgdGhlIGVtYmVkZGVyLiBJIGhhdmUgYSBzZXBhcmF0ZSBjaGFuZ2Ugd2hpY2ggaW1w
bGVtZW50cyB0aGUKKyAgICAgICAgbGF0dGVyIGluIENocm9taXVtLgorCisgICAgICAgIFRoZSBv
dGhlciBtYWluIHRoaW5nIG1pc3NpbmcgZnJvbSB0aGlzIHBhdGNoIGlzIHRoYXQgTXV0YXRpb25S
ZWNvcmRzCisgICAgICAgIGFyZSBub3QgZGlzcGF0Y2hlZCBpbiBhbGwgdGhlIHByb3BlciBwbGFj
ZXMsIGUuZy4sIHRoZSBoYW5kbGluZyBvZgorICAgICAgICBpbm5lckhUTUwgaXMgbm90IGFzIHdl
IGhvcGUgaXQgdG8gYmUuIFRoaXMgaXMgc2ltcGx5IGEgbWF0dGVyIG9mCisgICAgICAgIHdhbnRp
bmcgdG8gcHV0IHRoaXMgcGF0Y2ggdXAgdG8gZ2V0IGZlZWRiYWNrOiBpdCBzaG91bGRuJ3QgYmUK
KyAgICAgICAgbXVjaCB3b3JrIHRvIGFkZCBNdXRhdGlvblJlY29yZCBkaXNwYXRjaGluZyBpbiBh
bGwgdGhlIHByb3BlcgorICAgICAgICBwbGFjZXMuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20v
bXV0YXRpb24tbGlzdGVuZXIuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9u
TGlzdGVuZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5l
cjo6SlNNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0
ZW5lcjo6fkpTTXV0YXRpb25MaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9u
TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0
ZW5lcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6
Omhhc2gpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTXV0YXRpb25MaXN0ZW5lcjo6aXNvbGF0ZWRXb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpKU011dGF0aW9uTGlzdGVuZXI6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNNdXRhdGlvbkxpc3RlbmVyOjpzZXRXcmFwcGVyKToKKyAgICAgICAgSlNNdXRhdGlvbkxp
c3RlbmVyIGlzIHZlcnkgc2ltaWxhciB0byBKU0V2ZW50TGlzdGVuZXIsCisgICAgICAgIHdpdGgg
YSBmZXcgc2ltcGxpZmljYXRpb25zLiAgSXRzIHJlYXNvbiBmb3IgZXhpc3RpbmcKKyAgICAgICAg
aXMgdGhhdCBOb2RlLndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIgbmVlZHMgdG8gYmVoYXZlCisg
ICAgICAgIGxpa2UgYWRkRXZlbnRMaXN0ZW5lciwgaW4gdGhhdCBkdXBsaWNhdGUgYWRkaXRpb25z
IGFyZQorICAgICAgICBpZ25vcmVkLiBUaGlzIHJlcXVpcmVzIHRoZSBvcGVyYXRvcj09IG1ldGhv
ZC4gV2UgYWxzbworICAgICAgICB3YW50IHRvIGF2b2lkIGRpc3BhdGNoaW5nIHRoZSBzYW1lIE11
dGF0aW9uUmVjb3JkCisgICAgICAgIG1vcmUgdGhhbiBvbmNlIHRvIGEgZ2l2ZW4gbGlzdGVuZXIs
IGFuZCBmb3IgdGhpcworICAgICAgICB3ZSB1c2UgYSBIYXNoTWFwLCB0aHVzIHRoZSB8aGFzaHwg
bWV0aG9kLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU05vZGU6OndlYmtpdEFkZE11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAg
U2luY2UgTXV0YXRpb25MaXN0ZW5lcnMgdGhlbXNlbHZlcyBhcmUgY3VzdG9tLCBzbworICAgICAg
ICBtdXN0IGJlIG11dGF0aW9uIGxpc3RlbmVyIGFkZGl0aW9uIGFuZCByZW1vdmFsLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0SW50
ZXJuYWxGaWVsZHMpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
OjpnZXRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpWOE11dGF0aW9uTGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjp+VjhNdXRhdGlvbkxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6d2Vha011dGF0aW9uTGlzdGVu
ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6OmRpc3Bv
c2VMaXN0ZW5lck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXI6
OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6aGFz
aCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFj
ay5oLgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25MaXN0ZW5lcjo6Z2V0TGlzdGVuZXJPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcjo6ZG9GaW5kV3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5k
T3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgVGhlIFY4IGVxdWl2YWxlbnRzIG9mIHRoZSBKU011
dGF0aW9uTGlzdGVuZXIgYWJvdmUuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhDdXN0b21Wb2lkQ2FsbGJhY2suaDoKKyAgICAgICAgR2VuZXJhbGl6ZWQgaW52b2tlQ2FsbGJh
Y2sgdG8gbWFrZSBpdCBzdWl0IHRoZSBwdXJwb3NlcyBvZgorICAgICAgICBWOE11dGF0aW9uTGlz
dGVuZXI6OmhhbmRsZUV2ZW50LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjp3ZWJraXRBZGRNdXRhdGlvbkxp
c3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhOb2RlOjp3ZWJraXRSZW1vdmVN
dXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICBBbmQgdGhlIGVxdWl2YWxlbnQgY3Vz
dG9tIG1ldGhvZHMgb24gTm9kZS4KKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQpOgor
ICAgICAgICBEaXNwYXRjaCAiY2hhcmFjdGVyZGF0YSIgbXV0YXRpb25zLgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNl
cnRpb25FdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVu
dHMpOgorICAgICAgICBEaXNwYXRjaCAiY2hpbGRsaXN0IiBtdXRhdGlvbnMuCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QXR0cmlidXRl
KToKKyAgICAgICAgRGlzcGF0Y2ggImF0dHJpYnV0ZSIgbXV0YXRpb25zLgorICAgICAgICAqIGRv
bS9NdXRhdGlvbkxpc3RlbmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25M
aXN0ZW5lcjo6fk11dGF0aW9uTGlzdGVuZXIpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQ2hpbGRsaXN0Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6Y3JlYXRlVGV4dERhdGFD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpNdXRhdGlvblJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29yZDo6fk11dGF0aW9uUmVjb3JkKToK
KyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblJlY29yZDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblJlY29y
ZDo6dGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjppbnNlcnRlZE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6Om5leHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjphdHRyTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvblJlY29yZDo6cHJldlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3Jk
OjpuZXdWYWx1ZSk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmlkbDogQWRkZWQuCisg
ICAgICAgIE11dGF0aW9uUmVjb3JkcyBhcmUgYW5hbG9nb3VzIHRvIEV2ZW50czogdGhleSBob2xk
IGRhdGEKKyAgICAgICAgYWJvdXQgYSBzaW5nbGUgbXV0YXRpb24uCisgICAgICAgICogZG9tL011
dGF0aW9uUmVjb3JkTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25S
ZWNvcmRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmRMaXN0
OjpNdXRhdGlvblJlY29yZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmRM
aXN0Ojp+TXV0YXRpb25SZWNvcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVj
b3JkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uUmVjb3JkTGlzdDo6
aXRlbSk6CisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkTGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vTXV0YXRpb25SZWNvcmRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgIE11dGF0aW9u
UmVjb3JkTGlzdHMgYXJlIGFycmF5LWxpa2Ugb2JqZWN0cyB3aGljaCBhcmUgcGFzc2VkIHRvCisg
ICAgICAgIE11dGF0aW9uTGlzdGVuZXJzLCBjb250YWluaW5nIGFsbCBNdXRhdGlvblJlY29yZHMg
c2luY2UgdGhlIGxhc3QgdGltZQorICAgICAgICBlYWNoIGxpc3RlbmVyIHdhcyBub3RpZmllZC4K
KyAgICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok11dGF0aW9uQ29udGV4dDo6TXV0YXRpb25Db250ZXh0UHRySGFzaDo6aGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpNdXRhdGlvbkNvbnRleHQ6Ok11dGF0aW9uQ29udGV4dFB0ckhhc2g6OmVx
dWFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRWZWN0b3JNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6YWN0aXZlTXV0YXRpb25Db250ZXh0cyk6CisgICAgICAgIChXZWJDb3JlOjpzcGluTXV0
YXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjplbnN1cmVNdXRhdGlvblF1ZXVlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblRhcmdldDo6fk11dGF0aW9uVGFyZ2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjphZGRNdXRhdGlvbkxpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24pOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvblRhcmdldC5oOiBBZGRlZC4KKyAgICAgICAgTXV0YXRpb25UYXJnZXQg
aXMgYW5hbG9nb3VzIHRvIEV2ZW50VGFyZ2V0LCBhbmQgaXMgYSBtaXhpbiBmb3IgTm9kZS4KKyAg
ICAgICAgKiBkb20vTXV0YXRpb25UYXJnZXREYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TXV0YXRpb25UYXJnZXREYXRhOjpNdXRhdGlvblRhcmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TXV0YXRpb25UYXJnZXREYXRhOjp+TXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
TXV0YXRpb25UYXJnZXREYXRhIGlzIG1lYW50IHRvIGJlIHBhcnQgb2YgTm9kZVJhcmVEYXRhLgor
ICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNdXRhdGlvblR5cGVzOjpjaGlsZGxpc3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0
aW9uVHlwZXM6OmF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBl
czo6Y2hhcmFjdGVyZGF0YU5hbWUpOgorICAgICAgICAqIGRvbS9NdXRhdGlvblR5cGVzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OmNoaWxkbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhdGlvblR5cGVzOjpzZXRDaGlsZGxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25U
eXBlczo6YXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldEF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJkYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uVHlwZXM6OnNldENoYXJhY3RlcmRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25UeXBlczo6TXV0YXRpb25UeXBlcyk6CisgICAgICAg
ICogZG9tL011dGF0aW9uVHlwZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgQSBzaW1wbGUgb2JqZWN0
IHRoYXQncyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGFkZE11dGF0aW9uTGlzdGVuZXIuCisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNdXRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKToKKyAgICAgICAg
TXV0YXRpb25UYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vTm9kZS5pZGw6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjptdXRhdGlvblRhcmdldERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjplbnN1cmVNdXRhdGlvblRhcmdldERhdGEpOgorICAg
ICAgICAqIGRvbS9SZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyOjpSZWdpc3RlcmVkTXV0YXRpb25M
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcjo6
bWVyZ2VUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
cjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzcGluTXV0YXRpb25RdWV1ZSk6CisgICAgICAgICogcGFnZS9E
T01XaW5kb3cuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgIE5vdGUg
dGhhdCB0aGVzZSBjaGFuZ2VzIHRvIERPTVdpbmRvdyBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhl
IGNoYW5nZSwKKyAgICAgICAgYW5kIGFyZSBzaW1wbHkgYSBzaGltIHRvIG1ha2UgaXQgZWFzeSB0
byBkZWFsIHdpdGggbXV0YXRpb25zIHdoaWxlIHdlCisgICAgICAgIGZpZ3VyZSBvdXQgdGhlIHRp
bWUtdG8tcnVuIGlzc3Vlcy4KKwogMjAxMS0wOC0xMSAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZTogYm9yZGVySW5uZXJSZWN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggYzU2YjE4OWQwYmFlZTU5ZDJjMDJhODRh
NWEyZTc2M2FkOTZjNTM3MC4uY2YxMjc5Y2UwOTJjNTBjNzFkMjBmZmUwM2E1YzRjYTI4MGNlOTll
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjQ0LDYgKzI0NCwxMCBAQAogI2lu
Y2x1ZGUgIkpTTWV0YWRhdGFDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNNb3VzZUV2ZW50LmNw
cCIKICNpbmNsdWRlICJKU011dGF0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25M
aXN0ZW5lci5jcHAiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5jcHAiCisjaW5jbHVkZSAi
SlNNdXRhdGlvblJlY29yZExpc3QuY3BwIgorI2luY2x1ZGUgIkpTTXV0YXRpb25UeXBlcy5jcHAi
CiAjaW5jbHVkZSAiSlNOYW1lZE5vZGVNYXAuY3BwIgogI2luY2x1ZGUgIkpTTmF2aWdhdG9yLmNw
cCIKICNpbmNsdWRlICJKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCmluZGV4IDI2YjYwYWIzMTMxZDlhZTRmNmYyMzYzNDE3MTI1MGY2YTU1
YzA3ZjguLjU5MzViMjBiOTFlYjRjODcwNDYyNDhmYzZmMzU1M2JkZmY0Y2VmYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzE1LDYgKzMxNSwxMCBAQCBET01fQ0xBU1NFUyA9
IFwKICAgICBNZXRhZGF0YUNhbGxiYWNrIFwKICAgICBNb3VzZUV2ZW50IFwKICAgICBNdXRhdGlv
bkV2ZW50IFwKKyAgICBNdXRhdGlvbkxpc3RlbmVyIFwKKyAgICBNdXRhdGlvblJlY29yZCBcCisg
ICAgTXV0YXRpb25SZWNvcmRMaXN0IFwKKyAgICBNdXRhdGlvblR5cGVzIFwKICAgICBOYW1lZE5v
ZGVNYXAgXAogICAgIE5hdmlnYXRvciBcCiAgICAgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IgXApA
QCAtNTcxLDcgKzU3NSw3IEBAIERPTV9DTEFTU0VTID0gXAogCiAuUEhPTlkgOiBhbGwKIAotSlNf
RE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZl
bnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCwkKERPTV9DTEFTU0VTOiU9SlMlLmgpKQorSlNf
RE9NX0hFQURFUlM9JChmaWx0ZXItb3V0IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIEpTRXZl
bnRMaXN0ZW5lci5oIEpTRXZlbnRUYXJnZXQuaCBKU011dGF0aW9uTGlzdGVuZXIuaCwkKERPTV9D
TEFTU0VTOiU9SlMlLmgpKQogCiBXRUJfRE9NX0hFQURFUlMgOj0KIGlmZXEgKCQoZmluZHN0cmlu
ZyBCVUlMRElOR19XWCwkKEZFQVRVUkVfREVGSU5FUykpLCBCVUlMRElOR19XWCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZjUxODYwMGE0ZTE0MTlkMDk2OTNmOWUw
MzY0MDYxOTFjYzJmMWE0Yy4uOTlhYTc5YTc1Yzk1ZjIzNmIyYmY4Mzc4NzhmZDI1YTA1ZTFlNGJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTIzMSw2ICsyMzEs
NyBAQAogICAgICAgIyBDdXN0b20gYmluZGluZ3MgaW4gYmluZGluZ3MvdjgvY3VzdG9tIGV4aXN0
IGZvciB0aGVzZS4KICAgICAgICcuLi9kb20vRXZlbnRMaXN0ZW5lci5pZGwnLAogICAgICAgJy4u
L2RvbS9FdmVudFRhcmdldC5pZGwnLAorICAgICAgJy4uL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlk
bCcsCiAgICAgICAnLi4vaHRtbC9Wb2lkQ2FsbGJhY2suaWRsJywKIAogICAgICAgIyBCaW5kaW5n
cyB3aXRoIGN1c3RvbSBPYmplY3RpdmUtQyBpbXBsZW1lbnRhdGlvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggMTY4NDRiNzEwMTc4YTcxMjIxOGZmZDYwNmEyY2JjMjMzZDBjZDA3Mi4uY2MzZmVkMjAw
NmUxODdhMDEzYTk3NGY0NDUyMGExMzUyOTc3ZTc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE3
OSw2ICsxMTc5LDEwIEBACiAgICAgICAgICAgICAnZG9tL01lc3NhZ2VQb3J0LmlkbCcsCiAgICAg
ICAgICAgICAnZG9tL01vdXNlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vTXV0YXRpb25F
dmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbCcsCisgICAg
ICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkLmlkbCcsCisgICAgICAgICAgICAnZG9tL011dGF0
aW9uUmVjb3JkTGlzdC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblR5cGVzLmlkbCcs
CiAgICAgICAgICAgICAnZG9tL05hbWVkTm9kZU1hcC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9O
b2RlLmlkbCcsCiAgICAgICAgICAgICAnZG9tL05vZGVGaWx0ZXIuaWRsJywKQEAgLTIwNzcsNiAr
MjA4MSw5IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhOUE9iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcCcsCkBAIC01MzI2LDYgKzUz
MzMsMTYgQEAKICAgICAgICAgICAgICdkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vTXV0YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NdXRhdGlv
bkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgnLAorICAgICAg
ICAgICAgJ2RvbS9NdXRhdGlvblJlY29yZC5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlv
blJlY29yZC5oJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25SZWNvcmRMaXN0LmNwcCcsCisg
ICAgICAgICAgICAnZG9tL011dGF0aW9uUmVjb3JkTGlzdC5oJywKKyAgICAgICAgICAgICdkb20v
TXV0YXRpb25UYXJnZXQuY3BwJywKKyAgICAgICAgICAgICdkb20vTXV0YXRpb25UYXJnZXQuaCcs
CisgICAgICAgICAgICAnZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oJywKKyAgICAgICAgICAgICdk
b20vTXV0YXRpb25UeXBlcy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9NdXRhdGlvblR5cGVzLmgn
LAogICAgICAgICAgICAgJ2RvbS9OYW1lTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20v
TmFtZU5vZGVMaXN0LmgnLAogICAgICAgICAgICAgJ2RvbS9OYW1lZE5vZGVNYXAuY3BwJywKQEAg
LTUzNjcsNiArNTM4NCw3IEBACiAgICAgICAgICAgICAnZG9tL1JhbmdlRXhjZXB0aW9uLmgnLAog
ICAgICAgICAgICAgJ2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCcsCiAgICAgICAgICAgICAn
ZG9tL1JlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNwcCcsCisgICAgICAgICAgICAnZG9tL1JlZ2lz
dGVyZWRNdXRhdGlvbkxpc3RlbmVyLmgnLAogICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU2NvcGVkRXZlbnRRdWV1ZS5j
cHAnLAogICAgICAgICAgICAgJ2RvbS9TY29wZWRFdmVudFF1ZXVlLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBiYTg0NjQ2
M2U1MjdkZTZmZGEzMGFiNzk5NjhlNmVhYjRjOWEyYmQuLjNkNzhjNGFkYTVlZTljOTI1ZjBmMGFh
ODg2OWI3Mjc2YWM5ZWQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0MTAsOSArNTQxMCwyMyBAQAogCQlDNUQ0QUE3QTEx
NkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5
cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVF
OUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9
OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODEx
MDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzY3
MURBM0UxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzgxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OworCQlDNjcxREEzRjEzRTM3MTQ5MDA1
NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25S
ZWNvcmQuaCAqLzsgfTsKKwkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25S
ZWNvcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM2NzFEQTNBMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkTGlzdC5jcHAg
Ki87IH07CisJCUM2NzFEQTQxMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURB
M0IxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmggKi87IH07CisJCUM2
NzFEQTQyMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3MURBM0MxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5jcHAgKi87IH07CisJCUM2NzFEQTQzMTNFMzcxNDkwMDU1
OEFFOSAvKiBKU011dGF0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2NzFEQTNEMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uVHlw
ZXMuaCAqLzsgfTsKKwkJQzY3MkEyRDMxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzY3
MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0aW9uVGFyZ2V0RGF0YS5oICovOyB9OwogCQlD
NkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEy
ODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0
QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkw
QTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CiAJCUM2RjQx
MDQ3MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNDEwNDYxMzBDNkU4OTAwMzkzREU0IC8qIEVu
dHJ5QmFzZS5jcHAgKi87IH07CisJCUM2RjY3MTRFMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmQuY3BwICovOyB9Owor
CQlDNkY2NzE1MTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNvcmRMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTQzMTNFMzVF
NUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuY3BwICovOyB9OworCQlDNkY2NzE1NDEz
RTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNjcxNDYxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmNwcCAqLzsgfTsKKwkJQzZGNjcxNTUxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNkY2NzE1NjEzRTM1
RTVFMDBERTNCOUMgLyogTXV0YXRpb25UeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkY2NzE0ODEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRp
b25UeXBlcy5jcHAgKi87IH07CisJCUM2RjY3MTVDMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0
aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzZGNjcxNUExM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAg
Ki87IH07CisJCUM2RjY3MTVEMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjY3MTVC
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLzsgfTsKIAkJQ0EzQkY2
N0MxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5jcHAgKi87IH07CiAJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggKi87
IH07CiAJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDgyMDMwNjEzOTVBQjZBMDBGOTU2QzYgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjEz
Nyw5ICsxMjE1MSwzMiBAQAogCQlDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRy
aWNzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdseXBoTWV0cmljc01h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUU5QjY3NjEwNjk3RTEzMDBDN0JC
MUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERp
c3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzODEzRTM3
MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzY3MURBMzkxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcxREEzQTEzRTM3MTQ5MDA1NThBRTkgLyog
SlNNdXRhdGlvblJlY29yZExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNNdXRhdGlvblJlY29yZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZExpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNdXRhdGlvblJlY29yZExpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY3MURBM0MxM0UzNzE0OTAwNTU4QUU5IC8q
IEpTTXV0YXRpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU011dGF0aW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjcx
REEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDNjcyQTJEMjEzRjM0QzRBMDA5NDIzQ0UgLyogTXV0YXRpb25UYXJnZXREYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uVGFyZ2V0RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjQxMDQ2
MTMwQzZFODkwMDM5M0RFNCAvKiBFbnRyeUJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRW50cnlCYXNlLmNwcDsgcGF0aCA9IGZpbGVhcGkvRW50cnlCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxM0UxM0UzNUU1RTAwREUzQjlD
IC8qIE11dGF0aW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TXV0YXRpb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzEz
RjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25MaXN0ZW5lci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTXV0YXRpb25MaXN0ZW5lci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUM2RjY3MTQwMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXRhdGlvblJl
Y29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0MjEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE11dGF0
aW9uUmVjb3JkLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDMxM0Uz
NUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJlY29yZExpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NDEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25SZWNv
cmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11dGF0aW9uUmVjb3Jk
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2NzE0NTEzRTM1RTVFMDBE
RTNCOUMgLyogTXV0YXRpb25SZWNvcmRMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBN
dXRhdGlvblJlY29yZExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNkY2
NzE0NjEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE0NzEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJn
ZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTXV0YXRpb25UYXJnZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNDgxM0UzNUU1RTAwREUzQjlDIC8q
IE11dGF0aW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TXV0YXRpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2RjY3MTQ5
MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzZGNjcxNEExM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVHlwZXMuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IE11dGF0aW9uVHlwZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDNkY2NzE0QjEzRTM1RTVFMDBERTNCOUMgLyogUmVnaXN0ZXJlZE11dGF0aW9uTGlz
dGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnaXN0ZXJlZE11dGF0
aW9uTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNjcxNUExM0Uz
NUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDNkY2NzE1QjEzRTM1RUIyMDBERTNCOUMgLyogSlNNdXRhdGlvbkxp
c3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25MaXN0
ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTNCRjY3QjEwRDk5QkFFMDBF
NkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTNCRjY3RDEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTU5LDYgKzEzMTk2LDcgQEAKIAkJCQk4OTg3ODU3NjEyMkNB
MURBMDAzQUFCREEgLyogRmlsZUFQSSAqLywKIAkJCQlBODNCNzkwODBDQ0FGRjJCMDAwQjA4MjUg
LyogSFRNTCAqLywKIAkJCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICov
LAorCQkJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRhdGlvbiAqLywKIAkJCQkzMzUw
M0M5QzEwMTc5QTlBMDAzQjQ3RTEgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkxQUMyMjYwMjBE
QjY5RUE3MDA4OUI2NjkgLyogT2ZmbGluZSAqLywKIAkJCQlBOUQyNDdGOTBENzU3RTQxMDBGREY5
NTkgLyogUGx1Z2lucyAqLywKQEAgLTE1NDA1LDYgKzE1NDQzLDcgQEAKIAkJCQk4NUFGQTdBQjBB
QUYzQkIwMDBFODQzMDUgLyogRXZlbnRzICovLAogCQkJCTg1QzU2RDAzMEFBOEJBQTcwMEQ5NTc1
NSAvKiBIVE1MICovLAogCQkJCTg1RTcxMTNEMEFDNUQ0QTEwMDUzMjcwRiAvKiBJbnRlcm5hbCAq
LywKKwkJCQlDNjcxREE1RDEzRTM3MUI5MDA1NThBRTkgLyogTXV0YXRpb24gKi8sCiAJCQkJODUz
OEYwNTcwQUQ3MjJCOTAwNkE4MUQxIC8qIFJhbmdlcyAqLywKIAkJCQk4NTA2NTcwNDBBQUI0NzZD
MDAyRDE1QzAgLyogU3R5bGVTaGVldHMgKi8sCiAJCQkJODVBMEY5OEUwQUM3MTZGNDAwMTYxRkRD
IC8qIFNWRyAqLywKQEAgLTE4NTEzLDYgKzE4NTUyLDggQEAKIAkJCQkzMzE0QUNFQTEwODkyMDg2
MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmggKi8sCiAJCQkJOEY5MzREODQxMTg5RjFFRTAw
NTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAgKi8sCiAJCQkJOEY5MzREODMxMTg5
RjFFRTAwNTA4RDVEIC8qIEpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oICovLAorCQkJCUM2RjY3MTVB
MTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwICovLAorCQkJCUM2RjY3
MTVCMTNFMzVFQjIwMERFM0I5QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuaCAqLywKIAkJCQk5M0I3
MEQ0RjA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCAqLywK
IAkJCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmggKi8sCiAJCQkJMTRDRDhEODExMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3Vz
dG9tLmNwcCAqLywKQEAgLTE5MTY4LDYgKzE5MjA5LDI2IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJ
CQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUM2NzFEQTQ0MTNFMzcxNjgwMDU1OEFFOSAvKiBNdXRh
dGlvbiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzY3
MURBMzgxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2
NzFEQTM5MTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9uUmVjb3JkLmggKi8sCisJCQkJQzY3
MURBM0ExM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmNwcCAqLywKKwkJ
CQlDNjcxREEzQjEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblJlY29yZExpc3QuaCAqLywK
KwkJCQlDNjcxREEzQzEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmNwcCAqLywK
KwkJCQlDNjcxREEzRDEzRTM3MTQ5MDA1NThBRTkgLyogSlNNdXRhdGlvblR5cGVzLmggKi8sCisJ
CQkpOworCQkJbmFtZSA9IE11dGF0aW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJQzY3MURBNUQxM0UzNzFCOTAwNTU4QUU5IC8qIE11dGF0aW9uICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gTXV0YXRpb247
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFMUM4QkU0QjBFOEJEMEQxMDA2
NENCN0QgLyogVGhyZWFkcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xOTkxNCw2ICsxOTk3NSwyMCBAQAogCQkJCTg1MDMxQjMzMEE0NEVGQzcwMEY5OTJF
MCAvKiBNdXRhdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIzNDBBNDRFRkM3MDBGOTkyRTAg
LyogTXV0YXRpb25FdmVudC5oICovLAogCQkJCTkzRUVDMUYzMDlDMjg3NzcwMEM1MTVEMSAvKiBN
dXRhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQlDNkY2NzEzRTEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25MaXN0ZW5lci5oICovLAorCQkJCUM2RjY3MTNGMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvbkxpc3RlbmVyLmlkbCAqLywKKwkJCQlDNkY2NzE0MDEzRTM1RTVFMDBERTNCOUMgLyogTXV0
YXRpb25SZWNvcmQuY3BwICovLAorCQkJCUM2RjY3MTQxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZC5oICovLAorCQkJCUM2RjY3MTQyMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlv
blJlY29yZC5pZGwgKi8sCisJCQkJQzZGNjcxNDMxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9u
UmVjb3JkTGlzdC5jcHAgKi8sCisJCQkJQzZGNjcxNDQxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0
aW9uUmVjb3JkTGlzdC5oICovLAorCQkJCUM2RjY3MTQ1MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblJlY29yZExpc3QuaWRsICovLAorCQkJCUM2RjY3MTQ2MTNFMzVFNUUwMERFM0I5QyAvKiBN
dXRhdGlvblRhcmdldC5jcHAgKi8sCisJCQkJQzZGNjcxNDcxM0UzNUU1RTAwREUzQjlDIC8qIE11
dGF0aW9uVGFyZ2V0LmggKi8sCisJCQkJQzY3MkEyRDIxM0YzNEM0QTAwOTQyM0NFIC8qIE11dGF0
aW9uVGFyZ2V0RGF0YS5oICovLAorCQkJCUM2RjY3MTQ4MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblR5cGVzLmNwcCAqLywKKwkJCQlDNkY2NzE0OTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRp
b25UeXBlcy5oICovLAorCQkJCUM2RjY3MTRBMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblR5
cGVzLmlkbCAqLywKIAkJCQlCQ0YzNEEzNjExQTIzMUNEMDBDNzE4MDQgLyogTmFtZWROb2RlTWFw
LmNwcCAqLywKIAkJCQlBODE4NzIxODA5NzdEM0MwMDA1ODI2RDkgLyogTmFtZWROb2RlTWFwLmgg
Ki8sCiAJCQkJODVBQ0E5RjkwQTlCNjMxMDAwNjcxRTkwIC8qIE5hbWVkTm9kZU1hcC5pZGwgKi8s
CkBAIC0xOTk3OCw2ICsyMDA1Myw3IEBACiAJCQkJQTg0RDgyN0IxMUQzMzNFRDAwOTcyOTkwIC8q
IFJhd0RhdGFEb2N1bWVudFBhcnNlci5oICovLAogCQkJCTg1MDMxQjM1MEE0NEVGQzcwMEY5OTJF
MCAvKiBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jcHAgKi8sCiAJCQkJODUwMzFCMzYwQTQ0RUZD
NzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmggKi8sCisJCQkJQzZGNjcxNEIx
M0UzNUU1RTAwREUzQjlDIC8qIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyLmggKi8sCiAJCQkJ
QTc2RTVGN0UxMzVFMERDRjAwQTY5ODM3IC8qIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCAqLywK
IAkJCQk5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi8s
CiAJCQkJOUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywK
QEAgLTIyMDMyLDYgKzIyMTA4LDEwIEBACiAJCQkJODk4Nzg1QjkxMjJDQTJBNzAwM0FBQkRBIC8q
IEpTTWV0YWRhdGFDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg2NjI5RDEwOURBMkI0
ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMxRkMw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzZGNjcxNUQxM0UzNUVCMjAwREUzQjlDIC8qIEpTTXV0YXRpb25MaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzY3MURBM0YxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzFEQTQxMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0
aW9uUmVjb3JkTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzY3MURBNDMxM0UzNzE0OTAwNTU4
QUU5IC8qIEpTTXV0YXRpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEOUMyQzEwQzE3
QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOUQy
NDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIyNDA1LDYgKzIyNDg1LDggQEAKIAkJCQlCMUFENEU2MzEzQTEy
QTBCMDA4NDZCMjcgLyogTXV0YWJsZVRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFB
RDRFNjMxM0ExMkEwQjAwODQ2QjI3IC8qIE11dGFibGVUZXh0VHJhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1MDMxQjRBMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDNkY2NzE1NTEzRTM1RTVFMDBERTNCOUMgLyogTXV0YXRpb25UYXJnZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUM2NzJBMkQzMTNGMzRDNEEwMDk0MjNDRSAvKiBNdXRhdGlv
blRhcmdldERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjIzMDk3N0QzQzAwMDU4MjZE
OSAvKiBOYW1lZE5vZGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg3MjFFMDk3N0QzQzAw
MDU4MjZEOSAvKiBOYW1lTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3
NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjYxODEsNiArMjYyNjMsMTQgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyog
WFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhE
Q0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTlERTc5MDQxM0YxNkM3RjAw
MDdGQ0RGIC8qIEphdmFNZXRob2RKU0MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzZGNjcxNEUx
M0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM2RjY3MTUxMTNFMzVFNUUwMERFM0I5QyAvKiBNdXRhdGlvblJlY29yZExpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQzZGNjcxNTQxM0UzNUU1RTAwREUzQjlDIC8qIE11dGF0aW9uVGFyZ2V0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTU2MTNFMzVFNUUwMERFM0I5QyAvKiBNdXRh
dGlvblR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM2RjY3MTVDMTNFMzVFQjIwMERFM0I5
QyAvKiBKU011dGF0aW9uTGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzY3MURBM0Ux
M0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzY3MURBNDAxM0UzNzE0OTAwNTU4QUU5IC8qIEpTTXV0YXRpb25SZWNvcmRMaXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUM2NzFEQTQyMTNFMzcxNDkwMDU1OEFFOSAvKiBKU011dGF0aW9u
VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTY2ZjA3OTJkNmVmMDIxY2Uz
YjU0ZjcxNTI3ZjQ5ODllMGMwYWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTXV0YXRpb25MaXN0ZW5lci5o
IgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
IgorI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5jbHVkZSAiSlNOb2RlLmgi
CisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KKyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitKU011dGF0aW9uTGlzdGVuZXI6OkpTTXV0YXRpb25MaXN0ZW5lcihKU09i
amVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xh
dGVkV29ybGQpCisgICAgOiBtX3dyYXBwZXIoKmlzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwg
d3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQoreworICAgIGlm
ICh3cmFwcGVyKQorICAgICAgICBtX2pzRnVuY3Rpb24uc2V0TWF5QmVOdWxsKCptX2lzb2xhdGVk
V29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAg
ICAgQVNTRVJUKCFmdW5jdGlvbik7CisKK30KKworSlNNdXRhdGlvbkxpc3RlbmVyOjp+SlNNdXRh
dGlvbkxpc3RlbmVyKCkKK3sKK30KKwordm9pZCBKU011dGF0aW9uTGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE11dGF0
aW9uUmVjb3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKKworICAgIEpTT2Jq
ZWN0KiBqc0Z1bmN0aW9uID0gbV9qc0Z1bmN0aW9uLmdldCgpOworCisgICAgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0
PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KTsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ct
PmltcGwoKS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAg
Ly8gVGhlIHdpbmRvdyBtdXN0IHN0aWxsIGJlIGFjdGl2ZSBpbiBpdHMgZnJhbWUuIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTIxPi4KKyAgICAvLyBGSVhN
RTogQSBiZXR0ZXIgZml4IGZvciB0aGlzIG1heSBiZSB0byBjaGFuZ2UgRE9NV2luZG93OjpmcmFt
ZSgpIHRvIG5vdCByZXR1cm4gYSBmcmFtZSB0aGUgZGV0YWNoZWQgd2luZG93IHVzZWQgdG8gYmUg
aW4uCisgICAgaWYgKGZyYW1lLT5kb21XaW5kb3coKSAhPSB3aW5kb3ctPmltcGwoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNoZWNrIG5lZWRlZCBmb3Igb3RoZXIg
Y29udGV4dHM/CisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gZnJhbWUtPnNjcmlwdCgp
OworICAgIGlmICghc2NyaXB0LT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlw
dCkgfHwgc2NyaXB0LT5pc1BhdXNlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU1ZhbHVlIGhhbmRs
ZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
aGFuZGxlRXZlbnQiKSk7CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIGhhbmRsZUV2ZW50RnVu
Y3Rpb24gPSBKU1ZhbHVlKCk7CisgICAgICAgIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2Fs
bERhdGEoY2FsbERhdGEpOworICAgIH0KKworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5v
bmUpIHsKKyAgICAgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHByb3RlY3QodGhpcyk7CisK
KyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgYXJncy5hcHBlbmQo
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG11dGF0aW9ucykpOworCisgICAgICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBE
eW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2Jq
ZWN0IDogZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQorICAgICAgICAgICAg
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gRklYTUUoYWRhbWspOiBGaWd1cmUgb3V0IHdoYXQgdGhlIHRhcmdldCBzaG91
bGQgYmU7IHByb2JhYmx5IHRoZQorICAgICAgICAgICAgLy8gRG9jdW1lbnQgb3IgRE9NV2luZG93
PworICAgICAgICAgICAgSlNWYWx1ZSBjdXJyZW50VGFyZ2V0ID0gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIG11dGF0aW9ucy0+aXRlbSgwKS0+dGFyZ2V0KCkpOworICAgICAgICAgICAgSlNNYWlu
VGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgY3VycmVudFRhcmdldCwgYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFsRGF0YS50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICB9Cit9CisK
K2Jvb2wgSlNNdXRhdGlvbkxpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9uTGlzdGVu
ZXImIGxpc3RlbmVyKQoreworICAgIGNvbnN0IEpTTXV0YXRpb25MaXN0ZW5lcioganNNdXRhdGlv
bkxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgSlNNdXRhdGlvbkxpc3RlbmVyKj4oJmxpc3Rl
bmVyKTsKKyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uID09IGpzTXV0YXRpb25MaXN0ZW5lci0+bV9q
c0Z1bmN0aW9uOworfQorCit1bnNpZ25lZCBKU011dGF0aW9uTGlzdGVuZXI6Omhhc2goKQorewor
ICAgIHJldHVybiBEZWZhdWx0SGFzaDxKU0M6OkpTT2JqZWN0Kj46Okhhc2g6Omhhc2gobV9qc0Z1
bmN0aW9uLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uTGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDVm
ZGEyZDY0MGUyOWEzNTAxYTU4N2QyMzQ1ZjAwNjVlZDM5NDE5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0
LmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRl
ZiBKU011dGF0aW9uTGlzdGVuZXJfaAorI2RlZmluZSBKU011dGF0aW9uTGlzdGVuZXJfaAorCisj
aW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1dyaXRlQmFycmll
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2Ns
YXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitjbGFzcyBKU011dGF0aW9uTGlzdGVuZXIgOiBwdWJs
aWMgTXV0YXRpb25MaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNN
dXRhdGlvbkxpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTQzo6SlNP
YmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNNdXRhdGlvbkxpc3RlbmVyKGxpc3RlbmVyLCB3
cmFwcGVyLCBpc29sYXRlZFdvcmxkKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+SlNNdXRhdGlv
bkxpc3RlbmVyKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNdXRhdGlv
bkxpc3RlbmVyJiBvdGhlcik7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCk7CisKKyAgICBE
T01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiBtX2lzb2xhdGVk
V29ybGQuZ2V0KCk7IH0KKworICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJl
dHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFw
cGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNdXRhdGlvblJl
Y29yZExpc3QqKTsKKworcHJpdmF0ZToKKyAgICBKU011dGF0aW9uTGlzdGVuZXIoSlNDOjpKU09i
amVjdCogZnVuY3Rpb24sIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCog
aXNvbGF0ZWRXb3JsZCk7CisKKyAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNP
YmplY3Q+IG1fanNGdW5jdGlvbjsKKyAgICBtdXRhYmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX3dyYXBwZXI7CisKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29y
bGQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU011dGF0aW9u
TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAK
aW5kZXggNTFlM2JiODZhYWVlMzJiNWYyMTY1OWJlMTM3YzgyYTQ0MzJmZGYxMS4uY2E4NmRkMmVh
YmUzNjc5ZmM1OGY2YjE5OWIyYzU0Y2M1M2UwZjcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCkBAIC01OCw5ICs1OCwxMSBAQAogI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCIKKyNpbmNsdWRlICJKU011dGF0aW9uTGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJKU05vdGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKU1RleHQuaCIKKyNpbmNsdWRlICJNdXRhdGlvblR5cGVz
LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vdGF0aW9uLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCkBAIC0yMDUsNiArMjA3LDQzIEBAIHZvaWQgSlNOb2Rl
Ojp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYWRkT3Bh
cXVlUm9vdChyb290KG5vZGUpKTsKIH0KIAorSlNWYWx1ZSBKU05vZGU6OndlYmtpdEFkZE11dGF0
aW9uTGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBl
eGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNWYWx1ZSBqc1R5cGVzID0gZXhlYy0+YXJn
dW1lbnQoMSk7CisgICAgaWYgKCFqc1R5cGVzLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworCisgICAgSlNPYmplY3QqIGpzVHlwZXNPYmplY3QgPSBhc09iamVjdChq
c1R5cGVzKTsKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXMgPSBNdXRhdGlvblR5cGVz
OjpjcmVhdGUoKTsKKyAgICBKU1ZhbHVlIGpzQ2hpbGRsaXN0ID0ganNUeXBlc09iamVjdC0+Z2V0
KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNoaWxkbGlzdCIpKTsKKyAgICBpZiAoanNDaGlsZGxp
c3QuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRDaGlsZGxpc3QoanNDaGlsZGxpc3Qu
Z2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQXR0cmlidXRlID0ganNUeXBlc09iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImF0dHJpYnV0ZSIpKTsKKyAgICBpZiAoanNBdHRy
aWJ1dGUuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRBdHRyaWJ1dGUoanNBdHRyaWJ1
dGUuZ2V0Qm9vbGVhbigpKTsKKyAgICBKU1ZhbHVlIGpzQ2hhcmFjdGVyZGF0YSA9IGpzVHlwZXNP
YmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjaGFyYWN0ZXJkYXRhIikpOworICAg
IGlmIChqc0NoYXJhY3RlcmRhdGEuaXNCb29sZWFuKCkpCisgICAgICAgIHR5cGVzLT5zZXRDaGFy
YWN0ZXJkYXRhKGpzQ2hhcmFjdGVyZGF0YS5nZXRCb29sZWFuKCkpOworCisgICAgaW1wbCgpLT5h
ZGRNdXRhdGlvbkxpc3RlbmVyKEpTTXV0YXRpb25MaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgdGhpcywgY3VycmVudFdvcmxkKGV4ZWMpKSwgdHlwZXMpOworICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlIEpTTm9kZTo6d2Via2l0UmVtb3ZlTXV0YXRpb25M
aXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpbXBsKCktPnJlbW92ZU11dGF0aW9uTGlzdGVuZXIo
SlNNdXRhdGlvbkxpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBjdXJy
ZW50V29ybGQoZXhlYykpLmdldCgpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwor
CiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb2RlKiBub2RlKQog
ewogICAgIEFTU0VSVChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZDZjMGZlMGUwNDRkNGVlNGRhOWU4ZTY0YTEx
ZmIwOTRiZTUzMjUyMi4uNzkwM2VlZmQxZTIxMWJkZDNmN2RjMTJkOGJhZTJiYTFmMmIxMTZiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTQ3OSw2ICs0NzksMTAgQEAgc3ViIEdldEludGVybmFsRmllbGRzCiAgICAgICAg
IHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsK
ICAgICB9CiAKKyAgICBpZiAoSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpKSB7CisgICAgICAgIHB1
c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAibXV0YXRpb25MaXN0ZW5lckNhY2hlSW5kZXgiKTsK
KyAgICB9CisKICAgICBpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChA
Y3VzdG9tSW50ZXJuYWxGaWVsZHMsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4Iik7CiAgICAg
fQpAQCAtMzI1NSw2ICszMjU5LDExIEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgcmV0
dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcio+KCR7dmFsdWV9KS0+Z2V0TGlzdGVuZXJPYmplY3QoaW1wLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6TnVsbCgp
KSI7CiAgICAgfQogCisgICAgaWYgKCR0eXBlIGVxICJNdXRhdGlvbkxpc3RlbmVyIikgeworICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJWOE11dGF0aW9uTGlzdGVuZXIuaCJ9ID0gMTsKKyAgICAgICAg
cmV0dXJuICIke3ZhbHVlfSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihzdGF0aWNfY2FzdDxWOE11
dGF0aW9uTGlzdGVuZXIqPigke3ZhbHVlfSktPmdldExpc3RlbmVyT2JqZWN0KCkpIDogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKCkpIjsKKyAgICB9CisKICAgICBpZiAoJHR5cGUgZXEg
IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siJHR5cGUu
aCJ9ID0gMTsKICAgICAgICAgcmV0dXJuICIkdmFsdWUtPmRlc2VyaWFsaXplKCkiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDg2YTNhMjE5NjFk
YzI4MDlhMjA3Y2ZiYWU3ZjUyZDA3ZTNkZjgxYy4uODYwZjAxM2M3MDU1NzY4Y2NiMWUxNzJkZGVk
YzRjYWJlNmVkZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBACiAjaW5jbHVkZSAiVjhMb2NhdGlvbi5oIgogI2luY2x1
ZGUgIlY4TWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJWOE1lc3NhZ2VDaGFubmVsLmgiCisjaW5j
bHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVy
TWFuYWdlci5oIgogI2luY2x1ZGUgIlY4TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2Rl
LmgiCiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCkBAIC00ODEsNiArNDgzLDE5
IEBAIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhCiAjZW5kaWYKIH0KIAorUGFzc1JlZlB0cjxNdXRh
dGlvbkxpc3RlbmVyPiBWOERPTVdyYXBwZXI6OmdldE11dGF0aW9uTGlzdGVuZXIodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIExpc3RlbmVyTG9va3VwVHlwZSBsb29rdXApCit7CisgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7
CisgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
bG9va3VwID09IExpc3RlbmVyRmluZE9ubHkpCisgICAgICAgIHJldHVybiBWOE11dGF0aW9uTGlz
dGVuZXJNYW5hZ2VyOjpmaW5kV3JhcHBlcih2YWx1ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBnbG9iYWxQcm90b3R5cGUgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGNvbnRl
eHQtPkdsb2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CisgICAgaWYgKGdsb2JhbE9iamVjdFByb3Rv
dHlwZUlzRE9NV2luZG93KGdsb2JhbFByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiBWOE11dGF0
aW9uTGlzdGVuZXJNYW5hZ2VyOjpmaW5kT3JDcmVhdGVXcmFwcGVyKHZhbHVlKTsKKyAgICByZXR1
cm4gMDsKK30KKwogI2lmIEVOQUJMRShYUEFUSCkKIC8vIFhQYXRoLXJlbGF0ZWQgdXRpbGl0aWVz
CiBSZWZQdHI8WFBhdGhOU1Jlc29sdmVyPiBWOERPTVdyYXBwZXI6OmdldFhQYXRoTlNSZXNvbHZl
cih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFY4UHJveHkqIHByb3h5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBlYjIyMDUxNzJiM2M5NGIwOGFl
NjdmNTU0YjIwYWVlMjg4MTQ5ZjkwLi5lMGRjMTI1YjhhMjk5NGVlZmRiY2I1Y2Y0ZGQ4NjA3MmYx
ZWE1NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAt
ODksNiArODksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCop
OwogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGdldEV2ZW50TGlz
dGVuZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wgaXNBdHRyaWJ1dGUsIExpc3Rl
bmVyTG9va3VwVHlwZSBsb29rdXApOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhdGlv
bkxpc3RlbmVyPiBnZXRNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBMaXN0
ZW5lckxvb2t1cFR5cGUpOwogCiAjaWYgRU5BQkxFKFhQQVRIKQogICAgICAgICAvLyBYUGF0aC1y
ZWxhdGVkIHV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlk
ZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggZGViYTRhNTFkNzc4MDc5MDkzMzI2N2I5MmQxZjY0MDJh
Mjc0ZjAzZi4uZDNhYmIwMWZkYzhiZWViMzdmMDE5YWViZmNiZDg3NGI4OWU4ZDliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKG9iamVjdFByb3RvdHlw
ZSkgXAogICAgIFYobGlzdGVuZXIpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCisgICAg
VihtdXRhdGlvbkxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAogICAgIFYoZGV2dG9v
bHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTZkY2M3NjMzZjUxOTZhZjExOTg2ZDhmZWUwNTZmMDA1NzAyNTE3MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhNdXRhdGlvbkxpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiVjhDdXN0b21Wb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJW
OEdDQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXIuaCIK
KyNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Y4TXV0YXRpb25MaXN0ZW5lcjo6VjhNdXRhdGlvbkxpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBsaXN0ZW5lciwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisg
ICAgOiBtX2xpc3RlbmVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobGlzdGVuZXIp
KQorICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQoreworICAgIG1fbGlzdGVuZXIu
TWFrZVdlYWsodGhpcywgJndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOworfQorCitWOE11
dGF0aW9uTGlzdGVuZXI6On5WOE11dGF0aW9uTGlzdGVuZXIoKQoreworICAgIGlmICghbV9saXN0
ZW5lci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOwor
ICAgICAgICBWOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2VyOjpjbGVhcldyYXBwZXIobGlzdGVuZXIp
OworICAgIH0KKyAgICBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OndlYWtNdXRhdGlvbkxpc3RlbmVyQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIFY4TXV0YXRpb25MaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxWOE11dGF0aW9uTGlzdGVuZXIqPihwYXJhbWV0ZXIpOwor
ICAgIGxpc3RlbmVyLT5kaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKK30KKwordm9pZCBWOE11dGF0
aW9uTGlzdGVuZXI6OmRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpCit7CisgICAgaWYgKCFtX2xpc3Rl
bmVyLklzRW1wdHkoKSkgeworICAgICAgICBtX2xpc3RlbmVyLkRpc3Bvc2UoKTsKKyAgICAgICAg
bV9saXN0ZW5lci5DbGVhcigpOworICAgIH0KK30KKwordm9pZCBWOE11dGF0aW9uTGlzdGVuZXI6
OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE11dGF0aW9uUmVj
b3JkTGlzdCogbXV0YXRpb25zKQoreworICAgIC8vIERvbid0IHJlZW50ZXIgVjggaWYgZXhlY3V0
aW9uIHdhcyB0ZXJtaW5hdGVkIGluIHRoaXMgaW5zdGFuY2Ugb2YgVjguCisgICAgaWYgKGNvbnRl
eHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNT
RVJUKG11dGF0aW9ucyk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisKKyAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQs
IG1fd29ybGRDb250ZXh0KTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzTXV0YXRpb25zID0gdG9WOChtdXRhdGlvbnMpOworICAg
IEFTU0VSVCghanNNdXRhdGlvbnMuSXNFbXB0eSgpKTsKKyAgICBpZiAoanNNdXRhdGlvbnMuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJn
dltdID0geworICAgICAgICBqc011dGF0aW9ucworICAgIH07CisKKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gbGlzdGVuZXIgPSBnZXRMaXN0ZW5lck9iamVjdCgpOworICAgIGJvb2wgaWdub3Jl
ZFJldHVyblZhbHVlID0gZmFsc2U7CisgICAgaW52b2tlQ2FsbGJhY2sobGlzdGVuZXIsIDEsIGFy
Z3YsIGlnbm9yZWRSZXR1cm5WYWx1ZSwgY29udGV4dCk7Cit9CisKK3Vuc2lnbmVkIFY4TXV0YXRp
b25MaXN0ZW5lcjo6aGFzaCgpCit7CisgICAgcmV0dXJuIERlZmF1bHRIYXNoPFY4TXV0YXRpb25M
aXN0ZW5lcio+OjpIYXNoOjpoYXNoKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25MaXN0ZW5lci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmIzMzRiNTE0ZDc3ZTM5ZDQ3ODdiZDQ0MmNmMTdiZjkyOTI5OGRjOGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVu
ZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOE11dGF0aW9uTGlzdGVuZXJfaAorI2RlZmlu
ZSBWOE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVkZSAiTXV0YXRpb25MaXN0ZW5lci5oIgor
I2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5jbHVkZSA8djguaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyIDogcHVibGljIE11
dGF0aW9uTGlzdGVuZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGNvbnN0IFdv
cmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWOE11dGF0aW9uTGlzdGVuZXIobGlzdGVuZXIsIHdvcmxkQ29udGV4dCkpOwor
ICAgIH0KKyAgICB2aXJ0dWFsIH5WOE11dGF0aW9uTGlzdGVuZXIoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNvcmRM
aXN0Kik7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgTXV0YXRpb25MaXN0ZW5l
ciYgb3RoZXIpIHsgcmV0dXJuIHRoaXMgPT0gJm90aGVyOyB9CisgICAgdmlydHVhbCB1bnNpZ25l
ZCBoYXNoKCk7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2V0TGlzdGVuZXJPYmplY3Qo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KG1fbGlz
dGVuZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWOE11dGF0aW9uTGlzdGVuZXIodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmKTsKKyAg
ICBzdGF0aWMgdm9pZCB3ZWFrTXV0YXRpb25MaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4sIHZvaWQqKTsKKyAgICB2b2lkIGRpc3Bvc2VMaXN0ZW5lck9iamVjdCgpOwor
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9saXN0ZW5lcjsKKyAgICBXb3JsZENv
bnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBWOE11dGF0aW9uTGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRhMWJiNTE1YzhkNjM2YzA4N2I3NWU3ODI2MzgxMDMyMjcxNDk4OTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uTGlzdGVuZXJNYW5hZ2Vy
LmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlcl9oCisj
ZGVmaW5lIFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXJfaAorCisjaW5jbHVkZSAiVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uTGlzdGVuZXIuaCIKKworI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBUaGlzIGlzIGEgY29udGFpbmVyIGZvciBWOE11dGF0aW9uTGlzdGVuZXIgb2Jq
ZWN0cyB0aGF0IHVzZXMgaGlkZGVuIHByb3BlcnRpZXMgb2Ygdjg6Ok9iamVjdCB0byBzcGVlZCB1
cCBsb29rdXBzLgorY2xhc3MgVjhNdXRhdGlvbkxpc3RlbmVyTWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gZmluZFdyYXBwZXIodjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiBkb0ZpbmRXcmFwcGVyKHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGZpbmRPckNyZWF0ZVdyYXBwZXIodjg6OkxvY2FsPHY4OjpWYWx1
ZT4pOworCisgICAgc3RhdGljIHZvaWQgY2xlYXJXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gbGlzdGVuZXJPYmplY3QpCisgICAgeworICAgICAgICBsaXN0ZW5lck9iamVjdC0+RGVsZXRl
SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBNdXRhdGlvbkxpc3RlbmVyKiBkb0ZpbmRXcmFw
cGVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgeworICAgICAgICBBU1NFUlQo
djg6OkNvbnRleHQ6OkluQ29udGV4dCgpKTsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3Bl
OworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsaXN0ZW5lciA9IG9iamVjdC0+R2V0SGlk
ZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6Om11dGF0aW9uTGlzdGVuZXIoKSk7CisgICAg
ICAgIGlmIChsaXN0ZW5lci5Jc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE11dGF0aW9uTGlzdGVuZXIqPih2ODo6RXh0ZXJuYWw6OlVu
d3JhcChsaXN0ZW5lcikpOworICAgIH0KK307CisKK2lubGluZSBQYXNzUmVmUHRyPE11dGF0aW9u
TGlzdGVuZXI+IFY4TXV0YXRpb25MaXN0ZW5lck1hbmFnZXI6OmZpbmRPckNyZWF0ZVdyYXBwZXIo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgQVNTRVJUKHY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkxvY2FsPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKTsKKworICAgIE11dGF0aW9uTGlzdGVuZXIqIHdyYXBwZXIgPSBk
b0ZpbmRXcmFwcGVyKG9iamVjdCk7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIHJldHVybiB3
cmFwcGVyOworCisgICAgUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+IHdyYXBwZXJQdHIgPSBWOE11
dGF0aW9uTGlzdGVuZXI6OmNyZWF0ZShvYmplY3QsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VDdXJy
ZW50V29ybGQpKTsKKyAgICBpZiAod3JhcHBlclB0cikKKyAgICAgICAgb2JqZWN0LT5TZXRIaWRk
ZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6bXV0YXRpb25MaXN0ZW5lcigpLCB2ODo6RXh0
ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOworCisgICAgcmV0dXJuIHdyYXBwZXJQdHIu
cmVsZWFzZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOE11
dGF0aW9uTGlzdGVuZXJNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRp
bGl0aWVzLmNwcAppbmRleCA0Zjc4M2I2MTUzZTM1OGMxYTNmYjg3NDIyMDAxMDdiMGUyNDRiOGU1
Li44NmU0YjRiMGEyOTUxZWFjZWNiYTlmNTI2Nzc1YzMyOGIzNTIyNDE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC02Niw2ICs2Niw3IEBAIFY4TG9j
YWxDb250ZXh0Ojp+VjhMb2NhbENvbnRleHQoKQogLy8gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9y
ZSB0aGFuIG9uY2UgdG8gdGhlIERPTSBvYmplY3QuCiB2b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVu
Y3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBpbnQgY2FjaGVJbmRleCkKIHsKKyAgICBBU1NFUlQob2JqZWN0LT5JbnRlcm5hbEZpZWxk
Q291bnQoKSA+IGNhY2hlSW5kZXgpOwogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hlID0g
b2JqZWN0LT5HZXRJbnRlcm5hbEZpZWxkKGNhY2hlSW5kZXgpOwogICAgIGlmIChjYWNoZS0+SXNO
dWxsKCkgfHwgY2FjaGUtPklzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgY2FjaGUgPSB2ODo6QXJy
YXk6Ok5ldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEN1c3RvbVZvaWRDYWxsYmFjay5jcHAKaW5kZXggMTFmMzA5YjY5OTRhMTA4OTAwMmEx
MTJiNWZmMDU5NDg3N2FkZTk3OS4uZjVjZjJkZGVhNjRlYmM3MmRkZTE1ZGE2MWVhMzRkNDgxMDJj
Mzg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCkBAIC02MywxNCArNjMsMTQgQEAgdm9pZCBWOEN1
c3RvbVZvaWRDYWxsYmFjazo6aGFuZGxlRXZlbnQoKQogICAgIGludm9rZUNhbGxiYWNrKG1fY2Fs
bGJhY2ssIDAsIDAsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5nZXQoKSk7CiB9CiAKLWJvb2wgaW52b2tlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gY2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBi
b29sJiBjYWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorYm9vbCBpbnZva2VDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9v
bCYgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKIHsKICAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKICAg
ICBleGNlcHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CiAKICAgICB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uPiBjYWxsYmFja0Z1bmN0aW9uOwogICAgIGlmIChjYWxsYmFjay0+SXNGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
Pjo6TmV3KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3QoY2FsbGJhY2spKTsKKyAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcodjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGNhbGxiYWNrKSk7CiAgICAgfSBlbHNlIGlmIChj
YWxsYmFjay0+SXNPYmplY3QoKSkgewogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBoYW5k
bGVFdmVudEZ1bmN0aW9uID0gY2FsbGJhY2stPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImhh
bmRsZUV2ZW50IikpOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbi0+SXNGdW5jdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3Vz
dG9tVm9pZENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21Wb2lkQ2FsbGJhY2suaAppbmRleCA5NGJiNzgyMWM2NTM1NzU3YzM0ZDVhMmNjM2MxMDE1
NWM4NTk1NzhjLi4zYzgwM2MyMjE5YzRiZTg3MGM5OTkxNmQ1MGZjNGQ5ZWQyYTAyYjQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21Wb2lkQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21W
b2lkQ2FsbGJhY2suaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJu
cyBmYWxzZSBpZiBjYWxsYmFjayBmYWlsZWQgKG51bGwsIHdyb25nIHR5cGUsIG9yIHRocmV3IGV4
Y2VwdGlvbikuCi1ib29sIGludm9rZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IGNhbGxiYWNrLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSwgYm9vbCYg
Y2FsbGJhY2tSZXR1cm5WYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7Citib29sIGludm9rZUNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y2FsbGJhY2ssIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdLCBib29sJiBj
YWxsYmFja1JldHVyblZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCA0YWQxM2Q0YWY3Y2ZkNTI0NmY4MGY2ODFhY2ZjNDk5
NmY5MDRjNWQ3Li40Njg0NDc4OWI1ZjhiN2M5NGZkNzk4NjlhMjA3YzI4ZjBmM2NiZjgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNw
cApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVk
ZSAiVjhDREFUQVNlY3Rpb24uaCIKICNpbmNsdWRlICJWOENvbW1lbnQuaCIKKyNpbmNsdWRlICJW
OERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOERvY3VtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiVjhEb2N1bWVudFR5cGUuaCIKQEAgLTQ4LDExICs0
OSwxNCBAQAogI2luY2x1ZGUgIlY4RW50aXR5LmgiCiAjaW5jbHVkZSAiVjhFbnRpdHlSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9u
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJWOE11dGF0aW9uVHlwZXMuaCIKICNpbmNsdWRlICJWOE5v
ZGUuaCIKICNpbmNsdWRlICJWOE5vdGF0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhUZXh0LmgiCisj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAt
MTMxLDYgKzEzNSw0MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjphcHBlbmRDaGls
ZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4OjpOdWxs
KCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OndlYmtpdEFkZE11dGF0aW9u
TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19T
VEFUUygiRE9NLk5vZGUud2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcigpIik7CisgICAgUmVmUHRy
PE11dGF0aW9uTGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRNdXRhdGlvbkxp
c3RlbmVyKGFyZ3NbMF0sIExpc3RlbmVyRmluZE9yQ3JlYXRlKTsKKyAgICBSZWZQdHI8TXV0YXRp
b25UeXBlcz4gdHlwZXM7CisgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBh
cmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICAgICAgdHlw
ZXMgPSBNdXRhdGlvblR5cGVzOjpjcmVhdGUoKTsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdjhDaGlsZGxpc3QgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoaWxkbGlzdCIp
KTsKKyAgICAgICAgaWYgKCF2OENoaWxkbGlzdC5Jc0VtcHR5KCkpCisgICAgICAgICAgICB0eXBl
cy0+c2V0Q2hpbGRsaXN0KHY4Q2hpbGRsaXN0LT5Cb29sZWFuVmFsdWUoKSk7CisgICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHY4QXR0cmlidXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6
TmV3KCJhdHRyaWJ1dGUiKSk7CisgICAgICAgIGlmICghdjhBdHRyaWJ1dGUuSXNFbXB0eSgpKQor
ICAgICAgICAgICAgdHlwZXMtPnNldEF0dHJpYnV0ZSh2OEF0dHJpYnV0ZS0+Qm9vbGVhblZhbHVl
KCkpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OENoYXJhY3RlcmRhdGEgPSBvYmpl
Y3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNoYXJhY3RlcmRhdGEiKSk7CisgICAgICAgIGlmICgh
djhDaGFyYWN0ZXJkYXRhLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHR5cGVzLT5zZXRDaGFyYWN0
ZXJkYXRhKHY4Q2hhcmFjdGVyZGF0YS0+Qm9vbGVhblZhbHVlKCkpOworICAgIH0KKyAgICBpZiAo
bGlzdGVuZXIgJiYgdHlwZXMpIHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKS0+YWRkTXV0YXRpb25MaXN0ZW5lcihsaXN0ZW5lciwgdHlwZXMpOworICAgICAgICBjcmVh
dGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMF0sIFY4Tm9kZTo6bXV0YXRp
b25MaXN0ZW5lckNhY2hlSW5kZXgpOworICAgIH0KKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjp3ZWJraXRSZW1vdmVNdXRhdGlv
bkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5Ob2RlLndlYmtpdFJlbW92ZU11dGF0aW9uTGlzdGVuZXIoKSIpOworICAgIFJl
ZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RE9NV3JhcHBlcjo6Z2V0TXV0YXRp
b25MaXN0ZW5lcihhcmdzWzBdLCBMaXN0ZW5lckZpbmRPbmx5KTsKKyAgICBpZiAobGlzdGVuZXIp
IHsKKyAgICAgICAgVjhOb2RlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+cmVtb3ZlTXV0YXRp
b25MaXN0ZW5lcihsaXN0ZW5lci5nZXQoKSk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVu
Y3koYXJncy5Ib2xkZXIoKSwgYXJnc1swXSwgVjhOb2RlOjptdXRhdGlvbkxpc3RlbmVyQ2FjaGVJ
bmRleCk7CisgICAgfQorICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQog
ewogICAgIGlmICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA3
NDAxYzI4MDVmMjk4MGY0ODEzMGJhMDA3NDVlNjcyMTJhYjI4OGZlLi45ZmM4NGU2OGRjM2FlYzlk
OWEzNTg5YzgxZmExNDZiODk3Mzc4OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQu
aCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlRleHRCcmVha0l0
ZXJhdG9yLmgiCkBAIC0xOTgsNiArMTk5LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRj
aE1vZGlmaWVkRXZlbnQoU3RyaW5nSW1wbCogb2xkRGF0YSkKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGRv
Y3VtZW50KCksIHRoaXMpOwogI2VuZGlmCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlvblJl
Y29yZDo6Y3JlYXRlVGV4dERhdGFDaGFuZ2VkKHRoaXMpKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJE
YXRhOjpjaGVja0NoYXJEYXRhT3BlcmF0aW9uKHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmJhNWFjZTdmZTU3
ZjIzMzhlNWNkM2U2ZTFjNWEyOGY1ZGE2ODk5OC4uNjMwZDYxYmMwNWVhNGY2N2IyZGNlMmIyMjg0
OWQ5N2U0OTcxZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMzUs
MTEgKzM1LDEzIEBACiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKKyNpbmNs
dWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJS
ZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJTdGF0
aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApAQCAtMTA5NSw2ICsxMDk3LDExIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRJbnNlcnRpb25FdmVudHMoTm9kZSogY2hpbGQpCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBj
aGlsZDsKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7
CiAKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gaW5zZXJ0ZWROb2RlczsKKyAgICBpbnNlcnRl
ZE5vZGVzLmFwcGVuZChjKTsKKyAgICBpZiAoYy0+cGFyZW50Tm9kZSgpKQorICAgICAgICBjLT5w
YXJlbnROb2RlKCktPmRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUNoaWxk
bGlzdENoYW5nZWQoYy0+cGFyZW50Tm9kZSgpLCBTdGF0aWNOb2RlTGlzdDo6YWRvcHQoaW5zZXJ0
ZWROb2RlcyksIDAsIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIGlmIChjLT5wYXJlbnROb2Rl
KCkgJiYgZG9jdW1lbnQtPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERUlOU0VSVEVE
X0xJU1RFTkVSKSkKICAgICAgICAgYy0+ZGlzcGF0Y2hTY29wZWRFdmVudChNdXRhdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50LCB0cnVlLCBjLT5wYXJl
bnROb2RlKCkpKTsKIApAQCAtMTExNiw2ICsxMTIzLDEyIEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRSZW1vdmFsRXZlbnRzKE5vZGUqIGNoaWxkKQogICAgIFJlZlB0cjxOb2RlPiBjID0gY2hp
bGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5kb2N1bWVudCgpOwog
CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHJlbW92ZWROb2RlczsKKyAgICByZW1vdmVkTm9k
ZXMuYXBwZW5kKGMpOworCisgICAgaWYgKGMtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgYy0+cGFy
ZW50Tm9kZSgpLT5kaXNwYXRjaE11dGF0aW9uKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZGxp
c3RDaGFuZ2VkKGMtPnBhcmVudE5vZGUoKSwgMCwgU3RhdGljTm9kZUxpc3Q6OmFkb3B0KHJlbW92
ZWROb2RlcyksIGMtPm5leHRTaWJsaW5nKCkpKTsKKwogICAgIC8vIGRpc3BhdGNoIHByZS1yZW1v
dmFsIG11dGF0aW9uIGV2ZW50cwogICAgIGlmIChjLT5wYXJlbnROb2RlKCkgJiYgZG9jdW1lbnQt
Pmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NTk9ERVJFTU9WRURfTElTVEVORVIpKQogICAg
ICAgICBjLT5kaXNwYXRjaFNjb3BlZEV2ZW50KE11dGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCwgdHJ1ZSwgYy0+cGFyZW50Tm9kZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggYjllYmY5Y2M3NTMwZTdkZDg5MTVkMTRmODcwNzI5NjViODRk
ZGNiYi4uYzk0M2JkZjY1Mjk4NDFiNWM1ODZjNjQxODAyYjJjNmVkYjQ1NzM4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKQEAgLTY5OSw2ICs3MDAsOCBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0dHJp
YnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUs
CiAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7
CiAjZW5kaWYKKworICAgIGRpc3BhdGNoTXV0YXRpb24oTXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0
dHJpYnV0ZUNoYW5nZWQodGhpcywgbG9jYWxOYW1lLCAiIiwgIiIpKTsKIH0KIAogdm9pZCBFbGVt
ZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCkBAIC03MzIsNiArNzM1LDggQEAgdm9pZCBF
bGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSwKICAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRl
KCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0cihk
b2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgorCisgICAgZGlzcGF0Y2hNdXRhdGlvbihNdXRhdGlv
blJlY29yZDo6Y3JlYXRlQXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBuYW1lLmxvY2FsTmFtZSgpLCAi
IiwgIiIpKTsKIH0KIAogUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IEVsZW1lbnQ6OmNyZWF0ZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg5ZjQ0NWU5
NjA2ZTNiZWVjODIzNjJhNTVlZTUxOWNhNDRkYWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
TXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIE11dGF0aW9uTGlzdGVuZXJfaAorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNdXRh
dGlvblJlY29yZExpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBN
dXRhdGlvbkxpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25MaXN0ZW5lcj4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfk11dGF0aW9uTGlzdGVuZXIoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTXV0YXRpb25SZWNv
cmRMaXN0KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE11dGF0aW9u
TGlzdGVuZXImKSA9IDA7CisgICAgdmlydHVhbCB1bnNpZ25lZCBoYXNoKCkgPSAwOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3Rl
bmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkxpc3RlbmVyLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNzVjNjg5MWE0NzcwN2M4ODVhNjc1OTAwMzA5NTQxY2E4ZGZiOWZkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uTGlzdGVuZXIuaWRsCkBAIC0wLDAg
KzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgUHVyZUludGVy
ZmFjZSwKKyAgICAgICAgT21pdENvbnN0cnVjdG9yCisgICAgXSBNdXRhdGlvbkxpc3RlbmVyIHsK
KyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBNdXRhdGlvblJlY29yZExpc3QgbXV0YXRpb25z
KTsKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVj
b3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWVlMzk2NjMxMTJjZjE3NjZhMGMzNjY0YWVkMTM1NzRlODM0MmEzMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorCisj
aW5jbHVkZSAiTXV0YXRpb25UeXBlcy5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKworLy8gVE9ETyhhZGFtayk6IEZpZ3VyZSBv
dXQgd2hldGhlciB3ZSB3YW50IHRvIHNoYXJlIGEgc2luZ2xlIGVtcHR5IG5vZGUgbGlzdCwgb3IK
Ky8vIGRvIHNvbWV0aGluZyBlbHNlIHNtYXJ0LgorY2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1Ymxp
YyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5Tm9kZUxpc3Qp
OworICAgIH0KKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCkgY29uc3QgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgTm9kZSogaXRlbVdpdGhOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbXB0eU5vZGVMaXN0KCkgeyB9Cit9
OworCit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVDaGlsZGxpc3RDaGFuZ2VkKFBhc3NSZWZQdHI8Tm9kZT4gdGFyZ2V0LCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBpbnNlcnRlZCwgUGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVtb3ZlZCwgUGFzc1JlZlB0
cjxOb2RlPiBuZXh0Tm9kZSkKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9u
ID0gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkKE11dGF0aW9uVHlwZXM6OmNoaWxkbGlzdE5h
bWUoKSwgdGFyZ2V0KSk7CisgICAgbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcyA9IGluc2VydGVk
OworICAgIGlmICghbXV0YXRpb24tPm1faW5zZXJ0ZWROb2RlcykKKyAgICAgICAgbXV0YXRpb24t
Pm1faW5zZXJ0ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6OmNyZWF0ZSgpOworICAgIG11dGF0aW9u
LT5tX3JlbW92ZWROb2RlcyA9IHJlbW92ZWQ7CisgICAgaWYgKCFtdXRhdGlvbi0+bV9yZW1vdmVk
Tm9kZXMpCisgICAgICAgIG11dGF0aW9uLT5tX3JlbW92ZWROb2RlcyA9IEVtcHR5Tm9kZUxpc3Q6
OmNyZWF0ZSgpOworICAgIG11dGF0aW9uLT5tX25leHROb2RlID0gbmV4dE5vZGU7CisgICAgcmV0
dXJuIG11dGF0aW9uLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZD4g
TXV0YXRpb25SZWNvcmQ6OmNyZWF0ZUF0dHJpYnV0ZUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0
YXJnZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0ck5hbWUsIGNvbnN0IFN0cmluZyYgcHJldlZh
bHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29y
ZD4gbXV0YXRpb24gPSBhZG9wdFJlZihuZXcgTXV0YXRpb25SZWNvcmQoTXV0YXRpb25UeXBlczo6
YXR0cmlidXRlTmFtZSgpLCB0YXJnZXQpKTsKKyAgICBtdXRhdGlvbi0+bV9hdHRyTmFtZSA9IGF0
dHJOYW1lOworICAgIG11dGF0aW9uLT5tX3ByZXZWYWx1ZSA9IHByZXZWYWx1ZTsKKyAgICBtdXRh
dGlvbi0+bV9uZXdWYWx1ZSA9IG5ld1ZhbHVlOworICAgIHJldHVybiBtdXRhdGlvbi5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVh
dGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNdXRhdGlvblJlY29yZChNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJkYXRh
TmFtZSgpLCB0YXJnZXQpKTsKK30KKworTXV0YXRpb25SZWNvcmQ6Ok11dGF0aW9uUmVjb3JkKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpCisgICAgOiBt
X3R5cGUodHlwZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKK3sKK30KKworTXV0YXRpb25SZWNv
cmQ6On5NdXRhdGlvblJlY29yZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZjMDU2MDRmNzE1NGQ4NWRh
MGM2MzZiZWQ3NTdkNGViZDdjYTgxYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9uUmVj
b3JkX2gKKyNkZWZpbmUgTXV0YXRpb25SZWNvcmRfaAorCisjaW5jbHVkZSAiTm9kZS5oIgorI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNdXRhdGlvblJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE11
dGF0aW9uUmVjb3JkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRpb25S
ZWNvcmQ+IGNyZWF0ZUNoaWxkbGlzdENoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IGluc2VydGVkLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVk
LCBQYXNzUmVmUHRyPE5vZGU+IG5leHROb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNdXRh
dGlvblJlY29yZD4gY3JlYXRlQXR0cmlidXRlQ2hhbmdlZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdl
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBwcmV2VmFsdWUs
IGNvbnN0IFN0cmluZyYgbmV3VmFsdWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBjcmVhdGVUZXh0RGF0YUNoYW5nZWQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQpOwor
CisgICAgdmlydHVhbCB+TXV0YXRpb25SZWNvcmQoKTsKKworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIE5vZGUqIHRhcmdldCgpIHsgcmV0dXJu
IG1fdGFyZ2V0LmdldCgpOyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnY2hpbGRsaXN0JworICAg
IE5vZGVMaXN0KiBpbnNlcnRlZE5vZGVzKCkgeyByZXR1cm4gbV9pbnNlcnRlZE5vZGVzLmdldCgp
OyB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIHsgcmV0dXJuIG1fcmVtb3ZlZE5vZGVz
LmdldCgpOyB9CisgICAgTm9kZSogbmV4dE5vZGUoKSB7IHJldHVybiBtX25leHROb2RlLmdldCgp
OyB9CisKKyAgICAvLyBGb3IgdHlwZSA9PSAnYXR0cmlidXRlJworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0ck5hbWUoKSB7IHJldHVybiBtX2F0dHJOYW1lOyB9CisgICAgY29uc3QgU3RyaW5n
JiBwcmV2VmFsdWUoKSB7IHJldHVybiBtX3ByZXZWYWx1ZTsgfQorICAgIGNvbnN0IFN0cmluZyYg
bmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CisKK3ByaXZhdGU6CisgICAgTXV0YXRp
b25SZWNvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBQYXNzUmVmUHRyPE5vZGU+IHRhcmdl
dCk7CisKKyAgICBBdG9taWNTdHJpbmcgbV90eXBlOworICAgIFJlZlB0cjxOb2RlPiBtX3Rhcmdl
dDsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1faW5zZXJ0ZWROb2RlczsKKyAgICBSZWZQdHI8Tm9k
ZUxpc3Q+IG1fcmVtb3ZlZE5vZGVzOworICAgIFJlZlB0cjxOb2RlPiBtX25leHROb2RlOworICAg
IEF0b21pY1N0cmluZyBtX2F0dHJOYW1lOworICAgIFN0cmluZyBtX3ByZXZWYWx1ZTsKKyAgICBT
dHJpbmcgbV9uZXdWYWx1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTdiY2NlZDYx
ZTBkYzk2YmJhMGM3NzZjZGE5YjkyNWI4Y2Q2YjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNv
cmUgeworICAgIGludGVyZmFjZSBNdXRhdGlvblJlY29yZCB7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgICAgICB0eXBlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Tm9kZSAgICAgICAgICAgdGFyZ2V0OworCisgICAgICAgIC8vIEZvciB0eXBlID09ICdjaGlsZGxp
c3QnCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAgICAgICBpbnNlcnRlZE5v
ZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgICAgICAgcmVtb3ZlZE5v
ZGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgbmV4dE5vZGU7
CisKKyAgICAgICAgLy8gRm9yIHR5cGUgPT0gJ2F0dHJpYnV0ZScKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyAgICAgIGF0dHJOYW1lOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nICAgICAgcHJldlZhbHVlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nICAgICAgbmV3VmFsdWU7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uUmVjb3JkTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E4ZTJmMzBiMzAyYmQ2NGQxYTI0
ZmNkYjAzOGQ4YzZkNmExODVhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvblJlY29yZExpc3QuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmRMaXN0LmgiCisKKyNpbmNsdWRlICJNdXRhdGlv
blJlY29yZC5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNdXRhdGlvblJlY29yZExpc3Q+IE11dGF0aW9uUmVjb3JkTGlzdDo6Y3Jl
YXRlKFBhc3NPd25QdHI8TXV0YXRpb25SZWNvcmRWZWN0b3I+IG11dGF0aW9ucykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE11dGF0aW9uUmVjb3JkTGlzdChtdXRhdGlvbnMpKTsKK30KKwor
TXV0YXRpb25SZWNvcmRMaXN0OjpNdXRhdGlvblJlY29yZExpc3QoUGFzc093blB0cjxNdXRhdGlv
blJlY29yZFZlY3Rvcj4gbXV0YXRpb25zKQoreworICAgIE93blB0cjxNdXRhdGlvblJlY29yZFZl
Y3Rvcj4gb3duZWRNdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgbV9tdXRhdGlvbnMuc3dhcCgq
b3duZWRNdXRhdGlvbnMpOworfQorCitNdXRhdGlvblJlY29yZExpc3Q6On5NdXRhdGlvblJlY29y
ZExpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIE11dGF0aW9uUmVjb3JkTGlzdDo6bGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV9tdXRhdGlvbnMuc2l6ZSgpOworfQorCitNdXRhdGlvblJlY29y
ZCogTXV0YXRpb25SZWNvcmRMaXN0OjppdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgICAg
aWYgKGluZGV4ID49IG1fbXV0YXRpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gbV9tdXRhdGlvbnNbaW5kZXhdLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWExNGM4YWM2ODgyNDRjNjc5NzNlMWE2MWNhZmQ5MTdhOWZiYmVkMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZExpc3QuaApAQCAtMCwwICsxLDYx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNdXRhdGlvblJlY29yZExpc3RfaAorI2RlZmluZSBNdXRhdGlvblJlY29yZExp
c3RfaAorCisjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZFZl
Y3RvcjsKKworY2xhc3MgTXV0YXRpb25SZWNvcmRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TXV0
YXRpb25SZWNvcmRMaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmRMaXN0PiBjcmVhdGUoUGFzc093blB0cjxNdXRhdGlvblJlY29yZFZlY3Rvcj4pOwor
ICAgIHZpcnR1YWwgfk11dGF0aW9uUmVjb3JkTGlzdCgpOworCisgICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGgoKTsKKyAgICBNdXRhdGlvblJlY29yZCogaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNdXRhdGlvblJlY29yZExpc3QoUGFzc093blB0cjxN
dXRhdGlvblJlY29yZFZlY3Rvcj4pOworCisgICAgTXV0YXRpb25SZWNvcmRWZWN0b3IgbV9tdXRh
dGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25SZWNvcmRMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGRmMzAxOTNhZmIw
ZmQ0ZmQ1MzU0M2U5MWFkYjhkMjNkYmQ5ZmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkTGlzdC5pZGwKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBj
b3JlIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICBdIE11
dGF0aW9uUmVjb3JkTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKKyAgICAgICAgTXV0YXRpb25SZWNvcmQgaXRlbShpbiBbSXNJbmRleF0gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJn
ZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkwNjdhMDdjY2QxY2MwZmM3ZDBkN2E3MzBlNzk4ZDMyMzcwOWEz
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQu
Y3BwCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0
aW9uVGFyZ2V0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9u
TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUgIk11dGF0
aW9uUmVjb3JkTGlzdC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0YS5oIgorI2luY2x1
ZGUgIk11dGF0aW9uVHlwZXMuaCIKKyNpbmNsdWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5l
ci5oIgorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitzdHJ1Y3QgTXV0YXRpb25D
b250ZXh0IHsKKyAgICBNdXRhdGlvbkNvbnRleHQoUGFzc1JlZlB0cjxEb2N1bWVudD4gZCwgUGFz
c1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBvKQorICAgICAgICA6IGRvY3VtZW50KGQpCisgICAg
ICAgICwgbGlzdGVuZXIobykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudDsKKyAgICBSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gbGlzdGVuZXI7Cit9OworCitz
dHJ1Y3QgTXV0YXRpb25Db250ZXh0UHRySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgTXV0YXRpb25Db250ZXh0KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gSW50SGFz
aDx1aW50NjRfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KFB0ckhhc2g8RG9jdW1lbnQq
Pjo6aGFzaChrZXktPmRvY3VtZW50LmdldCgpKSkgPDwgMzIgfCBrZXktPmxpc3RlbmVyLT5oYXNo
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IE11dGF0aW9uQ29udGV4
dCogYSwgY29uc3QgTXV0YXRpb25Db250ZXh0KiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEt
PmRvY3VtZW50ID09IGItPmRvY3VtZW50ICYmICphLT5saXN0ZW5lciA9PSAqYi0+bGlzdGVuZXI7
CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQgPSBmYWxzZTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxNdXRhdGlvbkNvbnRleHQqLCBN
dXRhdGlvblJlY29yZFZlY3RvciosIE11dGF0aW9uQ29udGV4dFB0ckhhc2g+IENvbnRleHRWZWN0
b3JNYXA7CisKK30gLy8gbmFtZXNwYWNlCisKK3N0YXRpYyBDb250ZXh0VmVjdG9yTWFwJiBjb250
ZXh0VmVjdG9yTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbnRleHRWZWN0b3JN
YXAsIG0sICgpKTsKKyAgICByZXR1cm4gbTsKK30KKworc3RhdGljIERlcXVlPE93blB0cjxNdXRh
dGlvbkNvbnRleHQ+ID4mIGFjdGl2ZU11dGF0aW9uQ29udGV4dHMoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRGVxdWU8T3duUHRyPE11dGF0aW9uQ29udGV4dD4gPiwgYWN0aXZlQ29udGV4
dHMsICgpKTsKKyAgICByZXR1cm4gYWN0aXZlQ29udGV4dHM7Cit9CisKK3ZvaWQgc3Bpbk11dGF0
aW9uUXVldWUoKQoreworICAgIHdoaWxlICghYWN0aXZlTXV0YXRpb25Db250ZXh0cygpLmlzRW1w
dHkoKSkgeworICAgICAgICBPd25QdHI8TXV0YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWN0aXZl
TXV0YXRpb25Db250ZXh0cygpLnRha2VGaXJzdCgpOworICAgICAgICBPd25QdHI8TXV0YXRpb25S
ZWNvcmRWZWN0b3I+IHYgPSBhZG9wdFB0cihjb250ZXh0VmVjdG9yTWFwKCkudGFrZShjb250ZXh0
LmdldCgpKSk7CisgICAgICAgIGNvbnRleHQtPmxpc3RlbmVyLT5oYW5kbGVFdmVudChjb250ZXh0
LT5kb2N1bWVudC5nZXQoKSwgTXV0YXRpb25SZWNvcmRMaXN0OjpjcmVhdGUodi5yZWxlYXNlKCkp
LmdldCgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGVuc3VyZU11dGF0aW9uUXVldWVkKFBh
c3NSZWZQdHI8TXV0YXRpb25MaXN0ZW5lcj4gcHJwTGlzdGVuZXIsIFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+IHBycE11dGF0aW9uKQoreworICAgIFJlZlB0cjxNdXRhdGlvblJlY29yZD4gbXV0
YXRpb24gPSBwcnBNdXRhdGlvbjsKKyAgICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpKTsKKyAg
ICBBU1NFUlQobXV0YXRpb24tPnRhcmdldCgpLT5kb2N1bWVudCgpKTsKKyAgICBPd25QdHI8TXV0
YXRpb25Db250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IE11dGF0aW9uQ29udGV4dChtdXRh
dGlvbi0+dGFyZ2V0KCktPmRvY3VtZW50KCksIHBycExpc3RlbmVyKSk7CisKKyAgICBwYWlyPENv
bnRleHRWZWN0b3JNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBjb250ZXh0VmVjdG9yTWFw
KCkuYWRkKGNvbnRleHQuZ2V0KCksIDApOworICAgIGlmIChyZXN1bHQuc2Vjb25kKSB7CisgICAg
ICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3IE11dGF0aW9uUmVjb3JkVmVjdG9yOworICAg
ICAgICBhY3RpdmVNdXRhdGlvbkNvbnRleHRzKCkuYXBwZW5kKGNvbnRleHQucmVsZWFzZSgpKTsK
KyAgICB9CisgICAgTXV0YXRpb25SZWNvcmRWZWN0b3IqIHYgPSByZXN1bHQuZmlyc3QtPnNlY29u
ZDsKKyAgICBpZiAodi0+aXNFbXB0eSgpIHx8IHYtPmxhc3QoKSAhPSBtdXRhdGlvbikKKyAgICAg
ICAgdi0+YXBwZW5kKG11dGF0aW9uKTsKK30KKworTXV0YXRpb25UYXJnZXQ6On5NdXRhdGlvblRh
cmdldCgpCit7Cit9CisKK3ZvaWQgTXV0YXRpb25UYXJnZXQ6OmFkZE11dGF0aW9uTGlzdGVuZXIo
UGFzc1JlZlB0cjxNdXRhdGlvbkxpc3RlbmVyPiBwcnBMaXN0ZW5lciwgUGFzc1JlZlB0cjxNdXRh
dGlvblR5cGVzPiBwcnBUeXBlcykKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25UeXBlcz4gdHlwZXMg
PSBwcnBUeXBlczsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lciByZWdpc3RlcmVkTGlz
dGVuZXIocHJwTGlzdGVuZXIsICp0eXBlcyk7CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBkID0g
ZW5zdXJlTXV0YXRpb25UYXJnZXREYXRhKCk7CisgICAgc2l6ZV90IGluZGV4ID0gZC0+bGlzdGVu
ZXJzLmZpbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIGQtPmxpc3RlbmVycy5hcHBlbmQocmVnaXN0ZXJlZExpc3RlbmVyKTsKKyAgICBl
bHNlCisgICAgICAgIGQtPmxpc3RlbmVyc1tpbmRleF0ubWVyZ2VUeXBlcygqdHlwZXMpOworfQor
Cit2b2lkIE11dGF0aW9uVGFyZ2V0OjpyZW1vdmVNdXRhdGlvbkxpc3RlbmVyKE11dGF0aW9uTGlz
dGVuZXIqIGxpc3RlbmVyKQoreworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9u
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkLT5saXN0ZW5lcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KCpkLT5saXN0ZW5lcnNbaV0ubGlzdGVuZXIgPT0gKmxpc3RlbmVyKSB7CisgICAgICAgICAgICBk
LT5saXN0ZW5lcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIE11dGF0aW9uVGFyZ2V0OjplbnF1ZXVlTXV0YXRpb24oUGFzc1JlZlB0
cjxNdXRhdGlvblJlY29yZD4gcHJwTXV0YXRpb24pCit7CisgICAgQVNTRVJUKHBycE11dGF0aW9u
KTsKKworICAgIE11dGF0aW9uVGFyZ2V0RGF0YSogZCA9IG11dGF0aW9uVGFyZ2V0RGF0YSgpOwor
ICAgIGlmICghZCB8fCBkLT5saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uID0gcHJwTXV0YXRpb247CisgICAg
dWludDhfdCBtYXNrID0gMDsKKyAgICBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5
cGVzOjpjaGlsZGxpc3ROYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRhdGlvblR5cGVzOjpDaGls
ZGxpc3Q7CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5cGVzOjph
dHRyaWJ1dGVOYW1lKCkpCisgICAgICAgIG1hc2sgPSBNdXRhdGlvblR5cGVzOjpBdHRyaWJ1dGU7
CisgICAgZWxzZSBpZiAobXV0YXRpb24tPnR5cGUoKSA9PSBNdXRhdGlvblR5cGVzOjpjaGFyYWN0
ZXJkYXRhTmFtZSgpKQorICAgICAgICBtYXNrID0gTXV0YXRpb25UeXBlczo6Q2hhcmFjdGVyZGF0
YTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC0+bGlzdGVuZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChkLT5saXN0ZW5lcnNbaV0udHlwZXMgJiBtYXNrKQorICAgICAgICAg
ICAgZW5zdXJlTXV0YXRpb25RdWV1ZWQoZC0+bGlzdGVuZXJzW2ldLmxpc3RlbmVyLCBtdXRhdGlv
bik7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25UYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRh
dGlvblRhcmdldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzIzZTNiMDVkZDJjNTc1NWU3OWVkNDMyYWUzMDZj
OWU3MDkxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25U
YXJnZXQuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNdXRhdGlvblRhcmdldF9oCisjZGVmaW5l
IE11dGF0aW9uVGFyZ2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTXV0YXRpb25MaXN0ZW5lcjsKK2NsYXNzIE11dGF0aW9u
UmVjb3JkOworY2xhc3MgTXV0YXRpb25UYXJnZXREYXRhOworY2xhc3MgTXV0YXRpb25UeXBlczsK
KworY2xhc3MgTXV0YXRpb25UYXJnZXQgeworcHVibGljOgorICAgIHZvaWQgYWRkTXV0YXRpb25M
aXN0ZW5lcihQYXNzUmVmUHRyPE11dGF0aW9uTGlzdGVuZXI+LCBQYXNzUmVmUHRyPE11dGF0aW9u
VHlwZXM+KTsKKyAgICB2b2lkIHJlbW92ZU11dGF0aW9uTGlzdGVuZXIoTXV0YXRpb25MaXN0ZW5l
ciopOworCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTXV0YXRpb24oUGFzc1JlZlB0cjxNdXRh
dGlvblJlY29yZD4pID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk11dGF0aW9uVGFy
Z2V0KCk7CisKKyAgICB2b2lkIGVucXVldWVNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9uUmVj
b3JkPik7CisKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJnZXRE
YXRhKCkgPSAwOworICAgIHZpcnR1YWwgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRhdGlv
blRhcmdldERhdGEoKSA9IDA7Cit9OworCit2b2lkIHNwaW5NdXRhdGlvblF1ZXVlKCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFyZ2V0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NdXRhdGlvblRhcmdldERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGJlMTBjMzBkMmUw
YTNiOTQ0OTAwZGI1ZTRhMjhkZjE2YmFmYWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uVGFyZ2V0RGF0YS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11
dGF0aW9uVGFyZ2V0RGF0YV9oCisjZGVmaW5lIE11dGF0aW9uVGFyZ2V0RGF0YV9oCisKKyNpbmNs
dWRlICJSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3R5cGVkZWYgVmVjdG9yPFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3RlbmVyPiBNdXRhdGlvbkxp
c3RlbmVyVmVjdG9yOworc3RydWN0IE11dGF0aW9uVGFyZ2V0RGF0YSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTXV0YXRpb25UYXJnZXREYXRhKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBNdXRhdGlvblRhcmdldERhdGEoKSB7IH0KKyAgICB+TXV0YXRp
b25UYXJnZXREYXRhKCkgeyB9CisKKyAgICBNdXRhdGlvbkxpc3RlbmVyVmVjdG9yIGxpc3RlbmVy
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE11dGF0aW9uVGFy
Z2V0RGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNh
ZjUxNTdmMmUxZGFhZTY4MzIyZTMyMzE2M2FhZjczNDAyOTY2YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk11dGF0aW9uVHlwZXMuaCIKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTXV0YXRpb25UeXBlczo6Y2hp
bGRsaXN0TmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5h
bWUsICgiY2hpbGRsaXN0IikpOworICAgIHJldHVybiBuYW1lOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIE11dGF0aW9uVHlwZXM6OmF0dHJpYnV0ZU5hbWUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBuYW1lLCAoImF0dHJpYnV0ZSIpKTsKKyAgICByZXR1cm4g
bmFtZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNdXRhdGlvblR5cGVzOjpjaGFyYWN0ZXJk
YXRhTmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIG5hbWUs
ICgiY2hhcmFjdGVyZGF0YSIpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNjIzZGRjYTNmZmJh
MWZiOTk3ZWVkZGZlYzJmMGM1Nzg5ZTUxN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25UeXBlcy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE11dGF0aW9u
VHlwZXNfaAorI2RlZmluZSBNdXRhdGlvblR5cGVzX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE11dGF0aW9uVHlwZXMgOiBw
dWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvblR5cGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TXV0YXRpb25UeXBlcz4gY3JlYXRlKGJvb2wgY2hpbGRsaXN0ID0gZmFsc2UsIGJv
b2wgYXR0cmlidXRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyZGF0YSA9IGZhbHNlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvblR5cGVzKGNoaWxkbGlzdCwgYXR0
cmlidXRlLCBjaGFyYWN0ZXJkYXRhKSk7CisgICAgfQorCisgICAgZW51bSBNdXRhdGlvblR5cGVG
bGFncyB7CisgICAgICAgIENoaWxkbGlzdCA9ICgxIDw8IDApLAorICAgICAgICBBdHRyaWJ1dGUg
PSAoMSA8PCAxKSwKKyAgICAgICAgQ2hhcmFjdGVyZGF0YSA9ICgxIDw8IDIpCisgICAgfTsKKwor
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNoaWxkbGlzdE5hbWUoKTsKKyAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKCk7CisgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgY2hhcmFjdGVyZGF0YU5hbWUoKTsKKworICAgIGJvb2wgY2hpbGRsaXN0
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZGxpc3Q7IH0KKyAgICB2b2lkIHNldENoaWxkbGlzdChi
b29sIGNoaWxkbGlzdCkgeyBtX2NoaWxkbGlzdCA9IGNoaWxkbGlzdDsgfQorICAgIGJvb2wgYXR0
cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGU7IH0KKyAgICB2b2lkIHNldEF0dHJp
YnV0ZShib29sIGF0dHJpYnV0ZSkgeyBtX2F0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsgfQorICAgIGJv
b2wgY2hhcmFjdGVyZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyZGF0YTsgfQorICAg
IHZvaWQgc2V0Q2hhcmFjdGVyZGF0YShib29sIGNoYXJhY3RlcmRhdGEpIHsgbV9jaGFyYWN0ZXJk
YXRhID0gY2hhcmFjdGVyZGF0YTsgfQorCitwcml2YXRlOgorICAgIE11dGF0aW9uVHlwZXMoYm9v
bCBjaGlsZGxpc3QsIGJvb2wgYXR0cmlidXRlLCBib29sIGNoYXJhY3RlcmRhdGEpCisgICAgICAg
IDogbV9jaGlsZGxpc3QoY2hpbGRsaXN0KQorICAgICAgICAsIG1fYXR0cmlidXRlKGF0dHJpYnV0
ZSkKKyAgICAgICAgLCBtX2NoYXJhY3RlcmRhdGEoY2hhcmFjdGVyZGF0YSkKKyAgICB7CisgICAg
fQorCisgICAgYm9vbCBtX2NoaWxkbGlzdDsKKyAgICBib29sIG1fYXR0cmlidXRlOworICAgIGJv
b2wgbV9jaGFyYWN0ZXJkYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmIC8vIE11
dGF0aW9uVHlwZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlw
ZXMuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uVHlwZXMuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3ZDBiMzMyNGVhN2NjZWY3ZTUyMzEzNTg1YTEyYTAyNWI3YWY3YTcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25UeXBlcy5pZGwKQEAgLTAsMCArMSwzNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K21vZHVsZSBjb3JlIHsKKyAgICBpbnRlcmZhY2UgTXV0YXRpb25UeXBlcyB7CisgICAgICAgIGF0
dHJpYnV0ZSBib29sZWFuIGNoaWxkbGlzdDsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gYXR0
cmlidXRlOworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBjaGFyYWN0ZXJkYXRhOworICAgIH07
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzJkNzAzYWI1NDE5NGRlOTY5OWYzMWE0OWU1ZDZhMTg2
YzM2NWEyYS4uOTgyYzAyOGZlZjA5Njg0YWRjZDdiYjllZGRlN2JiNzNlYjY0OTcxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgorI2luY2x1ZGUg
Ik11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSAiTmFtZU5vZGVMaXN0LmgiCiAjaW5jbHVkZSAi
TmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCkBAIC0yODU5LDYgKzI4
NjAsMjMgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAg
ICB9CiB9CiAKK3ZvaWQgTm9kZTo6ZGlzcGF0Y2hNdXRhdGlvbihQYXNzUmVmUHRyPE11dGF0aW9u
UmVjb3JkPiBwcnBNdXRhdGlvbikKK3sKKyAgICBSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0
aW9uID0gcHJwTXV0YXRpb247CisgICAgZm9yIChOb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPnBh
cmVudE5vZGUoKSkKKyAgICAgICAgbi0+ZW5xdWV1ZU11dGF0aW9uKG11dGF0aW9uKTsKK30KKwor
TXV0YXRpb25UYXJnZXREYXRhKiBOb2RlOjptdXRhdGlvblRhcmdldERhdGEoKQoreworICAgIHJl
dHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+bXV0YXRpb25UYXJnZXREYXRhKCkgOiAw
OworfQorCitNdXRhdGlvblRhcmdldERhdGEqIE5vZGU6OmVuc3VyZU11dGF0aW9uVGFyZ2V0RGF0
YSgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU11dGF0aW9uVGFyZ2V0
RGF0YSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCAxYTk5MmU1NDZiMTE2OGM4MzdlYzc5MTE1NmQxODdmZjE5YWQ2MmQ3Li5k
NzkzODM2YjdmYzY1ZGVmOTUzMTk1ZTFlNDE3MTg3NmY0ZDRhODEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiS1VS
TEhhc2guaCIKKyNpbmNsdWRlICJNdXRhdGlvblRhcmdldC5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAi
VHJlZVNoYXJlZC5oIgpAQCAtOTMsNyArOTQsNyBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAg
ICAgU3ludGhldGljU3R5bGVDaGFuZ2UgPSAzIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0CiB9Owog
Ci1jbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CitjbGFzcyBOb2RlIDogcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPiwgcHVibGljIFNj
cmlwdFdyYXBwYWJsZSwgcHVibGljIE11dGF0aW9uVGFyZ2V0IHsKICAgICBmcmllbmQgY2xhc3Mg
RG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKIApAQCAtNTc3LDYgKzU3OCwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KTsKIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE11dGF0aW9uKFBhc3NSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+KTsKKyAgICB2aXJ0dWFsIE11dGF0aW9uVGFyZ2V0RGF0YSogbXV0YXRpb25UYXJn
ZXREYXRhKCk7CisgICAgdmlydHVhbCBNdXRhdGlvblRhcmdldERhdGEqIGVuc3VyZU11dGF0aW9u
VGFyZ2V0RGF0YSgpOworCiBwcml2YXRlOgogICAgIGVudW0gTm9kZUZsYWdzIHsKICAgICAgICAg
SXNUZXh0RmxhZyA9IDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggYWFjZWYxNWI2NjViNTBlNjE5NDA1
MGRjZThkM2EwMTdjYzE0ZjZkNS4uMzJhYjIyYjJiYjIzZTc0YjFiYmUzNjhiYTlkZTljZjc4YzI1
OTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbApAQCAtMTU5LDYgKzE1OSwxMSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogI2VuZGlmCiAKKyNpZiAhZGVm
aW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCisgICAg
ICAgIFtDdXN0b21dIHZvaWQgd2Via2l0QWRkTXV0YXRpb25MaXN0ZW5lcihpbiBNdXRhdGlvbkxp
c3RlbmVyIGxpc3RlbmVyLCBpbiBNdXRhdGlvblR5cGVzIHR5cGVzKTsKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCB3ZWJraXRSZW1vdmVNdXRhdGlvbkxpc3RlbmVyKGluIE11dGF0aW9uTGlzdGVuZXIg
bGlzdGVuZXIpOworI2VuZGlmCisKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKaW5kZXggYjkyMWEyM2EyMzdmMmM0N2Y2NzQ2NWJlZGNjZjQxNzY0ZjllOTNjOS4uMWVhMDlh
MDliY2Q3NWRhYzRhOGVhYTRkYWI1OWZmNmIyZDQwZGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFy
ZURhdGEuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIkR5bmFtaWNOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0RGF0
YS5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUu
aCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgpAQCAtMTIxLDYgKzEyMiwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YS5nZXQoKTsKICAgICB9CiAKKyAgICBN
dXRhdGlvblRhcmdldERhdGEqIG11dGF0aW9uVGFyZ2V0RGF0YSgpIHsgcmV0dXJuIG1fbXV0YXRp
b25UYXJnZXREYXRhLmdldCgpOyB9CisgICAgTXV0YXRpb25UYXJnZXREYXRhKiBlbnN1cmVNdXRh
dGlvblRhcmdldERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX211dGF0aW9uVGFyZ2V0RGF0
YSkKKyAgICAgICAgICAgIG1fbXV0YXRpb25UYXJnZXREYXRhID0gYWRvcHRQdHIobmV3IE11dGF0
aW9uVGFyZ2V0RGF0YSk7CisgICAgICAgIHJldHVybiBtX211dGF0aW9uVGFyZ2V0RGF0YS5nZXQo
KTsKKyAgICB9CisKICAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb2N1
c2VkOyB9CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkgeyBtX2lzRm9jdXNlZCA9
IGZvY3VzZWQ7IH0KIApAQCAtMTMzLDYgKzE0Miw3IEBAIHByaXZhdGU6CiAgICAgVHJlZVNjb3Bl
KiBtX3RyZWVTY29wZTsKICAgICBPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IG1fbm9kZUxpc3Rz
OwogICAgIE93blB0cjxFdmVudFRhcmdldERhdGE+IG1fZXZlbnRUYXJnZXREYXRhOworICAgIE93
blB0cjxNdXRhdGlvblRhcmdldERhdGE+IG1fbXV0YXRpb25UYXJnZXREYXRhOwogICAgIHNob3J0
IG1fdGFiSW5kZXg7CiAgICAgYm9vbCBtX3RhYkluZGV4V2FzU2V0RXhwbGljaXRseSA6IDE7CiAg
ICAgYm9vbCBtX2lzRm9jdXNlZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SZWdpc3Rl
cmVkTXV0YXRpb25MaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMWI3MjgxY2Y2ZDMxNWI2YWNkZjQy
NzJmMjFjYTcwZmZjNzcwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmVnaXN0ZXJlZE11dGF0aW9uTGlzdGVuZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSZWdp
c3RlcmVkTXV0YXRpb25MaXN0ZW5lcl9oCisjZGVmaW5lIFJlZ2lzdGVyZWRNdXRhdGlvbkxpc3Rl
bmVyX2gKKworI2luY2x1ZGUgIk11dGF0aW9uTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNdXRhdGlv
blR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFJlZ2lzdGVyZWRNdXRhdGlv
bkxpc3RlbmVyIHsKKyAgICBSZWdpc3RlcmVkTXV0YXRpb25MaXN0ZW5lcihQYXNzUmVmUHRyPE11
dGF0aW9uTGlzdGVuZXI+IGwsIGNvbnN0IE11dGF0aW9uVHlwZXMmIHQpCisgICAgICAgIDogbGlz
dGVuZXIobCkKKyAgICAgICAgLCB0eXBlcygwKQorICAgIHsKKyAgICAgICAgbWVyZ2VUeXBlcyh0
KTsKKyAgICB9CisKKyAgICB2b2lkIG1lcmdlVHlwZXMoY29uc3QgTXV0YXRpb25UeXBlcyYgbmV3
VHlwZXMpCisgICAgeworICAgICAgICB0eXBlcyB8PSBuZXdUeXBlcy5jaGlsZGxpc3QoKSA/IE11
dGF0aW9uVHlwZXM6OkNoaWxkbGlzdCA6IDA7CisgICAgICAgIHR5cGVzIHw9IG5ld1R5cGVzLmF0
dHJpYnV0ZSgpID8gTXV0YXRpb25UeXBlczo6QXR0cmlidXRlIDogMDsKKyAgICAgICAgdHlwZXMg
fD0gbmV3VHlwZXMuY2hhcmFjdGVyZGF0YSgpID8gTXV0YXRpb25UeXBlczo6Q2hhcmFjdGVyZGF0
YSA6IDA7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRNdXRh
dGlvbkxpc3RlbmVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqbGlzdGVu
ZXIgPT0gKm90aGVyLmxpc3RlbmVyOworICAgIH0KKworICAgIFJlZlB0cjxNdXRhdGlvbkxpc3Rl
bmVyPiBsaXN0ZW5lcjsKKyAgICB1aW50OF90IHR5cGVzOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2Y2E1YjM3ZDIxYjk2MmExZGIyYjBhMDZlNjNl
OTA2YmI2N2QzZjJkLi5mYjdlYjBjZDhiMWY4NWExOTJhOTBkNzFlMTkwNmU0NmQ3MmU3ZDAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIk11dGF0aW9uVGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgpAQCAtMTg4Myw0ICsxODg0LDkgQEAgU3RvcmFnZUluZm8qIERPTVdpbmRvdzo6
d2Via2l0U3RvcmFnZUluZm8oKSBjb25zdAogfQogI2VuZGlmCiAKK3ZvaWQgRE9NV2luZG93Ojpz
cGluTXV0YXRpb25RdWV1ZSgpCit7CisgICAgOjpXZWJDb3JlOjpzcGluTXV0YXRpb25RdWV1ZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRl
eCBhMmFkODA5YTlmMDY2ZmMyOGY1YWVlYmU4NzFjZTYwZGM4YTg1YWZkLi5kYzliMDFkYzVjY2Fj
NjQ5OGZjYWRmMjNlYTI3Yjc3M2I3NDdhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAg
LTQxNCw2ICs0MTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBlcmZvcm1hbmNl
KiBwZXJmb3JtYW5jZSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgdm9pZCBzcGluTXV0YXRp
b25RdWV1ZSgpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NV2luZG93KEZyYW1lKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCA2MmYxYzMwMzY2YTFmYjdlMTQ3NTVlZTE1
NTRhOGEzYzBmZWMxMTk2Li42MjI3MTU3MDIzOTNhODk3MDQzZTFhM2MzODQyMmRmNGUyOGUzY2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC04MDMsNiArODAzLDExIEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICAvLyB3aW5kb3cudG9TdHJpbmcoKSByZXF1aXJlcyBzcGVjaWFs
IGhhbmRsaW5nIGluIFY4CiAgICAgICAgIFtWOERvTm90Q2hlY2tTaWduYXR1cmUsIERvTm90Q2hl
Y2tEb21haW5TZWN1cml0eSwgQ3VzdG9tLCBEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7
CiAjZW5kaWYgLy8gZGVmaW5lZChWOF9CSU5ESU5HKQorCisgICAgICAgIC8vIEZJWE1FKGFkYW1r
KTogRE8gTk9UIFNVQk1JVAorICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGV4cG9zZWQgdG8g
SlMgdW50aWwgZW1iZWRkZXJzIGFyZSBtb2RpZmllZCB0byBjYWxsIHNwaW5NdXRhdGlvblF1ZXVl
KCkKKyAgICAgICAgLy8gYXQgdGhlIGVuZCBvZiBlYWNoIHRhc2suCisgICAgICAgIHZvaWQgc3Bp
bk11dGF0aW9uUXVldWUoKTsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>