<?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>108488</bug_id>
          
          <creation_ts>2013-01-31 08:18:02 -0800</creation_ts>
          <short_desc>[Chromium] Move LocalizedStrings to WebCore</short_desc>
          <delta_ts>2013-01-31 13:19:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>mkwst+watchlist</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821544</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-31 08:18:02 -0800</bug_when>
    <thetext>[Chromium] Move LocalizedStrings to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821545</commentid>
    <comment_count>1</comment_count>
      <attachid>185788</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-31 08:19:09 -0800</bug_when>
    <thetext>Created attachment 185788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821672</commentid>
    <comment_count>2</comment_count>
      <attachid>185788</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-31 10:51:52 -0800</bug_when>
    <thetext>Comment on attachment 185788
Patch

This looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821816</commentid>
    <comment_count>3</comment_count>
      <attachid>185836</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-31 12:16:44 -0800</bug_when>
    <thetext>Created attachment 185836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821817</commentid>
    <comment_count>4</comment_count>
      <attachid>185836</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2013-01-31 12:17:09 -0800</bug_when>
    <thetext>Comment on attachment 185836
Patch

Moved to WebCore/platform/chromium/ at fishd&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821886</commentid>
    <comment_count>5</comment_count>
      <attachid>185836</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 13:19:49 -0800</bug_when>
    <thetext>Comment on attachment 185836
Patch

Clearing flags on attachment: 185836

Committed r141474: &lt;http://trac.webkit.org/changeset/141474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821887</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 13:19:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185788</attachid>
            <date>2013-01-31 08:19:09 -0800</date>
            <delta_ts>2013-01-31 12:16:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108488-20130131111546.patch</filename>
            <type>text/plain</type>
            <size>43747</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTQyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTMxICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
