<?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>61670</bug_id>
          
          <creation_ts>2011-05-27 14:41:16 -0700</creation_ts>
          <short_desc>Always use the default localization strategy</short_desc>
          <delta_ts>2011-05-27 15:14:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>411671</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-27 14:41:16 -0700</bug_when>
    <thetext>Always use the default localization strategy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411672</commentid>
    <comment_count>1</comment_count>
      <attachid>95216</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-27 14:42:02 -0700</bug_when>
    <thetext>Created attachment 95216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411677</commentid>
    <comment_count>2</comment_count>
      <attachid>95219</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-27 14:57:28 -0700</bug_when>
    <thetext>Created attachment 95219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411680</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-05-27 15:14:19 -0700</bug_when>
    <thetext>Committed r87578: &lt;http://trac.webkit.org/changeset/87578&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95216</attachid>
            <date>2011-05-27 14:42:02 -0700</date>
            <delta_ts>2011-05-27 14:57:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61670-20110527144201.patch</filename>
            <type>text/plain</type>
            <size>38035</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQzIEBACisyMDExLTA1LTI3ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWx3YXlzIHVzZSB0aGUgZGVmYXVsdCBsb2NhbGl6YXRp
b24gc3RyYXRlZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxNjcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTE2MTMwPgorCisgICAgICAgICog
cGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlucHV0RWxlbWVudEFsdFRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6cmVzZXRCdXR0b25EZWZhdWx0TGFiZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlQnV0
dG9uQ2hvb3NlRmlsZUxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVCdXR0b25Ob0ZpbGVT
ZWxlY3RlZExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHREZXRhaWxzU3VtbWFyeVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29weUltYWdlVW5rbm93bkZpbGVMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rp
c2spOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJs
VG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZy
YW1lSW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29w
eSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3ApOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0N1
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnTG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ09wZW5MaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZUdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdN
ZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1h
cldpdGhTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQm9sZCk6CisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnVW5kZXJsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ091dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU3R5bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnU21hcnREYXNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnU21hcnRMaW5rcyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdUZXh0
UmVwbGFjZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVHJhbnNm
b3JtYXRpb25zTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtl
VXBwZXJDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dl
ckNhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBi
b2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5r
VG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
TWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdUb2dn
bGVNZWRpYUxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnRW50ZXJW
aWRlb0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTWVk
aWFQbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNl
YXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWFdl
YkFyZWFUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYTGlua1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhMaXN0TWFya2VyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWEltYWdlTWFwVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWEhlYWRpbmdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWERlZmluaXRp
b25MaXN0RGVmaW5pdGlvblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVhBUklBQ29udGVudEdy
b3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWEJ1dHRvbkFjdGlvblZlcmIpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhSYWRpb0J1dHRvbkFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6
QVhUZXh0RmllbGRBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYQ2hlY2tlZENoZWNr
Qm94QWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3JlOjpBWFVuY2hlY2tlZENoZWNrQm94QWN0
aW9uVmVyYik6CisgICAgICAgIChXZWJDb3JlOjpBWExpbmtBY3Rpb25WZXJiKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYTWVudUxpc3RQb3B1cEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6
QVhNZW51TGlzdEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29yZTo6bWlzc2luZ1BsdWdpblRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jhc2hlZFBsdWdpblRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6bXVsdGlwbGVGaWxlVXBsb2FkVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp1bmtub3du
RmlsZVNpemVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwbG9hZEZpbGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmFsbEZpbGVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5NZW51
SXRlbTUxMik6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5NZW51SXRlbTEwMjQpOgorICAgICAg
ICAoV2ViQ29yZTo6a2V5Z2VuTWVudUl0ZW0yMDQ4KToKKyAgICAgICAgKFdlYkNvcmU6OmtleWdl
bktleWNoYWluSXRlbU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VUaXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjptZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6Om1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZh
bGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yQ2hlY2tib3hUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yRmlsZVRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JNdWx0aXBsZUZpbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9y
UmFkaW9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNz
aW5nRm9yU2VsZWN0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVR5
cGVNaXNtYXRjaFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBl
TWlzbWF0Y2hGb3JFbWFpbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3Nh
Z2VUeXBlTWlzbWF0Y2hGb3JNdWx0aXBsZUVtYWlsVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2
YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvclVSTFRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OnZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
aWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFs
aWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxp
ZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQpOgorCiAyMDExLTA1LTI3ICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5LmNwcAkocmV2aXNpb24gODc1NDcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw2ICs5MCwxMiBAQCBzdGF0aWMgU3RyaW5nIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1
cE1lCiB9CiAjZW5kaWYKIAorRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5JiBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3ksIGRlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneSwg
KCkpOworICAgIHJldHVybiBkZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k7Cit9CisKIERlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5KCkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJh
dGVneS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneS5oCShyZXZpc2lvbiA4NzU0NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw4IEBAIGNsYXNzIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneSA6IHB1YmwKIHB1
YmxpYzoKICAgICBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3koKTsKIAotcHJpdmF0ZToKKyAg
ICBzdGF0aWMgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5JiBzaGFyZWQoKTsKKwogICAgIHZp
cnR1YWwgU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBy
ZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpOwogICAgIHZpcnR1YWwgU3RyaW5nIHNlYXJjaGFibGVJ
bmRleEludHJvZHVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDg3NTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAK
KyNpbmNsdWRlICJEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCi0jaW5jbHVkZSAiTG9jYWxpemF0aW9uU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCkBAIC0zOCw2
NjMgKzM4LDY2MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBpbnB1dEVsZW1lbnRB
bHRUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPmlucHV0RWxlbWVudEFsdFRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5pbnB1dEVsZW1lbnRBbHRUZXh0KCk7CiB9CiAK
IFN0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5yZXNldEJ1dHRvbkRlZmF1bHRM
YWJlbCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgp
LnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCk7CiB9CiAKIFN0cmluZyBzZWFyY2hhYmxlSW5kZXhJ
bnRyb2R1Y3Rpb24oKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxp
emF0aW9uU3RyYXRlZ3koKS0+c2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCk7CisgICAgcmV0
dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuc2VhcmNoYWJsZUluZGV4
SW50cm9kdWN0aW9uKCk7CiB9CiAKIFN0cmluZyBzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuc3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CiB9CiAK
IFN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmZpbGVCdXR0b25DaG9vc2VG
aWxlTGFiZWwoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKS5maWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCk7CiB9CiAKIFN0cmluZyBmaWxlQnV0dG9u
Tm9GaWxlU2VsZWN0ZWRMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5maWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgp
OworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmZpbGVC
dXR0b25Ob0ZpbGVTZWxlY3RlZExhYmVsKCk7CiB9CiAKIFN0cmluZyBkZWZhdWx0RGV0YWlsc1N1
bW1hcnlUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKTsKKyAgICByZXR1cm4g
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5kZWZhdWx0RGV0YWlsc1N1bW1h
cnlUZXh0KCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiBTdHJpbmcgY29weUltYWdlVW5rbm93
bkZpbGVMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5jb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCk7CisgICAgcmV0dXJu
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29weUltYWdlVW5rbm93bkZp
bGVMYWJlbCgpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCkKIHsKLSAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2lu
ZG93KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2so
KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7CisgICAgcmV0dXJu
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
TGlua1RvQ2xpcGJvYXJkKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9h
cmQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5j
b250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCk7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93
KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkK
IHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPmNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKTsKKyAgICByZXR1cm4g
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdE
b3dubG9hZEltYWdlVG9EaXNrKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5
SW1hZ2VUb0NsaXBib2FyZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBi
b2FyZCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgp
LmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCk7CiB9CiAKICNpZiBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlJ
bWFnZVVybFRvQ2xpcGJvYXJkKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRv
Q2xpcGJvYXJkKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hh
cmVkKCkuY29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKTsKIH0KICNl
bmRpZgogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKTsKKyAgICByZXR1cm4g
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdP
cGVuRnJhbWVJbk5ld1dpbmRvdygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29w
eSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnQ29weSgpOwogfQog
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z0dvQmFjaygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJl
ZCgpLmNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnR29Gb3J3YXJkKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpOworICAg
IHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51
SXRlbVRhZ0dvRm9yd2FyZCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcCgp
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTdG9wKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnU3RvcCgpOwogfQogCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Jl
bG9hZCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgp
LmNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ3V0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpOworICAgIHJldHVybiBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpOwog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKQogewotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVt
VGFnUGFzdGUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSgpOwogfQogCiAjaWYgUExBVEZPUk0oUVQpCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z1NlbGVjdEFsbCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNo
YXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpOwogfQogI2VuZGlmCiAKIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdOb0d1ZXNzZXNGb3VuZCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVTcGVsbGluZygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCk7CiB9CiAK
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKIHsKLSAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCk7CiB9CiAK
ICNpZiBQTEFURk9STShNQUMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90
bGlnaHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKTsKKyAgICBy
ZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0
ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpOwogfQogI2VuZGlmCiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCk7Cisg
ICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoV2ViKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29r
VXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKIHsKLSAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShzZWxlY3RlZFN0cmluZyk7CisgICAgcmV0dXJu
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFn
TG9va1VwSW5EaWN0aW9uYXJ5KHNlbGVjdGVkU3RyaW5nKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ09wZW5MaW5rKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCk7Cisg
ICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1l
bnVJdGVtVGFnT3BlbkxpbmsoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZUdyYW1tYXIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpOworICAgIHJl
dHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZUdyYW1tYXIoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxs
aW5nTWVudSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKTsKKyAgICByZXR1
cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVs
bGluZ1BhbmVsKGJvb2wgc2hvdykKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsKHNob3cpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJl
ZCgpLmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKHNob3cpOwogfQogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpOwogfQogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpOworICAgIHJldHVybiBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmdXaGlsZVR5cGluZygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1h
cldpdGhTcGVsbGluZygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpOwog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQogewotICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJ
dGVtVGFnRm9udE1lbnUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpOwogfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdTaG93Rm9udHMoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKTsKIH0KICNlbmRp
ZgogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdCb2xkKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVk
KCkuY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnSXRhbGljKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAgIHJldHVybiBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0l0
YWxpYygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKIHsKLSAg
ICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNv
bnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpOwogfQog
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdPdXRsaW5lKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hh
cmVkKCkuY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcygpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdTdHlsZXMoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1Nob3dDb2xvcnMoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpOwor
ICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dDb2xvcnMoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWVjaE1lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudSgpOworICAgIHJldHVy
biBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRh
Z1NwZWVjaE1lbnUoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtp
bmcoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZygpOworICAgIHJldHVybiBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1N0
YXJ0U3BlYWtpbmcoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2lu
ZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKTsKKyAgICByZXR1cm4gRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmcoKTsKIH0KICNlbmRpZgogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3JpdGlu
Z0RpcmVjdGlvbk1lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1l
bnUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5j
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOwogfQogCiBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFn
VGV4dERpcmVjdGlvbk1lbnUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpOwogfQog
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbigpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlv
bigpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKQogewotICAg
IHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29u
dGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpOwog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQogewotICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnUmlnaHRUb0xlZnQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpOwogfQogCiAj
aWYgUExBVEZPUk0oTUFDKQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxs
aW5nQXV0b21hdGljYWxseSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdB
dXRvbWF0aWNhbGx5KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6
c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseSgp
OwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKQogewot
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
Y29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKTsKKyAgICByZXR1cm4gRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0
dXRpb25zTWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1
dGlvbnMoYm9vbCBzaG93KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMo
c2hvdyk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCku
Y29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoc2hvdyk7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdT
bWFydENvcHlQYXN0ZSgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCk7CiB9CiAKIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdT
bWFydFF1b3RlcygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNo
YXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCk7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTbWFydERh
c2hlcygpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgp
LmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTbWFydExpbmtzKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsK
KyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0
TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdU
ZXh0UmVwbGFjZW1lbnQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7
CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9y
bWF0aW9uc01lbnUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpz
aGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCkKIHsKLSAgICByZXR1cm4gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRl
bVRhZ01ha2VVcHBlckNhc2UoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCkKIHsKLSAgICByZXR1cm4gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRl
bVRhZ01ha2VMb3dlckNhc2UoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKCk7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z0NhcGl0YWxpemUoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpz
aGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCk7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5nKTsKKyAgICByZXR1
cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1U
YWdDaGFuZ2VCYWNrKHJlcGxhY2VkU3RyaW5nKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCkKIHsK
LSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PmNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCk7CisgICAgcmV0dXJuIERl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29udGV4dE1lbnVJdGVtVGFnT3Bl
blZpZGVvSW5OZXdXaW5kb3coKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5B
dWRpb0luTmV3V2luZG93KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2lu
ZG93KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCku
Y29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpCiB7Ci0gICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVu
dUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9M
aW5rVG9DbGlwYm9hcmQoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRp
b0xpbmtUb0NsaXBib2FyZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9D
bGlwYm9hcmQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4
dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scygpOworICAgIHJldHVybiBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlh
Q29udHJvbHMoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9v
cCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKTsKKyAgICByZXR1cm4g
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdU
b2dnbGVNZWRpYUxvb3AoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlk
ZW9GdWxsc2NyZWVuKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVu
KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY29u
dGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKTsKIH0KIAogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXko
KTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250
ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXkoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z01lZGlhUGF1c2UoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxp
emF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpOworICAgIHJl
dHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRl
bVRhZ01lZGlhUGF1c2UoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0
ZSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKTsKKyAgICByZXR1cm4gRGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5jb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11
dGUoKTsKIH0KICAgICAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgp
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5jb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpOworICAgIHJldHVybiBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmNvbnRleHRNZW51SXRlbVRhZ0luc3Bl
Y3RFbGVtZW50KCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIAogU3Ry
aW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5zZWFyY2hNZW51Tm9SZWNl
bnRTZWFyY2hlc1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
OjpzaGFyZWQoKS5zZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKTsKIH0KIAogU3RyaW5n
IHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQgKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnNlYXJjaE1lbnVSZWNlbnRTZWFy
Y2hlc1RleHQgKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hh
cmVkKCkuc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCAoKTsKIH0KIAogU3RyaW5nIHNlYXJj
aE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5zZWFyY2hNZW51Q2xlYXJSZWNlbnRT
ZWFyY2hlc1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Ojpz
aGFyZWQoKS5zZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsKIH0KIAogU3RyaW5n
IEFYV2ViQXJlYVRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+QVhXZWJBcmVhVGV4dCgpOworICAgIHJldHVybiBEZWZhdWx0
TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLkFYV2ViQXJlYVRleHQoKTsKIH0KIAogU3Ry
aW5nIEFYTGlua1RleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+QVhMaW5rVGV4dCgpOworICAgIHJldHVybiBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLkFYTGlua1RleHQoKTsKIH0KIAogU3RyaW5nIEFY
TGlzdE1hcmtlclRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+QVhMaXN0TWFya2VyVGV4dCgpOworICAgIHJldHVybiBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLkFYTGlzdE1hcmtlclRleHQoKTsKIH0K
IAogU3RyaW5nIEFYSW1hZ2VNYXBUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYSW1hZ2VNYXBUZXh0KCk7CisgICAgcmV0
dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuQVhJbWFnZU1hcFRleHQo
KTsKIH0KIAogU3RyaW5nIEFYSGVhZGluZ1RleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhIZWFkaW5nVGV4dCgpOworICAg
IHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLkFYSGVhZGluZ1Rl
eHQoKTsKIH0KIAogU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWERlZmlu
aXRpb25MaXN0VGVybVRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5OjpzaGFyZWQoKS5BWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKIH0KIAogU3RyaW5nIEFY
RGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWERlZmluaXRpb25MaXN0RGVmaW5p
dGlvblRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKS5BWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKTsKIH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKIFN0cmluZyBBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmluZyYgYXJpYVR5
cGUpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5BWEFSSUFDb250ZW50R3JvdXBUZXh0KGFyaWFUeXBlKTsKKyAgICByZXR1cm4gRGVm
YXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5BWEFSSUFDb250ZW50R3JvdXBUZXh0
KGFyaWFUeXBlKTsKIH0KICNlbmRpZgogICAgIAogU3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigp
CiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5BWEJ1dHRvbkFjdGlvblZlcmIoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5OjpzaGFyZWQoKS5BWEJ1dHRvbkFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFY
UmFkaW9CdXR0b25BY3Rpb25WZXJiKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCk7Cisg
ICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuQVhSYWRpb0J1
dHRvbkFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5BWFRleHRGaWVsZEFjdGlvblZlcmIoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5OjpzaGFyZWQoKS5BWFRleHRGaWVsZEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5n
IEFYQ2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWENoZWNrZWRDaGVja0JveEFjdGlv
blZlcmIoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQo
KS5BWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYVW5jaGVja2Vk
Q2hlY2tCb3hBY3Rpb25WZXJiKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7
CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuQVhVbmNo
ZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYTGlua0FjdGlvblZlcmIo
KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+QVhMaW5rQWN0aW9uVmVyYigpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OnNoYXJlZCgpLkFYTGlua0FjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYTWVu
dUxpc3RQb3B1cEFjdGlvblZlcmIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpOwor
ICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLkFYTWVudUxp
c3RQb3B1cEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkK
IHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPkFYTWVudUxpc3RBY3Rpb25WZXJiKCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRp
b25TdHJhdGVneTo6c2hhcmVkKCkuQVhNZW51TGlzdEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5n
IG1pc3NpbmdQbHVnaW5UZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPm1pc3NpbmdQbHVnaW5UZXh0KCk7CisgICAgcmV0dXJu
IERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkubWlzc2luZ1BsdWdpblRleHQo
KTsKIH0KIAogU3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNyYXNoZWRQbHVnaW5UZXh0
KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkuY3Jh
c2hlZFBsdWdpblRleHQoKTsKIH0KIAogU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5z
aWduZWQgbnVtYmVyT2ZGaWxlcykKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPm11bHRpcGxlRmlsZVVwbG9hZFRleHQobnVtYmVyT2ZG
aWxlcyk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCku
bXVsdGlwbGVGaWxlVXBsb2FkVGV4dChudW1iZXJPZkZpbGVzKTsKIH0KIAogU3RyaW5nIHVua25v
d25GaWxlU2l6ZVRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+dW5rbm93bkZpbGVTaXplVGV4dCgpOworICAgIHJldHVybiBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLnVua25vd25GaWxlU2l6ZVRleHQo
KTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT51
cGxvYWRGaWxlVGV4dCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OnNoYXJlZCgpLnVwbG9hZEZpbGVUZXh0KCk7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+YWxsRmlsZXNUZXh0KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVn
eTo6c2hhcmVkKCkuYWxsRmlsZXNUZXh0KCk7CiB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykKIFN0cmluZyBrZXlnZW5NZW51SXRlbTUxMigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5rZXlnZW5NZW51SXRlbTUxMigpOwor
ICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLmtleWdlbk1l
bnVJdGVtNTEyKCk7CiB9CiAKIFN0cmluZyBrZXlnZW5NZW51SXRlbTEwMjQoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+a2V5Z2Vu
TWVudUl0ZW0xMDI0KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6
c2hhcmVkKCkua2V5Z2VuTWVudUl0ZW0xMDI0KCk7CiB9CiAKIFN0cmluZyBrZXlnZW5NZW51SXRl
bTIwNDgoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+a2V5Z2VuTWVudUl0ZW0yMDQ4KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkua2V5Z2VuTWVudUl0ZW0yMDQ4KCk7CiB9CiAKIFN0
cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmtleWdl
bktleWNoYWluSXRlbU5hbWUoaG9zdCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25T
dHJhdGVneTo6c2hhcmVkKCkua2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShob3N0KTsKIH0KIAogI2Vu
ZGlmCiAKIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5pbWFnZVRpdGxlKGZpbGVuYW1lLCBzaXplKTsKKyAgICByZXR1cm4g
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS5pbWFnZVRpdGxlKGZpbGVuYW1l
LCBzaXplKTsKIH0KIAogU3RyaW5nIG1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQogewot
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
bWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxp
emF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLm1lZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKTsK
IH0KIAogU3RyaW5nIG1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0ZVRleHQoKQogewotICAg
IHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bWVk
aWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpOworICAgIHJldHVybiBEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLm1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0
ZVRleHQoKTsKIH0KIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmco
Y29uc3QgU3RyaW5nJiBjb250cm9sTmFtZSkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRTdHJpbmcoY29udHJvbE5hbWUpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3Ry
YXRlZ3k6OnNoYXJlZCgpLmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRTdHJpbmcoY29udHJv
bE5hbWUpOwogfQogCiBTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0
KGNvbnN0IFN0cmluZyYgY29udHJvbE5hbWUpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5sb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVt
ZW50SGVscFRleHQoY29udHJvbE5hbWUpOworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OnNoYXJlZCgpLmxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChj
b250cm9sTmFtZSk7CiB9CiAKIFN0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihm
bG9hdCB0aW1lKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24odGltZSk7CisgICAg
cmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkubG9jYWxpemVkTWVk
aWFUaW1lRGVzY3JpcHRpb24odGltZSk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ1RleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7
CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkudmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ0ZvckNoZWNrYm94VGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0KIAogU3Ry
aW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yRmlsZVRleHQoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneTo6c2hhcmVkKCkudmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0
KCk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zvck11bHRpcGxl
RmlsZVRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAg
cmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkudmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CiB9CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ0ZvclJhZGlvVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2lu
Z1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQo
KS52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0KIAogU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yU2VsZWN0VGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0K
IAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0
aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXph
dGlvblN0cmF0ZWd5OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQo
KTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxUZXh0
KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOworICAgIHJldHVybiBE
ZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLnZhbGlkYXRpb25NZXNzYWdlVHlw
ZU1pc21hdGNoVGV4dCgpOwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0
Y2hGb3JNdWx0aXBsZUVtYWlsVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRj
aFRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQo
KS52YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKIH0KIAogU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2Fn
ZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKIH0KIAog
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0
aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRj
aFRleHQoKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBp
bnQpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KCk7CisgICAgcmV0dXJuIERlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkudmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25n
VGV4dCgpOwogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCk7
CisgICAgcmV0dXJuIERlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTo6c2hhcmVkKCkudmFsaWRh
dGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoKTsKIH0KIAogU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNz
YWdlUmFuZ2VPdmVyZmxvd1RleHQoKTsKKyAgICByZXR1cm4gRGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5OjpzaGFyZWQoKS52YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCk7CiB9
CiAKIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgp
OworICAgIHJldHVybiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6OnNoYXJlZCgpLnZhbGlk
YXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dCgpOwogfQogCiAjZW5kaWYgLy8gVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95219</attachid>
            <date>2011-05-27 14:57:28 -0700</date>
            <delta_ts>2011-05-27 15:11:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61670-20110527145726.patch</filename>
            <type>text/plain</type>
            <size>37603</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQ1IEBACisyMDExLTA1LTI3ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWx3YXlzIHVzZSB0aGUgZGVmYXVsdCBsb2NhbGl6YXRp