TG9jYWxpemVkU3RyaW5ncyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFjdG9yaW5nIHNlcmllczsg
c2VlIHRyYWNraW5nIGJ1ZyAxMDY4MjkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jaHJvbWl1bS9Mb2NhbGl6ZWRTdHJpbmdzQ2hyb21pdW0uY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorCiAyMDEzLTAxLTMxICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZp
eCBtaW5vciBtZW1vcnkgbGVhayBpbiBzbG90IGV4ZWN1dGlvbgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTQxNDIyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTczLDYgKzQ1NzMsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3Rl
eHQvY2YvU3RyaW5nQ0YuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L2NmL1N0cmlu
Z0ltcGxDRi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvY2hyb21pdW0vSHlwaGVu
YXRpb24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L2Nocm9taXVtL0xvY2FsaXpl
ZFN0cmluZ3NDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvY2hyb21p
dW0vVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vdGV4dC9ndGsvVGV4dEJyZWFrSXRlcmF0b3JHdGsuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS90ZXh0L2d0ay9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVR3RrLmNw
cCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2Nocm9taXVtL0xvY2FsaXpl
ZFN0cmluZ3NDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jaHJvbWl1bS9Mb2NhbGl6ZWRTdHJpbmdzQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAx
NDE0MjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwOjE0MTQyMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2hyb21pdW0vTG9j
YWxpemVkU3RyaW5nc0Nocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
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
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisKKyNp
bmNsdWRlICJEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViTG9jYWxpemVkU3RyaW5n
OwordXNpbmcgV2ViS2l0OjpXZWJTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIFN0cmluZyBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok5hbWUgbmFtZSkKK3sKKyAgICBy
ZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhu
YW1lKTsKK30KKworc3RhdGljIFN0cmluZyBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok5hbWUg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiBwYXJhbWV0ZXIpCit7CisgICAgcmV0dXJuIFdlYktpdDo6
UGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcobmFtZSwgcGFyYW1ldGVy
KTsKK30KKworc3RhdGljIFN0cmluZyBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok5hbWUgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBwYXJhbWV0ZXIxLCBjb25zdCBXZWJTdHJpbmcmIHBhcmFtZXRl
cjIpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+cXVlcnlMb2Nh
bGl6ZWRTdHJpbmcobmFtZSwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMik7Cit9CisKK1N0cmluZyBz
ZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OlNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbik7Cit9CisKK1N0cmluZyBz
dWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OlN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCk7Cit9CisKK1N0cmluZyBpbnB1dEVs
ZW1lbnRBbHRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpJ
bnB1dEVsZW1lbnRBbHRUZXh0KTsKK30KKworU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVs
KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpSZXNldEJ1dHRvbkRl
ZmF1bHRMYWJlbCk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK3sK
KyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpGaWxlQnV0dG9uQ2hvb3NlRmls
ZUxhYmVsKTsKK30KKworU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwo
KQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZpbGVCdXR0b25DaG9v
c2VNdWx0aXBsZUZpbGVzTGFiZWwpOworfQorCitTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1tYXJ5
VGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6RGV0YWlsc0xh
YmVsKTsKK30KKworU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCkKK3sKKyAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpGaWxlQnV0dG9uTm9GaWxlU2VsZWN0
ZWRMYWJlbCk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKQor
eworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZpbGVCdXR0b25Ob0ZpbGVT
ZWxlY3RlZExhYmVsKTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4
dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6U2VhcmNoTWVudU5v
UmVjZW50U2VhcmNoZXNUZXh0KTsKK30KK1N0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNU
ZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpTZWFyY2hNZW51
UmVjZW50U2VhcmNoZXNUZXh0KTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNl
YXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6U2Vh
cmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KTsKK30KKworU3RyaW5nIEFYV2ViQXJlYVRl
eHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYV2ViQXJlYVRl
eHQpOworfQorCitTdHJpbmcgQVhMaW5rVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6QVhMaW5rVGV4dCk7Cit9CisKK1N0cmluZyBBWExpc3RNYXJrZXJUZXh0
KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWExpc3RNYXJrZXJU
ZXh0KTsKK30KKworU3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpBWEltYWdlTWFwVGV4dCk7Cit9CisKK1N0cmluZyBBWEhlYWRp
bmdUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWEhlYWRp
bmdUZXh0KTsKK30KKworU3RyaW5nIEFYRGVmaW5pdGlvblRleHQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygiZGVmaW5pdGlvbiIpOworfQorCitTdHJpbmcg
QVhEZXNjcmlwdGlvbkxpc3RUZXJtVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCJ0ZXJtIik7Cit9CisKK1N0cmluZyBBWERlc2NyaXB0aW9uTGlzdERl
dGFpbFRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygi
ZGVzY3JpcHRpb24iKTsKK30KKworU3RyaW5nIEFYRm9vdGVyUm9sZURlc2NyaXB0aW9uVGV4dCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJmb290ZXIiKTsK
K30KKworU3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhCdXR0b25BY3Rpb25WZXJiKTsKK30KKworU3RyaW5nIEFYUmFk
aW9CdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYik7Cit9CisKK1N0cmluZyBBWFRleHRGaWVsZEFj
dGlvblZlcmIoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYVGV4
dEZpZWxkQWN0aW9uVmVyYik7Cit9CisKK1N0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZl
cmIoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYQ2hlY2tlZENo
ZWNrQm94QWN0aW9uVmVyYik7Cit9CisKK1N0cmluZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9u
VmVyYigpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhVbmNoZWNr
ZWRDaGVja0JveEFjdGlvblZlcmIpOworfQorCitTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigpCit7
CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhMaW5rQWN0aW9uVmVyYik7
Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpCit7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorICAgIAorI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNf
VUkpCitTdHJpbmcgQVhBTVBNRmllbGRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpBWEFNUE1GaWVsZFRleHQpOworfQorCitTdHJpbmcgQVhEYXlPZk1vbnRo
RmllbGRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWERh
eU9mTW9udGhGaWVsZFRleHQpOworfQorCitTdHJpbmcgQVhEYXRlVGltZUZpZWxkRW1wdHlWYWx1
ZVRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYRGF0ZVRp
bWVGaWVsZEVtcHR5VmFsdWVUZXh0KTsKK30KKworU3RyaW5nIEFYSG91ckZpZWxkVGV4dCgpCit7
CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhIb3VyRmllbGRUZXh0KTsK
K30KKworU3RyaW5nIEFYTWlsbGlzZWNvbmRGaWVsZFRleHQoKQoreworICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWlsbGlzZWNvbmRGaWVsZFRleHQpOworfQorCitTdHJp
bmcgQVhNaW51dGVGaWVsZFRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWludXRlRmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFYTW9udGhGaWVsZFRleHQo
KQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTW9udGhGaWVsZFRl
eHQpOworfQorCitTdHJpbmcgQVhTZWNvbmRGaWVsZFRleHQoKQoreworICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYU2Vjb25kRmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFY
V2Vla09mWWVhckZpZWxkVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0
cmluZzo6QVhXZWVrT2ZZZWFyRmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFYWWVhckZpZWxkVGV4
dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhZZWFyRmllbGRU
ZXh0KTsKK30KKworU3RyaW5nIHBsYWNlaG9sZGVyRm9yRGF5T2ZNb250aEZpZWxkKCkKK3sKKyAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpQbGFjZWhvbGRlckZvckRheU9mTW9u
dGhGaWVsZCk7Cit9CisKK1N0cmluZyBwbGFjZWhvbGRlckZvck1vbnRoRmllbGQoKQoreworICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlBsYWNlaG9sZGVyRm9yTW9udGhGaWVs
ZCk7Cit9CisKK1N0cmluZyBwbGFjZWhvbGRlckZvclllYXJGaWVsZCgpCit7CisgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6UGxhY2Vob2xkZXJGb3JZZWFyRmllbGQpOworfQor
I2VuZGlmCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQorU3RyaW5nIHdlZWtGb3JtYXRJ
bkxETUwoKQoreworICAgIFN0cmluZyB0ZW1wbCA9IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
V2Vla0Zvcm1hdFRlbXBsYXRlKTsKKyAgICAvLyBDb252ZXJ0cyBhIHN0cmluZyBsaWtlICJXZWVr
ICQyLCAkMSIgdG8gYW4gTERNTCBkYXRlIGZvcm1hdCBwYXR0ZXJuIGxpa2UKKyAgICAvLyAiJ1dl
ZWsgJ3d3JywgJ3l5eXkiLgorICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICB1bnNpZ25l
ZCBsaXRlcmFsU3RhcnQgPSAwOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRlbXBsLmxlbmd0aCgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgKyAxIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgaWYgKHRlbXBsW2ldID09ICckJyAmJiAodGVtcGxbaSArIDFdID09ICcxJyB8fCB0ZW1wbFtp
ICsgMV0gPT0gJzInKSkgeworICAgICAgICAgICAgaWYgKGxpdGVyYWxTdGFydCA8IGkpCisgICAg
ICAgICAgICAgICAgRGF0ZVRpbWVGb3JtYXQ6OnF1b3RlQW5kQXBwZW5kTGl0ZXJhbCh0ZW1wbC5z
dWJzdHJpbmcobGl0ZXJhbFN0YXJ0LCBpIC0gbGl0ZXJhbFN0YXJ0KSwgYnVpbGRlcik7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZW1wbFsrK2ldID09ICcxJyA/ICJ5eXl5IiA6ICJ3dyIp
OworICAgICAgICAgICAgbGl0ZXJhbFN0YXJ0ID0gaSArIDE7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKGxpdGVyYWxTdGFydCA8IGxlbmd0aCkKKyAgICAgICAgRGF0ZVRpbWVGb3JtYXQ6OnF1
b3RlQW5kQXBwZW5kTGl0ZXJhbCh0ZW1wbC5zdWJzdHJpbmcobGl0ZXJhbFN0YXJ0LCBsZW5ndGgg
LSBsaXRlcmFsU3RhcnQpLCBidWlsZGVyKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygp
OworfQorCisjZW5kaWYKKworU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICByZXR1
cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpNaXNzaW5nUGx1Z2luVGV4dCk7Cit9CisKK1N0
cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCJQbHVnLWluIEZhaWx1cmUiKTsKK30KKworU3RyaW5nIGJsb2NrZWRQbHVn
aW5CeUNvbnRlbnRTZWN1cml0eVBvbGljeVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgaW5zZWN1cmVQbHVnaW5WZXJzaW9u
VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBpbmFjdGl2ZVBsdWdpblRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4
dCh1bnNpZ25lZCBudW1iZXJPZkZpbGVzKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6Ok11bHRpcGxlRmlsZVVwbG9hZFRleHQsIFN0cmluZzo6bnVtYmVyKG51bWJlck9m
RmlsZXMpKTsKK30KKworLy8gVXNlZCBpbiBGVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKK1N0cmlu
ZyB1bmtub3duRmlsZVNpemVUZXh0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8v
IFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgbm90IGRlY2xhcmVkIGluIExvY2FsaXpl
ZFN0cmluZ3MuaC4KKy8vIFRoZXkgYXJlIHVzZWQgYnkgdGhlIG1lbnUgZm9yIHRoZSBIVE1MIGtl
eWdlbiB0YWcuCitTdHJpbmcga2V5Z2VuTWVudUhpZ2hHcmFkZUtleVNpemUoKQoreworICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OktleWdlbk1lbnVIaWdoR3JhZGVLZXlTaXpl
KTsKK30KKworU3RyaW5nIGtleWdlbk1lbnVNZWRpdW1HcmFkZUtleVNpemUoKQoreworICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OktleWdlbk1lbnVNZWRpdW1HcmFkZUtleVNp
emUpOworfQorCisvLyBVc2VkIGluIEltYWdlRG9jdW1lbnQuY3BwIGFzIHRoZSB0aXRsZSBmb3Ig
cGFnZXMgd2hlbiB0aGF0IHBhZ2UgaXMgYW4gaW1hZ2UuCitTdHJpbmcgaW1hZ2VUaXRsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5hbWUpOworICAgIHJlc3VsdC5h
cHBlbmQoIiAoIik7CisgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihzaXplLndpZHRo
KCkpKTsKKyAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweEQ3KSk7ICAvLyBV
KzAwRDcgKG11bHRpcGxpY2F0aW9uIHNpZ24pCisgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51
bWJlcihzaXplLmhlaWdodCgpKSk7CisgICAgcmVzdWx0LmFwcGVuZCgnKScpOworICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKK30KKworLy8gV2UgZG9uJ3QgdXNlIHRoZXNlIHN0cmluZ3Ms
IHNvIHRoZXkgcmV0dXJuIGFuIGVtcHR5IFN0cmluZy4gV2UgY2FuJ3QganVzdAorLy8gbWFrZSB0
aGVtIGFzc2VydHMgYmVjYXVzZSB3ZWJjb3JlIHN0aWxsIGNhbGxzIHRoZW0uCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpIHsgcmV0dXJuIFN0cmluZygpOyB9
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkgeyByZXR1cm4g
U3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJk
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1h
Z2VJbk5ld1dpbmRvdygpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKSB7IHJldHVybiBTdHJpbmco
KTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKSB7IHJldHVy
biBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpIHsgcmV0
dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkgeyByZXR1cm4g
U3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcoKSB7
IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxp
bmcoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJj
aFdlYigpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9v
a1VwSW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKSB7IHJldHVybiBTdHJpbmcoKTsg
fQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdD
aGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdCb2xkKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1VuZGVybGluZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKSB7IHJldHVybiBTdHJpbmcoKTsg
fQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkgeyByZXR1cm4g
U3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCkg
eyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdo
dCgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRU
b0xlZnQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lu
c3BlY3RFbGVtZW50KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNob3cpIHsgcmV0dXJuIFN0cmluZygpOyB9CitT
dHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9CitTdHJpbmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpIHsgcmV0dXJuIFN0
cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3co
KSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRp
b0luTmV3V2luZG93KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9s
cygpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
TWVkaWFMb29wKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdFbnRlclZpZGVvRnVsbHNjcmVlbigpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorU3RyaW5nIHRleHRUcmFja0Nsb3NlZENhcHRpb25zVGV4
dCgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgdGV4dFRyYWNrU3VidGl0bGVzVGV4dCgp
IHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgdGV4dFRyYWNrT2ZmVGV4dCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQorI2VuZGlmCisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3Ry
aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50
IikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUF1ZGlv
RWxlbWVudCk7CisgICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCisgICAgICAgIHJldHVy
biBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFWaWRlb0VsZW1lbnQpOworICAgIGlm
IChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhNZWRpYU11dGVCdXR0b24pOworICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0
b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhVW5N
dXRlQnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCisgICAgICAgIHJldHVy
biBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFQbGF5QnV0dG9uKTsKKyAgICBpZiAo
bmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWE1lZGlhUGF1c2VCdXR0b24pOworICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQor
ICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2xpZGVyKTsK
KyAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQorICAgICAgICByZXR1cm4gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2xpZGVyVGh1bWIpOworICAgIGlmIChuYW1lID09ICJS
ZXdpbmRCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WE1lZGlhUmV3aW5kQnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9SZWFsdGltZUJ1
dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFS
ZXR1cm5Ub1JlYWxUaW1lKTsKKyAgICBpZiAobmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikK
KyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUN1cnJlbnRU
aW1lRGlzcGxheSk7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKKyAg
ICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVRpbWVSZW1haW5p
bmdEaXNwbGF5KTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlzcGxheSIpCisgICAgICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTdGF0dXNEaXNwbGF5KTsKKyAg
ICBpZiAobmFtZSA9PSAiRW50ZXJGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvbik7Cisg
ICAgaWYgKG5hbWUgPT0gIkV4aXRGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uKTsKKyAg
ICBpZiAobmFtZSA9PSAiU2Vla0ZvcndhcmRCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pOworICAgIGlmIChu
YW1lID09ICJTZWVrQmFja0J1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OkFYTWVkaWFTZWVrQmFja0J1dHRvbik7CisgICAgaWYgKG5hbWUgPT0gIlNob3dD
bG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOworICAgIGlmIChuYW1lID09
ICJIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpBWE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uKTsKKworICAgIC8v
IEZJWE1FOiB0aGUgQ29udHJvbHNQYW5lbCBjb250YWluZXIgc2hvdWxkIG5ldmVyIGJlIHZpc2li
bGUgaW4gdGhlIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5LgorICAgIGlmIChuYW1lID09ICJDb250
cm9sc1BhbmVsIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhN
ZWRpYURlZmF1bHQpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYURlZmF1bHQpOworfQorCitTdHJpbmcgbG9j
YWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sK
KyAgICBpZiAobmFtZSA9PSAiQXVkaW9FbGVtZW50IikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUF1ZGlvRWxlbWVudEhlbHApOworICAgIGlmIChuYW1l
ID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpBWE1lZGlhVmlkZW9FbGVtZW50SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0
b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhTXV0
ZUJ1dHRvbkhlbHApOworICAgIGlmIChuYW1lID09ICJVbk11dGVCdXR0b24iKQorICAgICAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhVW5NdXRlQnV0dG9uSGVscCk7
CisgICAgaWYgKG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhUGxheUJ1dHRvbkhlbHApOworICAgIGlmIChuYW1lID09
ICJQYXVzZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OkFYTWVkaWFQYXVzZUJ1dHRvbkhlbHApOworICAgIGlmIChuYW1lID09ICJTbGlkZXIiKQorICAg
ICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2xpZGVySGVscCk7
CisgICAgaWYgKG5hbWUgPT0gIlNsaWRlclRodW1iIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNsaWRlclRodW1iSGVscCk7CisgICAgaWYgKG5hbWUg
PT0gIlJld2luZEJ1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTWVkaWFSZXdpbmRCdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiUmV0dXJuVG9S
ZWFsdGltZUJ1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OkFYTWVkaWFSZXR1cm5Ub1JlYWxUaW1lSGVscCk7CisgICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRU
aW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFDdXJyZW50VGltZURpc3BsYXlIZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFp
bmluZ0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXlIZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiU3RhdHVz
RGlzcGxheSIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVk
aWFTdGF0dXNEaXNwbGF5SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIkVudGVyRnVsbHNjcmVlbkJ1
dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiRXhpdEZ1bGxzY3Jl
ZW5CdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1l
ZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0Zvcndh
cmRCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1l
ZGlhU2Vla0ZvcndhcmRCdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0
b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2Vl
a0JhY2tCdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiU2hvd0Nsb3NlZENhcHRpb25zQnV0
dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNo
b3dDbG9zZWRDYXB0aW9uc0J1dHRvbkhlbHApOworICAgIGlmIChuYW1lID09ICJIaWRlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpBWE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uSGVscCk7CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlh
RGVmYXVsdCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9h
dCAvKnRpbWUqLykKK3sKKyAgICAvLyBGSVhNRTogdG8gYmUgZml4ZWQuCisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkK
K3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVmFsdWVN
aXNzaW5nKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yQ2hl
Y2tib3hUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxp
ZGF0aW9uVmFsdWVNaXNzaW5nRm9yQ2hlY2tib3gpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdGb3JGaWxlVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblZhbHVlTWlzc2luZ0ZvckZpbGUpOworfQorCitTdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JNdWx0aXBsZUZpbGVUZXh0KCkKK3sK
KyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVmFsdWVNaXNz
aW5nRm9yTXVsdGlwbGVGaWxlKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVN
aXNzaW5nRm9yUmFkaW9UZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpWYWxpZGF0aW9uVmFsdWVNaXNzaW5nRm9yUmFkaW8pOworfQorCitTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVl
cnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVmFsdWVNaXNzaW5nRm9yU2VsZWN0KTsK
K30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpCit7CisgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblR5cGVNaXNtYXRjaCk7
Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvckVtYWlsVGV4dCgp
Cit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblR5cGVN
aXNtYXRjaEZvckVtYWlsKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21h
dGNoRm9yTXVsdGlwbGVFbWFpbFRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OlZhbGlkYXRpb25UeXBlTWlzbWF0Y2hGb3JNdWx0aXBsZUVtYWlsKTsKK30KKwor
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4dCgpCit7CisgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblR5cGVNaXNtYXRjaEZv
clVSTCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQo
KQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25QYXR0
ZXJuTWlzbWF0Y2gpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChp
bnQgdmFsdWVMZW5ndGgsIGludCBtYXhMZW5ndGgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblRvb0xvbmcsIFN0cmluZzo6bnVtYmVyKHZhbHVlTGVu
Z3RoKSwgU3RyaW5nOjpudW1iZXIobWF4TGVuZ3RoKSk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1pbmltdW0pCit7CisgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblJhbmdlVW5kZXJmbG93
LCBtaW5pbXVtKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1Rl
eHQoY29uc3QgU3RyaW5nJiBtYXhpbXVtKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OlZhbGlkYXRpb25SYW5nZU92ZXJmbG93LCBtYXhpbXVtKTsKK30KKworU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBTdHJpbmcmIGJhc2UsIGNv
bnN0IFN0cmluZyYgc3RlcCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpWYWxpZGF0aW9uU3RlcE1pc21hdGNoLCBiYXNlLCBzdGVwKTsKK30KKworU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlQmFkSW5wdXRGb3JOdW1iZXJUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uQmFkSW5wdXRGb3JOdW1iZXIpOworfQorCisj
aWYgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKK1N0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZUJhZElucHV0Rm9yRGF0ZVRpbWVUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uQmFkSW5wdXRGb3JEYXRlVGltZSk7Cit9CisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jaHJvbWl1bS9Mb2NhbGl6ZWRTdHJpbmdzQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2hyb21pdW0vTG9jYWxpemVkU3RyaW5nc0No
cm9taXVtLmNwcAkocmV2aXNpb24gMTQxNDIyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9jaHJvbWl1bS9Mb2NhbGl6ZWRTdHJpbmdzQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTksNyArMzU5LDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZQogICAgIHJlc3VsdC5hcHBlbmQoZmlsZW5hbWUpOwogICAgIHJlc3VsdC5hcHBlbmQoIiAo
Iik7CiAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkpKTsKLSAg
ICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweEQ3KSk7ICAvLyBVKzAwRDcgKG11
bHRpcGxpY2F0aW9uIHNpZ24pCisgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4o
MHhENykpOyAvLyBVKzAwRDcgKG11bHRpcGxpY2F0aW9uIHNpZ24pCiAgICAgcmVzdWx0LmFwcGVu
ZChTdHJpbmc6Om51bWJlcihzaXplLmhlaWdodCgpKSk7CiAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNDE0MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAxLTMxICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
TG9jYWxpemVkU3RyaW5ncyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFjdG9yaW5nIHNlcmllczsg
c2VlIHRyYWNraW5nIGJ1ZyAxMDY4MjkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHNyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcDogUmVtb3ZlZC4KKwogMjAxMy0wMS0zMSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIFdoZWVs
RXZlbnQ6OkdyYW51bGFyaXR5IHRvIFdoZWVsRXZlbnQ6OkRlbHRhTW9kZQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTQxNDIyKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTksNyArMzk5LDYgQEAKICAg
ICAgICAgICAgICAgICAnc3JjL21hYy9XZWJTY3JlZW5JbmZvRmFjdG9yeS5tbScsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbScsCiAgICAgICAgICAgICAgICAg
J3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMv
TG9jYWxpemVkU3RyaW5ncy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvTm90aWZpY2F0aW9u
UHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL05vdGlmaWNhdGlvblByZXNl
bnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL3BhaW50aW5nL0NvbnRpbnVvdXNQ
YWludGVyLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3Ry
aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxp
emVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDE0MTQyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLQot
I2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KLSNp
bmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dl
YlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgV2ViS2l0OjpXZWJMb2NhbGl6ZWRTdHJp
bmc7Ci11c2luZyBXZWJLaXQ6OldlYlN0cmluZzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSBuYW1lKQotewotICAg
IHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3RyaW5n
KG5hbWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6TmFt
ZSBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhcmFtZXRlcikKLXsKLSAgICByZXR1cm4gV2ViS2l0
OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhuYW1lLCBwYXJhbWV0
ZXIpOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhcmFtZXRlcjEsIGNvbnN0IFdlYlN0cmluZyYgcGFyYW1l
dGVyMikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxv
Y2FsaXplZFN0cmluZyhuYW1lLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyKTsKLX0KLQotU3RyaW5n
IHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6U2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKTsKLX0KLQotU3RyaW5n
IHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6U3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKTsKLX0KLQotU3RyaW5nIGlucHV0
RWxlbWVudEFsdFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OklucHV0RWxlbWVudEFsdFRleHQpOwotfQotCi1TdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFi
ZWwoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlJlc2V0QnV0dG9u
RGVmYXVsdExhYmVsKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKQot
ewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZpbGVCdXR0b25DaG9vc2VG
aWxlTGFiZWwpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJl
bCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6RmlsZUJ1dHRvbkNo
b29zZU11bHRpcGxlRmlsZXNMYWJlbCk7Ci19Ci0KLVN0cmluZyBkZWZhdWx0RGV0YWlsc1N1bW1h
cnlUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpEZXRhaWxz
TGFiZWwpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKQotewot
ICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZpbGVCdXR0b25Ob0ZpbGVTZWxl
Y3RlZExhYmVsKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVzU2VsZWN0ZWRMYWJlbCgp
Ci17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6RmlsZUJ1dHRvbk5vRmls
ZVNlbGVjdGVkTGFiZWwpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50U2VhcmNoZXNU
ZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpTZWFyY2hNZW51
Tm9SZWNlbnRTZWFyY2hlc1RleHQpOwotfQotU3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hl
c1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlNlYXJjaE1l
bnVSZWNlbnRTZWFyY2hlc1RleHQpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVjZW50
U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpT
ZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQpOwotfQotCi1TdHJpbmcgQVhXZWJBcmVh
VGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhXZWJBcmVh
VGV4dCk7Ci19Ci0KLVN0cmluZyBBWExpbmtUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpBWExpbmtUZXh0KTsKLX0KLQotU3RyaW5nIEFYTGlzdE1hcmtlclRl
eHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTGlzdE1hcmtl
clRleHQpOwotfQotCi1TdHJpbmcgQVhJbWFnZU1hcFRleHQoKQotewotICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYSW1hZ2VNYXBUZXh0KTsKLX0KLQotU3RyaW5nIEFYSGVh
ZGluZ1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYSGVh
ZGluZ1RleHQpOwotfQotCi1TdHJpbmcgQVhEZWZpbml0aW9uVGV4dCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCJkZWZpbml0aW9uIik7Ci19Ci0KLVN0cmlu
ZyBBWERlc2NyaXB0aW9uTGlzdFRlcm1UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBTdHJpbmcoInRlcm0iKTsKLX0KLQotU3RyaW5nIEFYRGVzY3JpcHRpb25MaXN0
RGV0YWlsVGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5n
KCJkZXNjcmlwdGlvbiIpOwotfQotCi1TdHJpbmcgQVhGb290ZXJSb2xlRGVzY3JpcHRpb25UZXh0
KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoImZvb3RlciIp
OwotfQotCi1TdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpBWEJ1dHRvbkFjdGlvblZlcmIpOwotfQotCi1TdHJpbmcgQVhS
YWRpb0J1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYVGV4dEZpZWxk
QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhU
ZXh0RmllbGRBY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYQ2hlY2tlZENoZWNrQm94QWN0aW9u
VmVyYigpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhDaGVja2Vk
Q2hlY2tCb3hBY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rp
b25WZXJiKCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWFVuY2hl
Y2tlZENoZWNrQm94QWN0aW9uVmVyYik7Ci19Ci0KLVN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkK
LXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWExpbmtBY3Rpb25WZXJi
KTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIoKQotewotICAgIHJldHVy
biBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkKLXsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci19Ci0gICAgCi0jaWYgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxE
U19VSSkKLVN0cmluZyBBWEFNUE1GaWVsZFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OkFYQU1QTUZpZWxkVGV4dCk7Ci19Ci0KLVN0cmluZyBBWERheU9mTW9u
dGhGaWVsZFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
RGF5T2ZNb250aEZpZWxkVGV4dCk7Ci19Ci0KLVN0cmluZyBBWERhdGVUaW1lRmllbGRFbXB0eVZh
bHVlVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhEYXRl
VGltZUZpZWxkRW1wdHlWYWx1ZVRleHQpOwotfQotCi1TdHJpbmcgQVhIb3VyRmllbGRUZXh0KCkK
LXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWEhvdXJGaWVsZFRleHQp
OwotfQotCi1TdHJpbmcgQVhNaWxsaXNlY29uZEZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNaWxsaXNlY29uZEZpZWxkVGV4dCk7Ci19Ci0KLVN0
cmluZyBBWE1pbnV0ZUZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhNaW51dGVGaWVsZFRleHQpOwotfQotCi1TdHJpbmcgQVhNb250aEZpZWxkVGV4
dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNb250aEZpZWxk
VGV4dCk7Ci19Ci0KLVN0cmluZyBBWFNlY29uZEZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhTZWNvbmRGaWVsZFRleHQpOwotfQotCi1TdHJpbmcg
QVhXZWVrT2ZZZWFyRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWFdlZWtPZlllYXJGaWVsZFRleHQpOwotfQotCi1TdHJpbmcgQVhZZWFyRmllbGRU
ZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWFllYXJGaWVs
ZFRleHQpOwotfQotCi1TdHJpbmcgcGxhY2Vob2xkZXJGb3JEYXlPZk1vbnRoRmllbGQoKQotewot
ICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlBsYWNlaG9sZGVyRm9yRGF5T2ZN
b250aEZpZWxkKTsKLX0KLQotU3RyaW5nIHBsYWNlaG9sZGVyRm9yTW9udGhGaWVsZCgpCi17Ci0g
ICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6UGxhY2Vob2xkZXJGb3JNb250aEZp
ZWxkKTsKLX0KLQotU3RyaW5nIHBsYWNlaG9sZGVyRm9yWWVhckZpZWxkKCkKLXsKLSAgICByZXR1
cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpQbGFjZWhvbGRlckZvclllYXJGaWVsZCk7Ci19
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi1TdHJpbmcgd2Vla0Zvcm1h
dEluTERNTCgpCi17Ci0gICAgU3RyaW5nIHRlbXBsID0gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpXZWVrRm9ybWF0VGVtcGxhdGUpOwotICAgIC8vIENvbnZlcnRzIGEgc3RyaW5nIGxpa2UgIldl
ZWsgJDIsICQxIiB0byBhbiBMRE1MIGRhdGUgZm9ybWF0IHBhdHRlcm4gbGlrZQotICAgIC8vICIn
V2VlayAnd3cnLCAneXl5eSIuCi0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIHVuc2ln
bmVkIGxpdGVyYWxTdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGVtcGwubGVuZ3Ro
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSArIDEgPCBsZW5ndGg7ICsraSkgewotICAg
ICAgICBpZiAodGVtcGxbaV0gPT0gJyQnICYmICh0ZW1wbFtpICsgMV0gPT0gJzEnIHx8IHRlbXBs
W2kgKyAxXSA9PSAnMicpKSB7Ci0gICAgICAgICAgICBpZiAobGl0ZXJhbFN0YXJ0IDwgaSkKLSAg
ICAgICAgICAgICAgICBEYXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFsKHRlbXBs
LnN1YnN0cmluZyhsaXRlcmFsU3RhcnQsIGkgLSBsaXRlcmFsU3RhcnQpLCBidWlsZGVyKTsKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlbXBsWysraV0gPT0gJzEnID8gInl5eXkiIDogInd3
Iik7Ci0gICAgICAgICAgICBsaXRlcmFsU3RhcnQgPSBpICsgMTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBpZiAobGl0ZXJhbFN0YXJ0IDwgbGVuZ3RoKQotICAgICAgICBEYXRlVGltZUZvcm1hdDo6
cXVvdGVBbmRBcHBlbmRMaXRlcmFsKHRlbXBsLnN1YnN0cmluZyhsaXRlcmFsU3RhcnQsIGxlbmd0
aCAtIGxpdGVyYWxTdGFydCksIGJ1aWxkZXIpOwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQotewotICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok1pc3NpbmdQbHVnaW5UZXh0KTsKLX0KLQot
U3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBTdHJpbmcoIlBsdWctaW4gRmFpbHVyZSIpOwotfQotCi1TdHJpbmcgYmxvY2tlZFBs
dWdpbkJ5Q29udGVudFNlY3VyaXR5UG9saWN5VGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBpbnNlY3VyZVBsdWdpblZlcnNp
b25UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsK
LX0KLQotU3RyaW5nIGluYWN0aXZlUGx1Z2luVGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRU
ZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6TXVsdGlwbGVGaWxlVXBsb2FkVGV4dCwgU3RyaW5nOjpudW1iZXIobnVtYmVy
T2ZGaWxlcykpOwotfQotCi0vLyBVc2VkIGluIEZUUERpcmVjdG9yeURvY3VtZW50LmNwcAotU3Ry
aW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQot
Ly8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBub3QgZGVjbGFyZWQgaW4gTG9jYWxp
emVkU3RyaW5ncy5oLgotLy8gVGhleSBhcmUgdXNlZCBieSB0aGUgbWVudSBmb3IgdGhlIEhUTUwg
a2V5Z2VuIHRhZy4KLVN0cmluZyBrZXlnZW5NZW51SGlnaEdyYWRlS2V5U2l6ZSgpCi17Ci0gICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6S2V5Z2VuTWVudUhpZ2hHcmFkZUtleVNp
emUpOwotfQotCi1TdHJpbmcga2V5Z2VuTWVudU1lZGl1bUdyYWRlS2V5U2l6ZSgpCi17Ci0gICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6S2V5Z2VuTWVudU1lZGl1bUdyYWRlS2V5
U2l6ZSk7Ci19Ci0KLS8vIFVzZWQgaW4gSW1hZ2VEb2N1bWVudC5jcHAgYXMgdGhlIHRpdGxlIGZv
ciBwYWdlcyB3aGVuIHRoYXQgcGFnZSBpcyBhbiBpbWFnZS4KLVN0cmluZyBpbWFnZVRpdGxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCi17Ci0gICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChmaWxlbmFtZSk7Ci0gICAgcmVzdWx0
LmFwcGVuZCgiICgiKTsKLSAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHNpemUud2lk
dGgoKSkpOwotICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KDB4RDcpKTsgIC8v
IFUrMDBENyAobXVsdGlwbGljYXRpb24gc2lnbikKLSAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKHNpemUuaGVpZ2h0KCkpKTsKLSAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOwotfQotCi0vLyBXZSBkb24ndCB1c2UgdGhlc2Ugc3RyaW5n
cywgc28gdGhleSByZXR1cm4gYW4gZW1wdHkgU3RyaW5nLiBXZSBjYW4ndCBqdXN0Ci0vLyBtYWtl
IHRoZW0gYXNzZXJ0cyBiZWNhdXNlIHdlYmNvcmUgc3RpbGwgY2FsbHMgdGhlbS4KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKSB7IHJldHVy
biBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9h
cmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5J
bWFnZUluTmV3V2luZG93KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKSB7
IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKSB7IHJl
dHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpIHsgcmV0
dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKSB7IHJldHVy
biBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgpIHsgcmV0dXJuIFN0
cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygp
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVs
bGluZygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdM
b29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1T
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0l0YWxpYygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKSB7IHJldHVy
biBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24o
KSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1Jp
Z2h0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdo
dFRvTGVmdCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
SW5zcGVjdEVsZW1lbnQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykgeyByZXR1cm4gU3RyaW5nKCk7IH0K
LVN0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0KCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KLVN0cmluZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRv
dygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkF1
ZGlvSW5OZXdXaW5kb3coKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1T
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRy
b2xzKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dn
bGVNZWRpYUxvb3AoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0K
LSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1TdHJpbmcgdGV4dFRyYWNrQ2xvc2VkQ2FwdGlvbnNU
ZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJhY2tTdWJ0aXRsZXNUZXh0
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJhY2tPZmZUZXh0KCkgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJhY2tOb0xhYmVsVGV4dCgpIHsgcmV0dXJuIFN0
cmluZygpOyB9Ci0jZW5kaWYKLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRT
dHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1l
bnQiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhQXVk
aW9FbGVtZW50KTsKLSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0
dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVZpZGVvRWxlbWVudCk7Ci0gICAg
aWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxp
emVkU3RyaW5nOjpBWE1lZGlhTXV0ZUJ1dHRvbik7Ci0gICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1
dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFV
bk11dGVCdXR0b24pOwotICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9uIikKLSAgICAgICAgcmV0
dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVBsYXlCdXR0b24pOwotICAgIGlm
IChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OkFYTWVkaWFQYXVzZUJ1dHRvbik7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRlciIp
Ci0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTbGlkZXIp
OwotICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTbGlkZXJUaHVtYik7Ci0gICAgaWYgKG5hbWUgPT0g
IlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OkFYTWVkaWFSZXdpbmRCdXR0b24pOwotICAgIGlmIChuYW1lID09ICJSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRp
YVJldHVyblRvUmVhbFRpbWUpOwotICAgIGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3BsYXki
KQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhQ3VycmVu
dFRpbWVEaXNwbGF5KTsKLSAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiKQot
ICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhVGltZVJlbWFp
bmluZ0Rpc3BsYXkpOwotICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAgICAgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVN0YXR1c0Rpc3BsYXkpOwot
ICAgIGlmIChuYW1lID09ICJFbnRlckZ1bGxzY3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uKTsK
LSAgICBpZiAobmFtZSA9PSAiRXhpdEZ1bGxzY3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b24pOwot
ICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTZWVrRm9yd2FyZEJ1dHRvbik7Ci0gICAgaWYg
KG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6QVhNZWRpYVNlZWtCYWNrQnV0dG9uKTsKLSAgICBpZiAobmFtZSA9PSAiU2hv
d0Nsb3NlZENhcHRpb25zQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbik7Ci0gICAgaWYgKG5hbWUg
PT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24pOwotCi0gICAg
Ly8gRklYTUU6IHRoZSBDb250cm9sc1BhbmVsIGNvbnRhaW5lciBzaG91bGQgbmV2ZXIgYmUgdmlz
aWJsZSBpbiB0aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkuCi0gICAgaWYgKG5hbWUgPT0gIkNv
bnRyb2xzUGFuZWwiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WE1lZGlhRGVmYXVsdCk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRGVmYXVsdCk7Ci19Ci0KLVN0cmluZyBs
b2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQot
ewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhQXVkaW9FbGVtZW50SGVscCk7Ci0gICAgaWYgKG5h
bWUgPT0gIlZpZGVvRWxlbWVudCIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWVkaWFWaWRlb0VsZW1lbnRIZWxwKTsKLSAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1
dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFN
dXRlQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFVbk11dGVCdXR0b25IZWxw
KTsKLSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFQbGF5QnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUg
PT0gIlBhdXNlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6QVhNZWRpYVBhdXNlQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRlciIpCi0g
ICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTbGlkZXJIZWxw
KTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAgICAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2xpZGVyVGh1bWJIZWxwKTsKLSAgICBpZiAobmFt
ZSA9PSAiUmV3aW5kQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0
cmluZzo6QVhNZWRpYVJld2luZEJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6QVhNZWRpYVJldHVyblRvUmVhbFRpbWVIZWxwKTsKLSAgICBpZiAobmFtZSA9PSAiQ3VycmVu
dFRpbWVEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
QVhNZWRpYUN1cnJlbnRUaW1lRGlzcGxheUhlbHApOwotICAgIGlmIChuYW1lID09ICJUaW1lUmVt
YWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OkFYTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheUhlbHApOwotICAgIGlmIChuYW1lID09ICJTdGF0
dXNEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhN
ZWRpYVN0YXR1c0Rpc3BsYXlIZWxwKTsKLSAgICBpZiAobmFtZSA9PSAiRW50ZXJGdWxsc2NyZWVu
QnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRp
YUVudGVyRnVsbHNjcmVlbkJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJFeGl0RnVsbHNj
cmVlbkJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJTZWVrRm9y
d2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1
dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFT
ZWVrQmFja0J1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJTaG93Q2xvc2VkQ2FwdGlvbnNC
dXR0b24iKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlh
U2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b25IZWxwKTsKLQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVk
aWFEZWZhdWx0KTsKLX0KLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZs
b2F0IC8qdGltZSovKQotewotICAgIC8vIEZJWE1FOiB0byBiZSBmaXhlZC4KLSAgICByZXR1cm4g
U3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQo
KQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1
ZU1pc3NpbmcpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JD
aGVja2JveFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZh
bGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JDaGVja2JveCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVmFsdWVNaXNzaW5nRm9yRmlsZSk7Ci19Ci0KLVN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zvck11bHRpcGxlRmlsZVRleHQoKQot
ewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1p
c3NpbmdGb3JNdWx0aXBsZUZpbGUpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1
ZU1pc3NpbmdGb3JSYWRpb1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JSYWRpbyk7Ci19Ci0KLVN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKQotewotICAgIHJldHVybiBx
dWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JTZWxlY3Qp
OwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKLXsKLSAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVHlwZU1pc21hdGNo
KTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxUZXh0
KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVHlw
ZU1pc21hdGNoRm9yRW1haWwpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlz
bWF0Y2hGb3JNdWx0aXBsZUVtYWlsVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6VmFsaWRhdGlvblR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWwpOwotfQot
Ci1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JVUkxUZXh0KCkKLXsKLSAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVHlwZU1pc21hdGNo
Rm9yVVJMKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4
dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblBh
dHRlcm5NaXNtYXRjaCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0
KGludCB2YWx1ZUxlbmd0aCwgaW50IG1heExlbmd0aCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVG9vTG9uZywgU3RyaW5nOjpudW1iZXIodmFsdWVM
ZW5ndGgpLCBTdHJpbmc6Om51bWJlcihtYXhMZW5ndGgpKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWluaW11bSkKLXsKLSAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uUmFuZ2VVbmRlcmZs
b3csIG1pbmltdW0pOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93
VGV4dChjb25zdCBTdHJpbmcmIG1heGltdW0pCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6VmFsaWRhdGlvblJhbmdlT3ZlcmZsb3csIG1heGltdW0pOwotfQotCi1TdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYgYmFzZSwg
Y29uc3QgU3RyaW5nJiBzdGVwKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OlZhbGlkYXRpb25TdGVwTWlzbWF0Y2gsIGJhc2UsIHN0ZXApOwotfQotCi1TdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VCYWRJbnB1dEZvck51bWJlclRleHQoKQotewotICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25CYWRJbnB1dEZvck51bWJlcik7Ci19Ci0K
LSNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQotU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlQmFkSW5wdXRGb3JEYXRlVGltZVRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25CYWRJbnB1dEZvckRhdGVUaW1lKTsKLX0KLSNlbmRp
ZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185836</attachid>
            <date>2013-01-31 12:16:44 -0800</date>
            <delta_ts>2013-01-31 13:19:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108488-20130131151321.patch</filename>
            <type>text/plain</type>
            <size>43705</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MTQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAxLTMxICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