b24gc3RyYXRlZ3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxNjcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTE2MTMwPgorCisgICAgICAgIEFs
d2F5cyB1c2UgdGhlIGRlZmF1bHQgbG9jYWxpemF0aW9uIHN0cmF0ZWd5IHdoZW4gdGhlcmUncyBu
byBwbGF0Zm9ybSBzdHJhdGVneS4KKworICAgICAgICAqIHBsYXRmb3JtL0RlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3k6OnNoYXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vRGVmYXVsdExvY2FsaXphdGlv
blN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjppbnB1dEVsZW1lbnRBbHRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OnNlYXJjaGFibGVJ
bmRleEludHJvZHVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzdWJtaXRCdXR0b25EZWZhdWx0
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCk6CisgICAgICAg
IChXZWJDb3JlOjpkZWZhdWx0RGV0YWlsc1N1bW1hcnlUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVVybFRvQ2xpcGJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51
SXRlbVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdT
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnU2VsZWN0QWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ05v
R3Vlc3Nlc0ZvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZVNwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3Bl
bGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90
bGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluayk6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
eHRNZW51SXRlbVRhZ0JvbGQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFn
SXRhbGljKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1N0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ1NwZWVjaE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnU3RhcnRTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdT
dG9wU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnV3JpdGlu
Z0RpcmVjdGlvbk1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnRGVm
YXVsdERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVm
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdB
dXRvbWF0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1N1YnN0
aXR1dGlvbnNNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dT
dWJzdGl0dXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
Q29weVBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVv
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdPcGVuQXVkaW9Jbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hNZW51Tm9S
ZWNlbnRTZWFyY2hlc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6c2VhcmNoTWVudVJlY2VudFNl
YXJjaGVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpzZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFy
Y2hlc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVhXZWJBcmVhVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWExpbmtUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYTGlzdE1hcmtlclRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJbWFnZU1hcFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
QVhIZWFkaW5nVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWERlZmluaXRpb25MaXN0VGVybVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYQVJJQUNvbnRlbnRHcm91cFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhCdXR0b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYUmFkaW9CdXR0
b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYik6
CisgICAgICAgIChXZWJDb3JlOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhMaW5rQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3JlOjpBWE1lbnVMaXN0UG9w
dXBBY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYTWVudUxpc3RBY3Rpb25WZXJiKToK
KyAgICAgICAgKFdlYkNvcmU6Om1pc3NpbmdQbHVnaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OmNyYXNoZWRQbHVnaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Om11bHRpcGxlRmlsZVVwbG9h
ZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dW5rbm93bkZpbGVTaXplVGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjp1cGxvYWRGaWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjphbGxGaWxlc1Rl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6a2V5Z2VuTWVudUl0ZW01MTIpOgorICAgICAgICAoV2Vi
Q29yZTo6a2V5Z2VuTWVudUl0ZW0xMDI0KToKKyAgICAgICAgKFdlYkNvcmU6OmtleWdlbk1lbnVJ
dGVtMjA0OCk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFFbGVt
ZW50TG9hZGluZ1N0YXRlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjptZWRpYUVsZW1lbnRMaXZl
QnJvYWRjYXN0U3RhdGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZE1lZGlhQ29u
dHJvbEVsZW1lbnRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6bG9jYWxpemVkTWVkaWFDb250
cm9sRWxlbWVudEhlbHBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplZE1lZGlhVGlt
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVmFsdWVN
aXNzaW5nVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlz
c2luZ0ZvckNoZWNrYm94VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclJhZGlvVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yTXVsdGlw
bGVFbWFpbFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlz
bWF0Y2hGb3JVUkxUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUGF0
dGVybk1pc21hdGNoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0aW9uTWVzc2FnZVRv
b0xvbmdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRl
cmZsb3dUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVy
Zmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0
Y2hUZXh0KToKKwogMjAxMS0wNS0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneS5jcHAJ
KHJldmlzaW9uIDg3NTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsMTIgQEAgc3Rh
dGljIFN0cmluZyB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZQogfQogI2VuZGlmCiAKK0RlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneSYgRGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5OjpzaGFy
ZWQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5LCBkZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3ksICgpKTsKKyAgICByZXR1cm4gZGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5OworfQorCiBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3k6
OkRlZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneSgpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kuaAkocmV2
aXNpb24gODc1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWZhdWx0TG9jYWxpemF0
aW9uU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQCBjbGFzcyBEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kgOiBwdWJsCiBwdWJsaWM6CiAgICAgRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5KCk7CiAKLXByaXZhdGU6CisgICAgc3RhdGljIERlZmF1bHRMb2NhbGl6
YXRpb25TdHJhdGVneSYgc2hhcmVkKCk7CisKICAgICB2aXJ0dWFsIFN0cmluZyBpbnB1dEVsZW1l
bnRBbHRUZXh0KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwo
KTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZp
c2lvbiA4NzU0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogCisjaW5jbHVkZSAiRGVmYXVsdExvY2Fs
aXphdGlvblN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkxvY2Fs
aXphdGlvblN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIApAQCAtMzYsNjY1ICszNiw2NzMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAKK3N0YXRpYyBpbmxp
bmUgTG9jYWxpemF0aW9uU3RyYXRlZ3kqIGxvY2FsaXphdGlvblN0cmF0ZWd5KCkKK3sKKyAgICBp
ZiAoaGFzUGxhdGZvcm1TdHJhdGVnaWVzKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKTsKKworICAgIHJldHVybiAmRGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5OjpzaGFyZWQoKTsKK30KKwogU3RyaW5nIGlucHV0RWxlbWVudEFs
dFRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+aW5wdXRFbGVtZW50QWx0VGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5pbnB1dEVsZW1lbnRBbHRUZXh0KCk7CiB9CiAKIFN0cmluZyByZXNldEJ1
dHRvbkRlZmF1bHRMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5yZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpOworICAgIHJl
dHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5yZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpOwog
fQogCiBTdHJpbmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCkKIHsKLSAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnNlYXJjaGFibGVJ
bmRleEludHJvZHVjdGlvbigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5z
ZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKTsKIH0KIAogU3RyaW5nIHN1Ym1pdEJ1dHRvbkRl
ZmF1bHRMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5zdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwoKTsKKyAgICByZXR1cm4g
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+c3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCk7CiB9CiAK
IFN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmZpbGVCdXR0b25DaG9vc2VG
aWxlTGFiZWwoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+ZmlsZUJ1dHRv
bkNob29zZUZpbGVMYWJlbCgpOwogfQogCiBTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVk
TGFiZWwoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+ZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsKKyAgICByZXR1cm4g
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+ZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKTsK
IH0KIAogU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQogewotICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+ZGVmYXVsdERldGFp
bHNTdW1tYXJ5VGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5kZWZh
dWx0RGV0YWlsc1N1bW1hcnlUZXh0KCk7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCiBTdHJpbmcg
Y29weUltYWdlVW5rbm93bkZpbGVMYWJlbCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVs
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvcHlJbWFnZVVua25vd25G
aWxlTGFiZWwoKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpCiB7Ci0gICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3coKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCk7CiB9CiAK
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRl
eHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpOwog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQogewot
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKTsKKyAgICByZXR1cm4gbG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5k
b3coKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2so
KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpOworICAgIHJldHVy
biBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdl
VG9EaXNrKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBi
b2FyZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpOworICAg
IHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1h
Z2VUb0NsaXBib2FyZCgpOwogfQogCiAjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEdUSykK
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5j
b250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0NsaXBib2FyZCgpOworICAgIHJldHVybiBs
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VVcmxUb0Ns
aXBib2FyZCgpOwogfQogI2VuZGlmCiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJh
bWVJbk5ld1dpbmRvdygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Nh
bGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRv
dygpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29weSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDb3B5KCk7CisgICAgcmV0dXJuIGxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKTsK
KyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnR29C
YWNrKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQogewotICAg
IHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29u
dGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU3RvcCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTdG9wKCk7CisgICAgcmV0
dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKTsKIH0K
IAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdSZWxvYWQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnUmVsb2FkKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnQ3V0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0N1dCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnUGFzdGUoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxp
emF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKTsKKyAgICByZXR1cm4g
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKTsKIH0KIAog
I2lmIFBMQVRGT1JNKFFUKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCgpCiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdTZWxlY3RBbGwoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCk7CiB9CiAjZW5kaWYKIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKIHsKLSAgICByZXR1cm4g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPmNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCk7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdJZ25v
cmVTcGVsbGluZygpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnTGVhcm5TcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCk7
CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0xl
YXJuU3BlbGxpbmcoKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJ
blNwb3RsaWdodCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCgpOwogfQogI2VuZGlmCiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2Vi
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z1NlYXJjaFdlYigpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdMb29rVXBJbkRpY3Rpb25hcnkoc2VsZWN0ZWRTdHJpbmcpOworICAgIHJldHVybiBsb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoc2Vs
ZWN0ZWRTdHJpbmcpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnSWdu
b3JlR3JhbW1hcigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCk7Cisg
ICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NwZWxs
aW5nTWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFu
ZWwoYm9vbCBzaG93KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxp
emF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoc2hv
dyk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z1Nob3dTcGVsbGluZ1BhbmVsKHNob3cpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Nh
bGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKCk7Cisg
ICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
U3BlbGxpbmcoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdX
aGlsZVR5cGluZygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBp
bmcoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVt
VGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tHcmFtbWFyV2l0aFNwZWxsaW5nKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpOwogfQogCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFn
Rm9udE1lbnUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnRm9udE1lbnUoKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRz
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z1Nob3dGb250cygpOwogfQogI2VuZGlmCiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xk
KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQm9sZCgpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnSXRhbGljKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpOworICAg
IHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMo
KTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdVbmRlcmxpbmUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPdXRsaW5lKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKTsKKyAgICBy
ZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgp
OwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0eWxl
cygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCk7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nob3dD
b2xvcnMoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJ
dGVtVGFnU2hvd0NvbG9ycygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlZWNo
TWVudSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCk7CisgICAgcmV0dXJuIGxv
Y2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnUoKTsKIH0K
IAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmcoKQogewotICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnU3RhcnRTcGVha2luZygpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nKCk7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNw
ZWFraW5nKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51
SXRlbVRhZ1N0b3BTcGVha2luZygpOwogfQogI2VuZGlmCiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdXcml0aW5n
RGlyZWN0aW9uTWVudSgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250
ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVs
dERpcmVjdGlvbigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMZWZ0VG9SaWdodCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpOwor
ICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKTsKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGlu
Z0F1dG9tYXRpY2FsbHkoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0
b21hdGljYWxseSgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCk7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1U
YWdTdWJzdGl0dXRpb25zTWVudSgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudSgpOwogfQogCiBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoYm9vbCBzaG93KQogewotICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1l
bnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnMoc2hvdyk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKHNob3cpOwog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4
dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUoKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0UXVvdGVzKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRN
ZW51SXRlbVRhZ1NtYXJ0UXVvdGVzKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
bWFydERhc2hlcygpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6
YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlcygpOworICAgIHJl
dHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hl
cygpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCiB7Ci0gICAg
cmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250
ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MoKTsKIH0KIAogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdUZXh0
UmVwbGFjZW1lbnQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9y
bWF0aW9uc01lbnUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4
dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSgpOwogfQogCiBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJD
YXNlKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRl
bVRhZ01ha2VVcHBlckNhc2UoKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VM
b3dlckNhc2UoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZSgpOworICAgIHJl
dHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJD
YXNlKCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKIHsKLSAg
ICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNv
bnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSgpOwogfQogCiBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQog
ewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayhyZXBsYWNlZFN0cmluZyk7CisgICAgcmV0
dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2so
cmVwbGFjZWRTdHJpbmcpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQogewotICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJ
dGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRl
eHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCk7CisgICAgcmV0dXJuIGxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCk7
CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQo
KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+Y29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJvYXJkKCk7CisgICAg
cmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlWaWRl
b0xpbmtUb0NsaXBib2FyZCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1
ZGlvTGlua1RvQ2xpcGJvYXJkKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ0NvcHlBdWRpb0xpbmtU
b0NsaXBib2FyZCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKTsKIH0KIAogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQogewotICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFn
VG9nZ2xlTWVkaWFDb250cm9scygpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5jb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzKCk7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKQogewotICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFn
VG9nZ2xlTWVkaWFMb29wKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNv
bnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpOwogfQogCiBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnRW50
ZXJWaWRlb0Z1bGxzY3JlZW4oKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
Y29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBs
YXkoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVt
VGFnTWVkaWFQbGF5KCk7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNl
KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPmNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKTsKKyAgICByZXR1cm4gbG9jYWxp
emF0aW9uU3RyYXRlZ3koKS0+Y29udGV4dE1lbnVJdGVtVGFnTWVkaWFQYXVzZSgpOwogfQogCiBT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNvbnRleHRNZW51SXRlbVRh
Z01lZGlhTXV0ZSgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0
TWVudUl0ZW1UYWdNZWRpYU11dGUoKTsKIH0KICAgICAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdJbnNwZWN0RWxlbWVudCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgp
OworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5jb250ZXh0TWVudUl0ZW1UYWdJ
bnNwZWN0RWxlbWVudCgpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAK
IFN0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQogewotICAgIHJldHVybiBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+c2VhcmNoTWVudU5v
UmVjZW50U2VhcmNoZXNUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PnNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpOwogfQogCiBTdHJpbmcgc2VhcmNoTWVu
dVJlY2VudFNlYXJjaGVzVGV4dCAoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCAo
KTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+c2VhcmNoTWVudVJlY2VudFNl
YXJjaGVzVGV4dCAoKTsKIH0KIAogU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVz
VGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5zZWFyY2hNZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKTsKKyAgICByZXR1
cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+c2VhcmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNU
ZXh0KCk7CiB9CiAKIFN0cmluZyBBWFdlYkFyZWFUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYV2ViQXJlYVRleHQoKTsK
KyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhXZWJBcmVhVGV4dCgpOwogfQog
CiBTdHJpbmcgQVhMaW5rVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWExpbmtUZXh0KCk7CisgICAgcmV0dXJuIGxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPkFYTGlua1RleHQoKTsKIH0KIAogU3RyaW5nIEFYTGlzdE1hcmtl
clRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9u
U3RyYXRlZ3koKS0+QVhMaXN0TWFya2VyVGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25T
dHJhdGVneSgpLT5BWExpc3RNYXJrZXJUZXh0KCk7CiB9CiAKIFN0cmluZyBBWEltYWdlTWFwVGV4
dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5BWEltYWdlTWFwVGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVn
eSgpLT5BWEltYWdlTWFwVGV4dCgpOwogfQogCiBTdHJpbmcgQVhIZWFkaW5nVGV4dCgpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5B
WEhlYWRpbmdUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYSGVh
ZGluZ1RleHQoKTsKIH0KIAogU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5B
WERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCk7CiB9CiAKIFN0cmluZyBBWERlZmluaXRp
b25MaXN0RGVmaW5pdGlvblRleHQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYRGVmaW5pdGlvbkxpc3RE
ZWZpbml0aW9uVGV4dCgpOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQogU3RyaW5nIEFYQVJJQUNv
bnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlhVHlwZSkKIHsKLSAgICByZXR1cm4gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYQVJJQUNvbnRlbnRH
cm91cFRleHQoYXJpYVR5cGUpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5B
WEFSSUFDb250ZW50R3JvdXBUZXh0KGFyaWFUeXBlKTsKIH0KICNlbmRpZgogICAgIAogU3RyaW5n
IEFYQnV0dG9uQWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWEJ1dHRvbkFjdGlvblZlcmIoKTsKKyAgICByZXR1
cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhCdXR0b25BY3Rpb25WZXJiKCk7CiB9CiAKIFN0
cmluZyBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWFJhZGlvQnV0dG9uQWN0aW9uVmVy
YigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWFJhZGlvQnV0dG9uQWN0
aW9uVmVyYigpOwogfQogCiBTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPkFYVGV4
dEZpZWxkQWN0aW9uVmVyYigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5B
WFRleHRGaWVsZEFjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYQ2hlY2tlZENoZWNrQm94QWN0
aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5BWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKKyAgICByZXR1cm4g
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+QVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCk7CiB9
CiAKIFN0cmluZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJu
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWFVuY2hlY2tl
ZENoZWNrQm94QWN0aW9uVmVyYigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgp
LT5BWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpOwogfQogCiBTdHJpbmcgQVhMaW5rQWN0
aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5BWExpbmtBY3Rpb25WZXJiKCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPkFYTGlua0FjdGlvblZlcmIoKTsKIH0KIAogU3RyaW5nIEFYTWVudUxpc3RQ
b3B1cEFjdGlvblZlcmIoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+QVhNZW51TGlzdFBvcHVwQWN0aW9uVmVyYigpOworICAgIHJl
dHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCk7
CiB9CiAKIFN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWE1lbnVMaXN0QWN0aW9u
VmVyYigpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5BWE1lbnVMaXN0QWN0
aW9uVmVyYigpOwogfQogCiBTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQogewotICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bWlzc2luZ1Bs
dWdpblRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bWlzc2luZ1Bs
dWdpblRleHQoKTsKIH0KIAogU3RyaW5nIGNyYXNoZWRQbHVnaW5UZXh0KCkKIHsKLSAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNyYXNoZWRQ
bHVnaW5UZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmNyYXNoZWRQ
bHVnaW5UZXh0KCk7CiB9CiAKIFN0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVk
IG51bWJlck9mRmlsZXMpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2Nh
bGl6YXRpb25TdHJhdGVneSgpLT5tdWx0aXBsZUZpbGVVcGxvYWRUZXh0KG51bWJlck9mRmlsZXMp
OworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5tdWx0aXBsZUZpbGVVcGxvYWRU
ZXh0KG51bWJlck9mRmlsZXMpOwogfQogCiBTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpCiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT51bmtub3duRmlsZVNpemVUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5
KCktPnVua25vd25GaWxlU2l6ZVRleHQoKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKIFN0cmlu
ZyB1cGxvYWRGaWxlVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT51cGxvYWRGaWxlVGV4dCgpOworICAgIHJldHVybiBsb2Nh
bGl6YXRpb25TdHJhdGVneSgpLT51cGxvYWRGaWxlVGV4dCgpOwogfQogCiBTdHJpbmcgYWxsRmls
ZXNUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPmFsbEZpbGVzVGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJh
dGVneSgpLT5hbGxGaWxlc1RleHQoKTsKIH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQog
U3RyaW5nIGtleWdlbk1lbnVJdGVtNTEyKCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmtleWdlbk1lbnVJdGVtNTEyKCk7CisgICAg
cmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmtleWdlbk1lbnVJdGVtNTEyKCk7CiB9CiAK
IFN0cmluZyBrZXlnZW5NZW51SXRlbTEwMjQoKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+a2V5Z2VuTWVudUl0ZW0xMDI0KCk7Cisg
ICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmtleWdlbk1lbnVJdGVtMTAyNCgpOwog
fQogCiBTdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIHsKLSAgICByZXR1cm4gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmtleWdlbk1lbnVJdGVtMjA0OCgp
OworICAgIHJldHVybiBsb2NhbGl6YXRpb25TdHJhdGVneSgpLT5rZXlnZW5NZW51SXRlbTIwNDgo
KTsKIH0KIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3RyaW5nJiBob3N0
KQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShob3N0KTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShob3N0KTsKIH0KIAogI2VuZGlm
CiAKIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5pbWFnZVRpdGxlKGZpbGVuYW1lLCBzaXplKTsKKyAgICByZXR1cm4gbG9j
YWxpemF0aW9uU3RyYXRlZ3koKS0+aW1hZ2VUaXRsZShmaWxlbmFtZSwgc2l6ZSk7CiB9CiAKIFN0
cmluZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkKIHsKLSAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPm1lZGlhRWxlbWVudExvYWRp
bmdTdGF0ZVRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bWVkaWFF
bGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpOwogfQogCiBTdHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJy
b2FkY2FzdFN0YXRlVGV4dCgpCiB7Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5s
b2NhbGl6YXRpb25TdHJhdGVneSgpLT5tZWRpYUVsZW1lbnRMaXZlQnJvYWRjYXN0U3RhdGVUZXh0
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPm1lZGlhRWxlbWVudExpdmVC
cm9hZGNhc3RTdGF0ZVRleHQoKTsKIH0KIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVs
ZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJiBjb250cm9sTmFtZSkKIHsKLSAgICByZXR1cm4gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPmxvY2FsaXplZE1lZGlh
Q29udHJvbEVsZW1lbnRTdHJpbmcoY29udHJvbE5hbWUpOworICAgIHJldHVybiBsb2NhbGl6YXRp
b25TdHJhdGVneSgpLT5sb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnRyb2xO
YW1lKTsKIH0KIAogU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRIZWxwVGV4dChj
b25zdCBTdHJpbmcmIGNvbnRyb2xOYW1lKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVu
dEhlbHBUZXh0KGNvbnRyb2xOYW1lKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRlZ3ko
KS0+bG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhlbHBUZXh0KGNvbnRyb2xOYW1lKTsKIH0K
IAogU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0IHRpbWUpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT5s
b2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbih0aW1lKTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+bG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24odGltZSk7CiB9CiAK
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQogewotICAgIHJldHVy
biBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0
ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQogCiBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JDaGVja2JveFRleHQoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQogCiBTdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JGaWxlVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0
aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CiB9CiAKIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zvck11bHRpcGxlRmlsZVRleHQoKQogewot
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQog
CiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JSYWRpb1RleHQoKQogewot
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXph
dGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQog
CiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCkKIHsK
LSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PnZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6
YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0K
IAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0
aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7CiB9CiAKIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvckVtYWlsVGV4dCgpCiB7Ci0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52YWxpZGF0
aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3Ry
YXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7CiB9CiAKIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWxUZXh0KCkKIHsK
LSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCkt
PnZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOworICAgIHJldHVybiBsb2NhbGl6
YXRpb25TdHJhdGVneSgpLT52YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKIH0K
IAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4dCgpCiB7Ci0g
ICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgpLT52
YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0
aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7CiB9CiAK
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQogewotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRh
dGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlv
blN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwogfQog
CiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCkKIHsKLSAgICBy
ZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlk
YXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoKTsKKyAgICByZXR1cm4gbG9jYWxpemF0aW9uU3RyYXRl
Z3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dCgpOwogfQogCiBTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRp
b25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0
cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KCk7CiB9CiAKIFN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2NhbGl6YXRpb25TdHJhdGVneSgp
LT52YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KCk7CisgICAgcmV0dXJuIGxvY2Fs
aXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoKTsK
IH0KIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9jYWxpemF0aW9uU3RyYXRlZ3koKS0+dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0
KCk7CisgICAgcmV0dXJuIGxvY2FsaXphdGlvblN0cmF0ZWd5KCktPnZhbGlkYXRpb25NZXNzYWdl
U3RlcE1pc21hdGNoVGV4dCgpOwogfQogCiAjZW5kaWYgLy8gVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAJKHJldmlzaW9uIDg3NTQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsMTEgQEAgdm9pZCBz
ZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoUGxhdGZvcm1TdHJhdAogICAgIEFTU0VSVChwbGF0Zm9ybVN0
cmF0ZWdpZXMgIT0gc19wbGF0Zm9ybVN0cmF0ZWdpZXMpOwogfQogCitib29sIGhhc1BsYXRmb3Jt
U3RyYXRlZ2llcygpCit7CisgICAgcmV0dXJuIHNfcGxhdGZvcm1TdHJhdGVnaWVzOworfQorCiBM
b2NhbGl6YXRpb25TdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVMb2NhbGl6YXRp
b25TdHJhdGVneSgpCiB7CiAgICAgcmV0dXJuIG5ldyBEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRl
Z3k7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMu
aAkocmV2aXNpb24gODc1NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogCiBQ
bGF0Zm9ybVN0cmF0ZWdpZXMqIHBsYXRmb3JtU3RyYXRlZ2llcygpOwogdm9pZCBzZXRQbGF0Zm9y
bVN0cmF0ZWdpZXMoUGxhdGZvcm1TdHJhdGVnaWVzKik7Citib29sIGhhc1BsYXRmb3JtU3RyYXRl
Z2llcygpOwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>
<flag name="review"
          id="88672"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>