TG9jYWxpemVkU3RyaW5ncyB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgbGFyZ2VyIHJlZmFjdG9yaW5nIHNlcmllczsg
c2VlIHRyYWNraW5nIGJ1ZyAxMDY4MjkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vTG9jYWxpemVkU3RyaW5nc0Nocm9taXVtLmNwcDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAu
CisgICAgICAgIChXZWJDb3JlOjppbWFnZVRpdGxlKToKKwogMjAxMy0wMS0zMSAgT2phbiBWYWZh
aSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEyODUxNyk6IFBl
cmNlbnRhZ2UgaGVpZ2h0cyBpbiBxdWlya3MgbW9kZSBjb2xsYXBzZSB3aGVuIHByaW50aW5nCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxNDE0NjApCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2OTIsNiArMzY5Miw3IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vS2V5Ym9hcmRDb2Rlcy5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vTGlua0hhc2hDaHJvbWl1bS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL0xvY2FsaXplZFN0cmluZ3NDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL01lbW9yeVVzYWdlU3VwcG9ydENocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vTUlNRVR5cGVSZWdpc3RyeUNocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGFnZUNsaWVudENocm9taXVtLmgnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTG9jYWxpemVkU3RyaW5nc0No
cm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Mb2NhbGl6ZWRTdHJpbmdzQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxNDE0MjIpCShmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOjE0MTQyMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xvY2FsaXplZFN0cmluZ3NDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
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
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorCisjaW5jbHVkZSAiRGF0ZVRpbWVGb3Jt
YXQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KworI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMb2Nh
bGl6ZWRTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCit1c2luZyBXZWJLaXQ6OldlYkxvY2FsaXplZFN0cmluZzsKK3VzaW5nIFdlYktpdDo6V2Vi
U3RyaW5nOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcgcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpOYW1lIG5hbWUpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZv
cm06OmN1cnJlbnQoKS0+cXVlcnlMb2NhbGl6ZWRTdHJpbmcobmFtZSk7Cit9CisKK3N0YXRpYyBT
dHJpbmcgcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpOYW1lIG5hbWUsIGNvbnN0IFdlYlN0cmlu
ZyYgcGFyYW1ldGVyKQoreworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PnF1ZXJ5TG9jYWxpemVkU3RyaW5nKG5hbWUsIHBhcmFtZXRlcik7Cit9CisKK3N0YXRpYyBTdHJp
bmcgcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpOYW1lIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
cGFyYW1ldGVyMSwgY29uc3QgV2ViU3RyaW5nJiBwYXJhbWV0ZXIyKQoreworICAgIHJldHVybiBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5TG9jYWxpemVkU3RyaW5nKG5hbWUsIHBh
cmFtZXRlcjEsIHBhcmFtZXRlcjIpOworfQorCitTdHJpbmcgc2VhcmNoYWJsZUluZGV4SW50cm9k
dWN0aW9uKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpTZWFyY2hh
YmxlSW5kZXhJbnRyb2R1Y3Rpb24pOworfQorCitTdHJpbmcgc3VibWl0QnV0dG9uRGVmYXVsdExh
YmVsKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpTdWJtaXRCdXR0
b25EZWZhdWx0TGFiZWwpOworfQorCitTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCit7Cisg
ICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6SW5wdXRFbGVtZW50QWx0VGV4dCk7
Cit9CisKK1N0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7CisgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6UmVzZXRCdXR0b25EZWZhdWx0TGFiZWwpOworfQorCitT
dHJpbmcgZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6RmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCk7Cit9CisKK1N0cmlu
ZyBmaWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkKK3sKKyAgICByZXR1cm4gcXVl
cnkoV2ViTG9jYWxpemVkU3RyaW5nOjpGaWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVGaWxlc0xhYmVs
KTsKK30KKworU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQoreworICAgIHJldHVy
biBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkRldGFpbHNMYWJlbCk7Cit9CisKK1N0cmluZyBm
aWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6RmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwpOworfQorCitTdHJp
bmcgZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCkKK3sKKyAgICByZXR1cm4gcXVlcnko
V2ViTG9jYWxpemVkU3RyaW5nOjpGaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCk7Cit9CisK
K1N0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIHJldHVybiBx
dWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCk7
Cit9CitTdHJpbmcgc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6U2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCk7
Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlNlYXJjaE1lbnVDbGVhclJlY2VudFNl
YXJjaGVzVGV4dCk7Cit9CisKK1N0cmluZyBBWFdlYkFyZWFUZXh0KCkKK3sKKyAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWFdlYkFyZWFUZXh0KTsKK30KKworU3RyaW5nIEFY
TGlua1RleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTGlu
a1RleHQpOworfQorCitTdHJpbmcgQVhMaXN0TWFya2VyVGV4dCgpCit7CisgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhMaXN0TWFya2VyVGV4dCk7Cit9CisKK1N0cmluZyBB
WEltYWdlTWFwVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
QVhJbWFnZU1hcFRleHQpOworfQorCitTdHJpbmcgQVhIZWFkaW5nVGV4dCgpCit7CisgICAgcmV0
dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhIZWFkaW5nVGV4dCk7Cit9CisKK1N0cmlu
ZyBBWERlZmluaXRpb25UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoImRlZmluaXRpb24iKTsKK30KKworU3RyaW5nIEFYRGVzY3JpcHRpb25MaXN0VGVy
bVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygidGVy
bSIpOworfQorCitTdHJpbmcgQVhEZXNjcmlwdGlvbkxpc3REZXRhaWxUZXh0KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoImRlc2NyaXB0aW9uIik7Cit9CisK
K1N0cmluZyBBWEZvb3RlclJvbGVEZXNjcmlwdGlvblRleHQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygiZm9vdGVyIik7Cit9CisKK1N0cmluZyBBWEJ1dHRv
bkFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
QnV0dG9uQWN0aW9uVmVyYik7Cit9CisKK1N0cmluZyBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigp
Cit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhSYWRpb0J1dHRvbkFj
dGlvblZlcmIpOworfQorCitTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKK3sKKyAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWFRleHRGaWVsZEFjdGlvblZlcmIpOwor
fQorCitTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOwor
fQorCitTdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQoreworICAgIHJldHVy
biBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
KTsKK30KKworU3RyaW5nIEFYTGlua0FjdGlvblZlcmIoKQoreworICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTGlua0FjdGlvblZlcmIpOworfQorCitTdHJpbmcgQVhNZW51
TGlzdFBvcHVwQWN0aW9uVmVyYigpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgQVhNZW51TGlzdEFjdGlvblZlcmIoKQoreworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKyAg
ICAKKyNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQorU3RyaW5nIEFYQU1QTUZp
ZWxkVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhBTVBN
RmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFYRGF5T2ZNb250aEZpZWxkVGV4dCgpCit7CisgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhEYXlPZk1vbnRoRmllbGRUZXh0KTsK
K30KKworU3RyaW5nIEFYRGF0ZVRpbWVGaWVsZEVtcHR5VmFsdWVUZXh0KCkKK3sKKyAgICByZXR1
cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWERhdGVUaW1lRmllbGRFbXB0eVZhbHVlVGV4
dCk7Cit9CisKK1N0cmluZyBBWEhvdXJGaWVsZFRleHQoKQoreworICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYSG91ckZpZWxkVGV4dCk7Cit9CisKK1N0cmluZyBBWE1pbGxp
c2Vjb25kRmllbGRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpBWE1pbGxpc2Vjb25kRmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFYTWludXRlRmllbGRUZXh0
KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1pbnV0ZUZpZWxk
VGV4dCk7Cit9CisKK1N0cmluZyBBWE1vbnRoRmllbGRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVl
cnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1vbnRoRmllbGRUZXh0KTsKK30KKworU3RyaW5nIEFY
U2Vjb25kRmllbGRUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpBWFNlY29uZEZpZWxkVGV4dCk7Cit9CisKK1N0cmluZyBBWFdlZWtPZlllYXJGaWVsZFRleHQo
KQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYV2Vla09mWWVhckZp
ZWxkVGV4dCk7Cit9CisKK1N0cmluZyBBWFllYXJGaWVsZFRleHQoKQoreworICAgIHJldHVybiBx
dWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYWWVhckZpZWxkVGV4dCk7Cit9CisKK1N0cmluZyBw
bGFjZWhvbGRlckZvckRheU9mTW9udGhGaWVsZCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6UGxhY2Vob2xkZXJGb3JEYXlPZk1vbnRoRmllbGQpOworfQorCitTdHJp
bmcgcGxhY2Vob2xkZXJGb3JNb250aEZpZWxkKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpQbGFjZWhvbGRlckZvck1vbnRoRmllbGQpOworfQorCitTdHJpbmcgcGxh
Y2Vob2xkZXJGb3JZZWFyRmllbGQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OlBsYWNlaG9sZGVyRm9yWWVhckZpZWxkKTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfV0VFSykKK1N0cmluZyB3ZWVrRm9ybWF0SW5MRE1MKCkKK3sKKyAgICBTdHJp
bmcgdGVtcGwgPSBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OldlZWtGb3JtYXRUZW1wbGF0ZSk7
CisgICAgLy8gQ29udmVydHMgYSBzdHJpbmcgbGlrZSAiV2VlayAkMiwgJDEiIHRvIGFuIExETUwg
ZGF0ZSBmb3JtYXQgcGF0dGVybiBsaWtlCisgICAgLy8gIidXZWVrICd3dycsICd5eXl5Ii4KKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgdW5zaWduZWQgbGl0ZXJhbFN0YXJ0ID0gMDsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZW1wbC5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpICsgMSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICh0ZW1wbFtpXSA9PSAn
JCcgJiYgKHRlbXBsW2kgKyAxXSA9PSAnMScgfHwgdGVtcGxbaSArIDFdID09ICcyJykpIHsKKyAg
ICAgICAgICAgIGlmIChsaXRlcmFsU3RhcnQgPCBpKQorICAgICAgICAgICAgICAgIERhdGVUaW1l
Rm9ybWF0OjpxdW90ZUFuZEFwcGVuZExpdGVyYWwodGVtcGwuc3Vic3RyaW5nKGxpdGVyYWxTdGFy
dCwgaSAtIGxpdGVyYWxTdGFydCksIGJ1aWxkZXIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQodGVtcGxbKytpXSA9PSAnMScgPyAieXl5eSIgOiAid3ciKTsKKyAgICAgICAgICAgIGxpdGVy
YWxTdGFydCA9IGkgKyAxOworICAgICAgICB9CisgICAgfQorICAgIGlmIChsaXRlcmFsU3RhcnQg
PCBsZW5ndGgpCisgICAgICAgIERhdGVUaW1lRm9ybWF0OjpxdW90ZUFuZEFwcGVuZExpdGVyYWwo
dGVtcGwuc3Vic3RyaW5nKGxpdGVyYWxTdGFydCwgbGVuZ3RoIC0gbGl0ZXJhbFN0YXJ0KSwgYnVp
bGRlcik7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworI2VuZGlmCisKK1N0
cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6TWlzc2luZ1BsdWdpblRleHQpOworfQorCitTdHJpbmcgY3Jhc2hlZFBsdWdpblRl
eHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygiUGx1Zy1p
biBGYWlsdXJlIik7Cit9CisKK1N0cmluZyBibG9ja2VkUGx1Z2luQnlDb250ZW50U2VjdXJpdHlQ
b2xpY3lUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGluc2VjdXJlUGx1Z2luVmVyc2lvblRleHQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgaW5hY3RpdmVQ
bHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQgbnVtYmVyT2ZG
aWxlcykKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpNdWx0aXBsZUZp
bGVVcGxvYWRUZXh0LCBTdHJpbmc6Om51bWJlcihudW1iZXJPZkZpbGVzKSk7Cit9CisKKy8vIFVz
ZWQgaW4gRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCitTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4
dCgpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCisvLyBUaGUgZm9sbG93aW5nIHR3byBm
dW5jdGlvbnMgYXJlIG5vdCBkZWNsYXJlZCBpbiBMb2NhbGl6ZWRTdHJpbmdzLmguCisvLyBUaGV5
IGFyZSB1c2VkIGJ5IHRoZSBtZW51IGZvciB0aGUgSFRNTCBrZXlnZW4gdGFnLgorU3RyaW5nIGtl
eWdlbk1lbnVIaWdoR3JhZGVLZXlTaXplKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxp
emVkU3RyaW5nOjpLZXlnZW5NZW51SGlnaEdyYWRlS2V5U2l6ZSk7Cit9CisKK1N0cmluZyBrZXln
ZW5NZW51TWVkaXVtR3JhZGVLZXlTaXplKCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxp
emVkU3RyaW5nOjpLZXlnZW5NZW51TWVkaXVtR3JhZGVLZXlTaXplKTsKK30KKworLy8gVXNlZCBp
biBJbWFnZURvY3VtZW50LmNwcCBhcyB0aGUgdGl0bGUgZm9yIHBhZ2VzIHdoZW4gdGhhdCBwYWdl
IGlzIGFuIGltYWdlLgorU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBy
ZXN1bHQuYXBwZW5kKGZpbGVuYW1lKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgKCIpOworICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSk7CisgICAgcmVzdWx0LmFw
cGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oMHhENykpOyAgLy8gVSswMEQ3IChtdWx0aXBsaWNhdGlv
biBzaWduKQorICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSkp
OworICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
Cit9CisKKy8vIFdlIGRvbid0IHVzZSB0aGVzZSBzdHJpbmdzLCBzbyB0aGV5IHJldHVybiBhbiBl
bXB0eSBTdHJpbmcuIFdlIGNhbid0IGp1c3QKKy8vIG1ha2UgdGhlbSBhc3NlcnRzIGJlY2F1c2Ug
d2ViY29yZSBzdGlsbCBjYWxscyB0aGVtLgorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5M
aW5rSW5OZXdXaW5kb3coKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpIHsgcmV0dXJuIFN0cmluZygp
OyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKSB7IHJl
dHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VU
b0Rpc2soKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlJbWFnZVRvQ2xpcGJvYXJkKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpIHsgcmV0dXJuIFN0cmluZygpOyB9CitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0K
K1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25z
dCBTdHJpbmcmKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdJZ25vcmVHcmFtbWFyKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTcGVsbGluZ01lbnUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpIHsgcmV0dXJuIFN0
cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9s
ZCgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGlj
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxp
bmUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxp
bmUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRp
bmdEaXJlY3Rpb25NZW51KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpIHsgcmV0dXJuIFN0cmluZygpOyB9
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKSB7IHJldHVybiBTdHJpbmco
KTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpIHsgcmV0
dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFu
ZWwoYm9vbCBzaG93KSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIG1lZGlhRWxlbWVudExp
dmVCcm9hZGNhc3RTdGF0ZVRleHQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIG1lZGlh
RWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCkgeyByZXR1cm4gU3RyaW5nKCk7
IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuQXVkaW9Jbk5ld1dpbmRvdygpIHsgcmV0
dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1Rv
Q2xpcGJvYXJkKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKSB7IHJldHVybiBTdHJpbmco
KTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3Jl
ZW4oKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlh
UGxheSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVk
aWFQYXVzZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
TWVkaWFNdXRlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KKworI2lmIEVOQUJMRShWSURFT19UUkFD
SykKK1N0cmluZyB0ZXh0VHJhY2tDbG9zZWRDYXB0aW9uc1RleHQoKSB7IHJldHVybiBTdHJpbmco
KTsgfQorU3RyaW5nIHRleHRUcmFja1N1YnRpdGxlc1RleHQoKSB7IHJldHVybiBTdHJpbmcoKTsg
fQorU3RyaW5nIHRleHRUcmFja09mZlRleHQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorU3RyaW5n
IHRleHRUcmFja05vTGFiZWxUZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyNlbmRpZgorCitT
dHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25zdCBTdHJpbmcmIG5h
bWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBx
dWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFBdWRpb0VsZW1lbnQpOworICAgIGlmIChu
YW1lID09ICJWaWRlb0VsZW1lbnQiKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWE1lZGlhVmlkZW9FbGVtZW50KTsKKyAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRv
biIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFNdXRl
QnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVVuTXV0ZUJ1dHRvbik7CisgICAgaWYg
KG5hbWUgPT0gIlBsYXlCdXR0b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWE1lZGlhUGxheUJ1dHRvbik7CisgICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9u
IikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVBhdXNl
QnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5
KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNsaWRlcik7CisgICAgaWYgKG5hbWUgPT0gIlNs
aWRlclRodW1iIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhN
ZWRpYVNsaWRlclRodW1iKTsKKyAgICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0dG9uIikKKyAgICAg
ICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVJld2luZEJ1dHRvbik7
CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAgICAgICByZXR1
cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhUmV0dXJuVG9SZWFsVGltZSk7Cisg
ICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCisgICAgICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFDdXJyZW50VGltZURpc3BsYXkpOworICAgIGlm
IChuYW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIpCisgICAgICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheSk7CisgICAgaWYg
KG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxp
emVkU3RyaW5nOjpBWE1lZGlhU3RhdHVzRGlzcGxheSk7CisgICAgaWYgKG5hbWUgPT0gIkVudGVy
RnVsbHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b24pOworICAgIGlmIChuYW1lID09ICJFeGl0
RnVsbHNjcmVlbkJ1dHRvbiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbik7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtG
b3J3YXJkQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
QVhNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiU2Vla0JhY2tCdXR0
b24iKQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2Vl
a0JhY2tCdXR0b24pOworICAgIGlmIChuYW1lID09ICJTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24i
KQorICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2hvd0Ns
b3NlZENhcHRpb25zQnV0dG9uKTsKKyAgICBpZiAobmFtZSA9PSAiSGlkZUNsb3NlZENhcHRpb25z
QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRp
YUhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbik7CisKKyAgICAvLyBGSVhNRTogdGhlIENvbnRyb2xz
UGFuZWwgY29udGFpbmVyIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGluIHRoZSBhY2Nlc3NpYmls
aXR5IGhpZXJhcmNoeS4KKyAgICBpZiAobmFtZSA9PSAiQ29udHJvbHNQYW5lbCIpCisgICAgICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFEZWZhdWx0KTsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTWVkaWFEZWZhdWx0KTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVs
ZW1lbnRIZWxwVGV4dChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG5hbWUgPT0gIkF1
ZGlvRWxlbWVudCIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFBdWRpb0VsZW1lbnRIZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikK
KyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVZpZGVvRWxl
bWVudEhlbHApOworICAgIGlmIChuYW1lID09ICJNdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYU11dGVCdXR0b25IZWxwKTsKKyAgICBp
ZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6QVhNZWRpYVVuTXV0ZUJ1dHRvbkhlbHApOworICAgIGlmIChuYW1lID09ICJQ
bGF5QnV0dG9uIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhN
ZWRpYVBsYXlCdXR0b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiUGF1c2VCdXR0b24iKQorICAg
ICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhUGF1c2VCdXR0b25I
ZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiU2xpZGVyIikKKyAgICAgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNsaWRlckhlbHApOworICAgIGlmIChuYW1lID09ICJT
bGlkZXJUaHVtYiIpCisgICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFTbGlkZXJUaHVtYkhlbHApOworICAgIGlmIChuYW1lID09ICJSZXdpbmRCdXR0b24iKQor
ICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhUmV3aW5kQnV0
dG9uSGVscCk7CisgICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRpbWVCdXR0b24iKQorICAg
ICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhUmV0dXJuVG9SZWFs
VGltZUhlbHApOworICAgIGlmIChuYW1lID09ICJDdXJyZW50VGltZURpc3BsYXkiKQorICAgICAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhQ3VycmVudFRpbWVEaXNw
bGF5SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIlRpbWVSZW1haW5pbmdEaXNwbGF5IikKKyAgICAg
ICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVRpbWVSZW1haW5pbmdE
aXNwbGF5SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIlN0YXR1c0Rpc3BsYXkiKQorICAgICAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU3RhdHVzRGlzcGxheUhlbHAp
OworICAgIGlmIChuYW1lID09ICJFbnRlckZ1bGxzY3JlZW5CdXR0b24iKQorICAgICAgICByZXR1
cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9u
SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIkV4aXRGdWxsc2NyZWVuQnV0dG9uIikKKyAgICAgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUV4aXRGdWxsc2NyZWVuQnV0
dG9uSGVscCk7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9uIikKKyAgICAgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNlZWtGb3J3YXJkQnV0dG9u
SGVscCk7CisgICAgaWYgKG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKKyAgICAgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNlZWtCYWNrQnV0dG9uSGVscCk7Cisg
ICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCisgICAgICAgIHJldHVy
biBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0
b25IZWxwKTsKKyAgICBpZiAobmFtZSA9PSAiSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIikKKyAg
ICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYUhpZGVDbG9zZWRD
YXB0aW9uc0J1dHRvbkhlbHApOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYURlZmF1bHQpOworfQorCitTdHJp
bmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQgLyp0aW1lKi8pCit7CisgICAg
Ly8gRklYTUU6IHRvIGJlIGZpeGVkLgorICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5
KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblZhbHVlTWlzc2luZyk7Cit9CisKK1N0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvckNoZWNrYm94VGV4dCgpCit7CisgICAg
cmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblZhbHVlTWlzc2luZ0Zv
ckNoZWNrYm94KTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9y
RmlsZVRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlk
YXRpb25WYWx1ZU1pc3NpbmdGb3JGaWxlKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblZhbHVlTWlzc2luZ0Zvck11bHRpcGxlRmlsZSk7
Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclJhZGlvVGV4dCgp
Cit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblZhbHVl
TWlzc2luZ0ZvclJhZGlvKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNz
aW5nRm9yU2VsZWN0VGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6VmFsaWRhdGlvblZhbHVlTWlzc2luZ0ZvclNlbGVjdCk7Cit9CisKK1N0cmluZyB2YWxpZGF0
aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25UeXBlTWlzbWF0Y2gpOworfQorCitTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRleHQoKQoreworICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25UeXBlTWlzbWF0Y2hGb3JFbWFpbCk7Cit9
CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWxU
ZXh0KCkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9u
VHlwZU1pc21hdGNoRm9yTXVsdGlwbGVFbWFpbCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVR5cGVNaXNtYXRjaEZvclVSTFRleHQoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25UeXBlTWlzbWF0Y2hGb3JVUkwpOworfQorCitTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICByZXR1cm4gcXVl
cnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uUGF0dGVybk1pc21hdGNoKTsKK30KKwor
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50IHZhbHVlTGVuZ3RoLCBpbnQg
bWF4TGVuZ3RoKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlk
YXRpb25Ub29Mb25nLCBTdHJpbmc6Om51bWJlcih2YWx1ZUxlbmd0aCksIFN0cmluZzo6bnVtYmVy
KG1heExlbmd0aCkpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxv
d1RleHQoY29uc3QgU3RyaW5nJiBtaW5pbXVtKQoreworICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25SYW5nZVVuZGVyZmxvdywgbWluaW11bSk7Cit9CisKK1N0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYgbWF4
aW11bSkKK3sKKyAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9u
UmFuZ2VPdmVyZmxvdywgbWF4aW11bSk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0
ZXBNaXNtYXRjaFRleHQoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIHN0ZXApCit7
CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblN0ZXBNaXNt
YXRjaCwgYmFzZSwgc3RlcCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZUJhZElucHV0
Rm9yTnVtYmVyVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
VmFsaWRhdGlvbkJhZElucHV0Rm9yTnVtYmVyKTsKK30KKworI2lmIEVOQUJMRShJTlBVVF9NVUxU
SVBMRV9GSUVMRFNfVUkpCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VCYWRJbnB1dEZvckRhdGVU
aW1lVGV4dCgpCit7CisgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRh
dGlvbkJhZElucHV0Rm9yRGF0ZVRpbWUpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xvY2FsaXplZFN0
cmluZ3NDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vTG9jYWxpemVkU3RyaW5nc0Nocm9taXVtLmNwcAkocmV2aXNpb24gMTQxNDIyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTG9jYWxpemVkU3RyaW5nc0Nocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDcgKzM1OSw3IEBAIFN0cmluZyBpbWFnZVRp
dGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUKICAgICByZXN1bHQuYXBwZW5kKGZpbGVuYW1lKTsK
ICAgICByZXN1bHQuYXBwZW5kKCIgKCIpOwogICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1i
ZXIoc2l6ZS53aWR0aCgpKSk7Ci0gICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4o
MHhENykpOyAgLy8gVSswMEQ3IChtdWx0aXBsaWNhdGlvbiBzaWduKQorICAgIHJlc3VsdC5hcHBl
bmQoc3RhdGljX2Nhc3Q8VUNoYXI+KDB4RDcpKTsgLy8gVSswMEQ3IChtdWx0aXBsaWNhdGlvbiBz
aWduKQogICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQoKSkpOwog
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTQxNDYwKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxMy0wMS0zMSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Nocm9taXVtXSBNb3ZlIExvY2FsaXplZFN0cmluZ3MgdG8gV2ViQ29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NDg4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIGxhcmdl
ciByZWZhY3RvcmluZyBzZXJpZXM7IHNlZSB0cmFja2luZyBidWcgMTA2ODI5LgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHA6IFJlbW92
ZWQuCisKIDIwMTMtMDEtMzEgIERhbiBBbGNhbnRhcmEgIDxkZmFsY2FudGFyYUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViRnJhbWVUZXN0LkRpc2FtYmlndWF0aW9uUG9wdXAgaXMgZmFpbGlu
ZwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gMTQxNDYwKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTks
NyArMzk5LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL21hYy9XZWJTY3JlZW5JbmZvRmFjdG9y
eS5tbScsCiAgICAgICAgICAgICAgICAgJ3NyYy9tYWMvV2ViU3Vic3RyaW5nVXRpbC5tbScsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAnLAotICAgICAg
ICAgICAgICAgICdzcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL05v
dGlmaWNhdGlvblByZXNlbnRlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL3BhaW50
aW5nL0NvbnRpbnVvdXNQYWludGVyLmgnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDE0MTQ2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKLQotI2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMv
UGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViTG9jYWxpemVkU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgV2ViS2l0OjpX
ZWJMb2NhbGl6ZWRTdHJpbmc7Ci11c2luZyBXZWJLaXQ6OldlYlN0cmluZzsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6TmFt
ZSBuYW1lKQotewotICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPnF1ZXJ5
TG9jYWxpemVkU3RyaW5nKG5hbWUpOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6TmFtZSBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhcmFtZXRlcikKLXsKLSAg
ICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmlu
ZyhuYW1lLCBwYXJhbWV0ZXIpOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6TmFtZSBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhcmFtZXRlcjEsIGNvbnN0IFdl
YlN0cmluZyYgcGFyYW1ldGVyMikKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5xdWVyeUxvY2FsaXplZFN0cmluZyhuYW1lLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIy
KTsKLX0KLQotU3RyaW5nIHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCi17Ci0gICAgcmV0
dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6U2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9u
KTsKLX0KLQotU3RyaW5nIHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCgpCi17Ci0gICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6U3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKTsKLX0K
LQotU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OklucHV0RWxlbWVudEFsdFRleHQpOwotfQotCi1TdHJpbmcgcmVzZXRC
dXR0b25EZWZhdWx0TGFiZWwoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OlJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25DaG9v
c2VGaWxlTGFiZWwoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZp
bGVCdXR0b25DaG9vc2VGaWxlTGFiZWwpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11
bHRpcGxlRmlsZXNMYWJlbCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6RmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCk7Ci19Ci0KLVN0cmluZyBkZWZh
dWx0RGV0YWlsc1N1bW1hcnlUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpEZXRhaWxzTGFiZWwpOwotfQotCi1TdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVj
dGVkTGFiZWwoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkZpbGVC
dXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25Ob0ZpbGVz
U2VsZWN0ZWRMYWJlbCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6
RmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudU5v
UmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpTZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQpOwotfQotU3RyaW5nIHNlYXJjaE1l
bnVSZWNlbnRTZWFyY2hlc1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OlNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQpOwotfQotCi1TdHJpbmcgc2VhcmNo
TWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpTZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQpOwotfQotCi1T
dHJpbmcgQVhXZWJBcmVhVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0
cmluZzo6QVhXZWJBcmVhVGV4dCk7Ci19Ci0KLVN0cmluZyBBWExpbmtUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWExpbmtUZXh0KTsKLX0KLQotU3RyaW5n
IEFYTGlzdE1hcmtlclRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJp
bmc6OkFYTGlzdE1hcmtlclRleHQpOwotfQotCi1TdHJpbmcgQVhJbWFnZU1hcFRleHQoKQotewot
ICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYSW1hZ2VNYXBUZXh0KTsKLX0K
LQotU3RyaW5nIEFYSGVhZGluZ1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OkFYSGVhZGluZ1RleHQpOwotfQotCi1TdHJpbmcgQVhEZWZpbml0aW9uVGV4dCgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCJkZWZpbml0aW9u
Iik7Ci19Ci0KLVN0cmluZyBBWERlc2NyaXB0aW9uTGlzdFRlcm1UZXh0KCkKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoInRlcm0iKTsKLX0KLQotU3RyaW5nIEFY
RGVzY3JpcHRpb25MaXN0RGV0YWlsVGV4dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gU3RyaW5nKCJkZXNjcmlwdGlvbiIpOwotfQotCi1TdHJpbmcgQVhGb290ZXJSb2xl
RGVzY3JpcHRpb25UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBT
dHJpbmcoImZvb3RlciIpOwotfQotCi1TdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkKLXsKLSAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWEJ1dHRvbkFjdGlvblZlcmIpOwot
fQotCi1TdHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKQotewotICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKTsKLX0KLQotU3Ry
aW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6QVhUZXh0RmllbGRBY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYQ2hlY2tl
ZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0
cmluZzo6QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYVW5jaGVj
a2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYik7Ci19Ci0KLVN0cmluZyBBWExp
bmtBY3Rpb25WZXJiKCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WExpbmtBY3Rpb25WZXJiKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIo
KQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25W
ZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0gICAgCi0jaWYgRU5BQkxFKElOUFVU
X01VTFRJUExFX0ZJRUxEU19VSSkKLVN0cmluZyBBWEFNUE1GaWVsZFRleHQoKQotewotICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYQU1QTUZpZWxkVGV4dCk7Ci19Ci0KLVN0
cmluZyBBWERheU9mTW9udGhGaWVsZFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OkFYRGF5T2ZNb250aEZpZWxkVGV4dCk7Ci19Ci0KLVN0cmluZyBBWERhdGVU
aW1lRmllbGRFbXB0eVZhbHVlVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhEYXRlVGltZUZpZWxkRW1wdHlWYWx1ZVRleHQpOwotfQotCi1TdHJpbmcgQVhI
b3VyRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WEhvdXJGaWVsZFRleHQpOwotfQotCi1TdHJpbmcgQVhNaWxsaXNlY29uZEZpZWxkVGV4dCgpCi17
Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNaWxsaXNlY29uZEZpZWxk
VGV4dCk7Ci19Ci0KLVN0cmluZyBBWE1pbnV0ZUZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNaW51dGVGaWVsZFRleHQpOwotfQotCi1TdHJpbmcg
QVhNb250aEZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6QVhNb250aEZpZWxkVGV4dCk7Ci19Ci0KLVN0cmluZyBBWFNlY29uZEZpZWxkVGV4dCgpCi17
Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhTZWNvbmRGaWVsZFRleHQp
OwotfQotCi1TdHJpbmcgQVhXZWVrT2ZZZWFyRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVl
cnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWFdlZWtPZlllYXJGaWVsZFRleHQpOwotfQotCi1TdHJp
bmcgQVhZZWFyRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpBWFllYXJGaWVsZFRleHQpOwotfQotCi1TdHJpbmcgcGxhY2Vob2xkZXJGb3JEYXlPZk1v
bnRoRmllbGQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlBsYWNl
aG9sZGVyRm9yRGF5T2ZNb250aEZpZWxkKTsKLX0KLQotU3RyaW5nIHBsYWNlaG9sZGVyRm9yTW9u
dGhGaWVsZCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6UGxhY2Vo
b2xkZXJGb3JNb250aEZpZWxkKTsKLX0KLQotU3RyaW5nIHBsYWNlaG9sZGVyRm9yWWVhckZpZWxk
KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpQbGFjZWhvbGRlckZv
clllYXJGaWVsZCk7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi1T
dHJpbmcgd2Vla0Zvcm1hdEluTERNTCgpCi17Ci0gICAgU3RyaW5nIHRlbXBsID0gcXVlcnkoV2Vi
TG9jYWxpemVkU3RyaW5nOjpXZWVrRm9ybWF0VGVtcGxhdGUpOwotICAgIC8vIENvbnZlcnRzIGEg
c3RyaW5nIGxpa2UgIldlZWsgJDIsICQxIiB0byBhbiBMRE1MIGRhdGUgZm9ybWF0IHBhdHRlcm4g
bGlrZQotICAgIC8vICInV2VlayAnd3cnLCAneXl5eSIuCi0gICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIHVuc2lnbmVkIGxpdGVyYWxTdGFydCA9IDA7Ci0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gdGVtcGwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSArIDEgPCBsZW5n
dGg7ICsraSkgewotICAgICAgICBpZiAodGVtcGxbaV0gPT0gJyQnICYmICh0ZW1wbFtpICsgMV0g
PT0gJzEnIHx8IHRlbXBsW2kgKyAxXSA9PSAnMicpKSB7Ci0gICAgICAgICAgICBpZiAobGl0ZXJh
bFN0YXJ0IDwgaSkKLSAgICAgICAgICAgICAgICBEYXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBl
bmRMaXRlcmFsKHRlbXBsLnN1YnN0cmluZyhsaXRlcmFsU3RhcnQsIGkgLSBsaXRlcmFsU3RhcnQp
LCBidWlsZGVyKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlbXBsWysraV0gPT0gJzEn
ID8gInl5eXkiIDogInd3Iik7Ci0gICAgICAgICAgICBsaXRlcmFsU3RhcnQgPSBpICsgMTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBpZiAobGl0ZXJhbFN0YXJ0IDwgbGVuZ3RoKQotICAgICAgICBE
YXRlVGltZUZvcm1hdDo6cXVvdGVBbmRBcHBlbmRMaXRlcmFsKHRlbXBsLnN1YnN0cmluZyhsaXRl
cmFsU3RhcnQsIGxlbmd0aCAtIGxpdGVyYWxTdGFydCksIGJ1aWxkZXIpOwotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLSNlbmRpZgotCi1TdHJpbmcgbWlzc2luZ1BsdWdpblRl
eHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6Ok1pc3NpbmdQbHVn
aW5UZXh0KTsKLX0KLQotU3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCkKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoIlBsdWctaW4gRmFpbHVyZSIpOwotfQotCi1T
dHJpbmcgYmxvY2tlZFBsdWdpbkJ5Q29udGVudFNlY3VyaXR5UG9saWN5VGV4dCgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBpbnNl
Y3VyZVBsdWdpblZlcnNpb25UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIGluYWN0aXZlUGx1Z2luVGV4dCgpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBtdWx0
aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkIG51bWJlck9mRmlsZXMpCi17Ci0gICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6TXVsdGlwbGVGaWxlVXBsb2FkVGV4dCwgU3RyaW5n
OjpudW1iZXIobnVtYmVyT2ZGaWxlcykpOwotfQotCi0vLyBVc2VkIGluIEZUUERpcmVjdG9yeURv
Y3VtZW50LmNwcAotU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQotewotICAgIHJldHVybiBT
dHJpbmcoKTsKLX0KLQotLy8gVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBub3QgZGVj
bGFyZWQgaW4gTG9jYWxpemVkU3RyaW5ncy5oLgotLy8gVGhleSBhcmUgdXNlZCBieSB0aGUgbWVu
dSBmb3IgdGhlIEhUTUwga2V5Z2VuIHRhZy4KLVN0cmluZyBrZXlnZW5NZW51SGlnaEdyYWRlS2V5
U2l6ZSgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6S2V5Z2VuTWVu
dUhpZ2hHcmFkZUtleVNpemUpOwotfQotCi1TdHJpbmcga2V5Z2VuTWVudU1lZGl1bUdyYWRlS2V5
U2l6ZSgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6S2V5Z2VuTWVu
dU1lZGl1bUdyYWRlS2V5U2l6ZSk7Ci19Ci0KLS8vIFVzZWQgaW4gSW1hZ2VEb2N1bWVudC5jcHAg
YXMgdGhlIHRpdGxlIGZvciBwYWdlcyB3aGVuIHRoYXQgcGFnZSBpcyBhbiBpbWFnZS4KLVN0cmlu
ZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUp
Ci17Ci0gICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChmaWxlbmFt
ZSk7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICgiKTsKLSAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKHNpemUud2lkdGgoKSkpOwotICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNo
YXI+KDB4RDcpKTsgIC8vIFUrMDBENyAobXVsdGlwbGljYXRpb24gc2lnbikKLSAgICByZXN1bHQu
YXBwZW5kKFN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkpKTsKLSAgICByZXN1bHQuYXBwZW5k
KCcpJyk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwotfQotCi0vLyBXZSBkb24ndCB1
c2UgdGhlc2Ugc3RyaW5ncywgc28gdGhleSByZXR1cm4gYW4gZW1wdHkgU3RyaW5nLiBXZSBjYW4n
dCBqdXN0Ci0vLyBtYWtlIHRoZW0gYXNzZXJ0cyBiZWNhdXNlIHdlYmNvcmUgc3RpbGwgY2FsbHMg
dGhlbS4KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtU
b0Rpc2soKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Nv
cHlMaW5rVG9DbGlwYm9hcmQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgp
IHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3coKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHkoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0dvQmFjaygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
R29Gb3J3YXJkKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTdG9wKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdS
ZWxvYWQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1
dCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUo
KSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nl
c0ZvdW5kKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJ
Z25vcmVTcGVsbGluZygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTGVhcm5TcGVsbGluZygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJikgeyByZXR1cm4g
U3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpIHsg
cmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpIHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKSB7IHJldHVybiBTdHJpbmco
KTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpIHsgcmV0dXJuIFN0cmluZygp
OyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpIHsg
cmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlv
bk1lbnUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rl
ZmF1bHREaXJlY3Rpb24oKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0xlZnRUb1JpZ2h0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0
KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVU
ZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
VmlkZW9Jbk5ld1dpbmRvdygpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xp
cGJvYXJkKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdU
b2dnbGVNZWRpYUNvbnRyb2xzKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCkgeyByZXR1cm4gU3RyaW5n
KCk7IH0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKSB7IHJldHVybiBT
dHJpbmcoKTsgfQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpIHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi1TdHJpbmcgdGV4dFRyYWNr
Q2xvc2VkQ2FwdGlvbnNUZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJh
Y2tTdWJ0aXRsZXNUZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJhY2tP
ZmZUZXh0KCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KLVN0cmluZyB0ZXh0VHJhY2tOb0xhYmVsVGV4
dCgpIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0jZW5kaWYKLQotU3RyaW5nIGxvY2FsaXplZE1lZGlh
Q29udHJvbEVsZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1l
ID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3Ry
aW5nOjpBWE1lZGlhQXVkaW9FbGVtZW50KTsKLSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50
IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVZpZGVv
RWxlbWVudCk7Ci0gICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQotICAgICAgICByZXR1cm4g
cXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhTXV0ZUJ1dHRvbik7Ci0gICAgaWYgKG5h
bWUgPT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWVkaWFVbk11dGVCdXR0b24pOwotICAgIGlmIChuYW1lID09ICJQbGF5QnV0dG9u
IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVBsYXlC
dXR0b24pOwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBx
dWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFQYXVzZUJ1dHRvbik7Ci0gICAgaWYgKG5h
bWUgPT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OkFYTWVkaWFTbGlkZXIpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTbGlkZXJUaHVtYik7Ci0g
ICAgaWYgKG5hbWUgPT0gIlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFSZXdpbmRCdXR0b24pOwotICAgIGlmIChuYW1lID09ICJS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhNZWRpYVJldHVyblRvUmVhbFRpbWUpOwotICAgIGlmIChuYW1lID09ICJDdXJy
ZW50VGltZURpc3BsYXkiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpBWE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5KTsKLSAgICBpZiAobmFtZSA9PSAiVGltZVJlbWFp
bmluZ0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpB
WE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXkpOwotICAgIGlmIChuYW1lID09ICJTdGF0dXNEaXNw
bGF5IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVN0
YXR1c0Rpc3BsYXkpOwotICAgIGlmIChuYW1lID09ICJFbnRlckZ1bGxzY3JlZW5CdXR0b24iKQot
ICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRW50ZXJGdWxs
c2NyZWVuQnV0dG9uKTsKLSAgICBpZiAobmFtZSA9PSAiRXhpdEZ1bGxzY3JlZW5CdXR0b24iKQot
ICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRXhpdEZ1bGxz
Y3JlZW5CdXR0b24pOwotICAgIGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAg
ICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFTZWVrRm9yd2FyZEJ1
dHRvbik7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtCYWNrQnV0dG9uIikKLSAgICAgICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNlZWtCYWNrQnV0dG9uKTsKLSAgICBp
ZiAobmFtZSA9PSAiU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1
ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbik7
Ci0gICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCi0gICAgICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24pOwotCi0gICAgLy8gRklYTUU6IHRoZSBDb250cm9sc1BhbmVsIGNvbnRhaW5lciBzaG91
bGQgbmV2ZXIgYmUgdmlzaWJsZSBpbiB0aGUgYWNjZXNzaWJpbGl0eSBoaWVyYXJjaHkuCi0gICAg
aWYgKG5hbWUgPT0gIkNvbnRyb2xzUGFuZWwiKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9j
YWxpemVkU3RyaW5nOjpBWE1lZGlhRGVmYXVsdCk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhRGVmYXVsdCk7
Ci19Ci0KLVN0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3Qg
U3RyaW5nJiBuYW1lKQotewotICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhQXVkaW9FbGVtZW50SGVs
cCk7Ci0gICAgaWYgKG5hbWUgPT0gIlZpZGVvRWxlbWVudCIpCi0gICAgICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFWaWRlb0VsZW1lbnRIZWxwKTsKLSAgICBpZiAo
bmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWVkaWFNdXRlQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUgPT0gIlVuTXV0ZUJ1
dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFV
bk11dGVCdXR0b25IZWxwKTsKLSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAg
IHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFQbGF5QnV0dG9uSGVscCk7
Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVBhdXNlQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5hbWUg
PT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OkFY
TWVkaWFTbGlkZXJIZWxwKTsKLSAgICBpZiAobmFtZSA9PSAiU2xpZGVyVGh1bWIiKQotICAgICAg
ICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpBWE1lZGlhU2xpZGVyVGh1bWJIZWxw
KTsKLSAgICBpZiAobmFtZSA9PSAiUmV3aW5kQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5
KFdlYkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVJld2luZEJ1dHRvbkhlbHApOwotICAgIGlmIChu
YW1lID09ICJSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdl
YkxvY2FsaXplZFN0cmluZzo6QVhNZWRpYVJldHVyblRvUmVhbFRpbWVIZWxwKTsKLSAgICBpZiAo
bmFtZSA9PSAiQ3VycmVudFRpbWVEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxv
Y2FsaXplZFN0cmluZzo6QVhNZWRpYUN1cnJlbnRUaW1lRGlzcGxheUhlbHApOwotICAgIGlmIChu
YW1lID09ICJUaW1lUmVtYWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJM
b2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheUhlbHApOwotICAgIGlm
IChuYW1lID09ICJTdGF0dXNEaXNwbGF5IikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2Fs
aXplZFN0cmluZzo6QVhNZWRpYVN0YXR1c0Rpc3BsYXlIZWxwKTsKLSAgICBpZiAobmFtZSA9PSAi
RW50ZXJGdWxsc2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXpl
ZFN0cmluZzo6QVhNZWRpYUVudGVyRnVsbHNjcmVlbkJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1l
ID09ICJFeGl0RnVsbHNjcmVlbkJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OkFYTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbkhlbHApOwotICAgIGlmIChu
YW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OkFYTWVkaWFTZWVrRm9yd2FyZEJ1dHRvbkhlbHApOwotICAgIGlmIChuYW1l
ID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRT
dHJpbmc6OkFYTWVkaWFTZWVrQmFja0J1dHRvbkhlbHApOwotICAgIGlmIChuYW1lID09ICJTaG93
Q2xvc2VkQ2FwdGlvbnNCdXR0b24iKQotICAgICAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVk
U3RyaW5nOjpBWE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uSGVscCk7Ci0gICAgaWYgKG5h
bWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OkFYTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b25IZWxwKTsK
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6
ZWRTdHJpbmc6OkFYTWVkaWFEZWZhdWx0KTsKLX0KLQotU3RyaW5nIGxvY2FsaXplZE1lZGlhVGlt
ZURlc2NyaXB0aW9uKGZsb2F0IC8qdGltZSovKQotewotICAgIC8vIEZJWE1FOiB0byBiZSBmaXhl
ZC4KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ1RleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6
OlZhbGlkYXRpb25WYWx1ZU1pc3NpbmcpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VW
YWx1ZU1pc3NpbmdGb3JDaGVja2JveFRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2Nh
bGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JDaGVja2JveCk7Ci19Ci0KLVN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KCkKLXsKLSAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVmFsdWVNaXNzaW5nRm9y
RmlsZSk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zvck11bHRp
cGxlRmlsZVRleHQoKQotewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZh
bGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JNdWx0aXBsZUZpbGUpOwotfQotCi1TdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JSYWRpb1RleHQoKQotewotICAgIHJldHVybiBxdWVy
eShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JSYWRpbyk7Ci19
Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKQot
ewotICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25WYWx1ZU1p
c3NpbmdGb3JTZWxlY3QpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0
Y2hUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0
aW9uVHlwZU1pc21hdGNoKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21h
dGNoRm9yRW1haWxUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5n
OjpWYWxpZGF0aW9uVHlwZU1pc21hdGNoRm9yRW1haWwpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JNdWx0aXBsZUVtYWlsVGV4dCgpCi17Ci0gICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblR5cGVNaXNtYXRjaEZvck11bHRp
cGxlRW1haWwpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JV
UkxUZXh0KCkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0
aW9uVHlwZU1pc21hdGNoRm9yVVJMKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0
dGVybk1pc21hdGNoVGV4dCgpCi17Ci0gICAgcmV0dXJuIHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmlu
Zzo6VmFsaWRhdGlvblBhdHRlcm5NaXNtYXRjaCk7Ci19Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KGludCB2YWx1ZUxlbmd0aCwgaW50IG1heExlbmd0aCkKLXsKLSAgICBy
ZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0aW9uVG9vTG9uZywgU3RyaW5n
OjpudW1iZXIodmFsdWVMZW5ndGgpLCBTdHJpbmc6Om51bWJlcihtYXhMZW5ndGgpKTsKLX0KLQot
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYg
bWluaW11bSkKLXsKLSAgICByZXR1cm4gcXVlcnkoV2ViTG9jYWxpemVkU3RyaW5nOjpWYWxpZGF0
aW9uUmFuZ2VVbmRlcmZsb3csIG1pbmltdW0pOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZU92ZXJmbG93VGV4dChjb25zdCBTdHJpbmcmIG1heGltdW0pCi17Ci0gICAgcmV0dXJu
IHF1ZXJ5KFdlYkxvY2FsaXplZFN0cmluZzo6VmFsaWRhdGlvblJhbmdlT3ZlcmZsb3csIG1heGlt
dW0pOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0
IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBzdGVwKQotewotICAgIHJldHVybiBxdWVyeShX
ZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25TdGVwTWlzbWF0Y2gsIGJhc2UsIHN0ZXApOwot
fQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VCYWRJbnB1dEZvck51bWJlclRleHQoKQotewot
ICAgIHJldHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25CYWRJbnB1dEZv
ck51bWJlcik7Ci19Ci0KLSNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQotU3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlQmFkSW5wdXRGb3JEYXRlVGltZVRleHQoKQotewotICAgIHJl
dHVybiBxdWVyeShXZWJMb2NhbGl6ZWRTdHJpbmc6OlZhbGlkYXRpb25CYWRJbnB1dEZvckRhdGVU
aW1lKTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>