<?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>52228</bug_id>
          
          <creation_ts>2011-01-11 11:28:57 -0800</creation_ts>
          <short_desc>Rename BackingStore to ShareableBitmap</short_desc>
          <delta_ts>2011-01-11 12:27:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332482</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-11 11:28:57 -0800</bug_when>
    <thetext>Rename BackingStore to ShareableBitmap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332484</commentid>
    <comment_count>1</comment_count>
      <attachid>78563</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-11 11:30:05 -0800</bug_when>
    <thetext>Created attachment 78563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332487</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 11:32:24 -0800</bug_when>
    <thetext>Attachment 78563 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit2/ChangeLog&apos;, u&apos;WebKit2/GNUmakefile....&quot; exit_code: 1
WebKit2/Shared/WebImage.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332498</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-11 11:47:44 -0800</bug_when>
    <thetext>Attachment 78563 did not build on win:
Build output: http://queues.webkit.org/results/7479019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332526</commentid>
    <comment_count>4</comment_count>
      <attachid>78563</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-11 12:09:39 -0800</bug_when>
    <thetext>Comment on attachment 78563
Patch

r+ with the windows fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332531</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-11 12:13:27 -0800</bug_when>
    <thetext>Committed r75527: &lt;http://trac.webkit.org/changeset/75527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332552</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 12:27:18 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75527 might have broken Windows Release (Build) and Windows Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78563</attachid>
            <date>2011-01-11 11:30:05 -0800</date>
            <delta_ts>2011-01-11 12:09:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52228-20110111113004.patch</filename>
            <type>text/plain</type>
            <size>80549</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTUyMCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTEtMDEtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW5hbWUgQmFja2luZ1N0b3JlIHRvIFNoYXJlYWJsZUJpdG1hcAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIyMjgKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpnZW9tZXRyeURp
ZENoYW5nZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcDoKKyAgICAgICAgKFdL
SW1hZ2VDcmVhdGVDR0ltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvQmFja2luZ1N0b3JlLmNwcDog
UmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvQmFja2luZ1N0b3JlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6
IENvcGllZCBmcm9tIFdlYktpdDIvU2hhcmVkL0JhY2tpbmdTdG9yZS5jcHAuCisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpT
aGFyZWFibGVCaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6On5TaGFy
ZWFibGVCaXRtYXApOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnJlc2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6ZGF0YSk6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oOiBDb3BpZWQgZnJvbSBXZWJLaXQyL1NoYXJlZC9CYWNraW5n
U3RvcmUuaC4KKyAgICAgICAgKiBTaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaDoKKyAgICAgICAg
KFdlYktpdDo6VXNlck1lc3NhZ2VFbmNvZGVyOjpiYXNlRW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6VXNlck1lc3NhZ2VEZWNvZGVyOjpiYXNlRGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW1hZ2U6OldlYkltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6
On5XZWJJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpzaXplKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViSW1hZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2U6OmJpdG1hcCk6
CisgICAgICAgICogU2hhcmVkL2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBTaGFyZWQvY2cv
QmFja2luZ1N0b3JlQ0cuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHA6IENvcGllZCBmcm9tIFdlYktpdDIvU2hhcmVkL2NnL0JhY2tpbmdTdG9y
ZUNHLmNwcC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0JhY2tpbmdTdG9yZUd0ay5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogU2hhcmVkL2d0ay9TaGFyZWFibGVCaXRtYXBHdGsuY3BwOiBDb3BpZWQgZnJvbSBXZWJLaXQy
L1NoYXJlZC9ndGsvQmFja2luZ1N0b3JlR3RrLmNwcC4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBTaGFyZWQvcXQvQmFja2luZ1N0b3JlUXQu
Y3BwOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHA6
IENvcGllZCBmcm9tIFdlYktpdDIvU2hhcmVkL3F0L0JhY2tpbmdTdG9yZVF0LmNwcC4KKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OnBhaW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRmluZEluZGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6OkZpbmRJbmRpY2F0b3IpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJLaXQ6OkZp
bmRJbmRpY2F0b3I6OmNvbnRlbnRJbWFnZSk6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5OjpnZW9tZXRyeURpZENoYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0
b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3RJblZpZXdDb29yZGluYXRlcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKToKKyAgICAgICAg
KiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTEtMDEtMTEgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiA3NTUxMSkKKysrIFdlYktpdDIvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw4ICsxNTIsOCBAQCBsaWJXZWJLaXQyX2xhX1NPVVJDRVMgPSBc
CiAJV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIFwKIAlX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5oIFwKIAlXZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaCBcCi0JV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmNwcCBc
Ci0JV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmggXAorCVdlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5jcHAgXAorCVdlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIFwKIAlX
ZWJLaXQyL1NoYXJlZC9DYWNoZU1vZGVsLmggXAogCVdlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5jcHAgXAogCVdlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwKQEAgLTE2Niw3ICsxNjYs
NyBAQCBsaWJXZWJLaXQyX2xhX1NPVVJDRVMgPSBcCiAJV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1
cHBvcnQvV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmggXAogCVdlYktpdDIvU2hhcmVkL0Ry
YXdpbmdBcmVhSW5mby5oIFwKIAlXZWJLaXQyL1NoYXJlZC9Gb250U21vb3RoaW5nTGV2ZWwuaCBc
Ci0JV2ViS2l0Mi9TaGFyZWQvZ3RrL0JhY2tpbmdTdG9yZUd0ay5jcHAgXAorCVdlYktpdDIvU2hh
cmVkL2d0ay9TaGFyZWFibGVCaXRtYXBHdGsuY3BwIFwKIAlXZWJLaXQyL1NoYXJlZC9ndGsvUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCBcCiAJV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNvcmVBcmd1
bWVudENvZGVyc0d0ay5jcHAgXAogCVdlYktpdDIvU2hhcmVkL0ltYWdlT3B0aW9ucy5oIFwKSW5k
ZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBy
bwkocmV2aXNpb24gNzU1MTEpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTIsNyArMjUyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0FQSS9jL1dLVVJM
UmVxdWVzdC5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5oIFwKICAgICBTaGFy
ZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCi0gICAgU2hhcmVkL0JhY2tpbmdT
dG9yZS5oIFwKKyAgICBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmggXAogICAgIFNoYXJlZC9DYWNo
ZU1vZGVsLmggXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L0RyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggXApAQCAtNDg0LDcgKzQ4NCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAgXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNw
cCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxl
WDExLmNwcCBcCi0gICAgU2hhcmVkL0JhY2tpbmdTdG9yZS5jcHAgXAorICAgIFNoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwIFwKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCiAgICAgU2hh
cmVkL0ltbXV0YWJsZUFycmF5LmNwcCBcCiAgICAgU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnku
Y3BwIFwKQEAgLTUxNSw3ICs1MTUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViVVJM
UmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXAogICAgIFNoYXJl
ZC9XZWJXaGVlbEV2ZW50LmNwcCBcCi0gICAgU2hhcmVkL3F0L0JhY2tpbmdTdG9yZVF0LmNwcCBc
CisgICAgU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L0Ns
ZWFudXBIYW5kbGVyLmNwcCBcCiAgICAgU2hhcmVkL3F0L05hdGl2ZVdlYktleWJvYXJkRXZlbnRR
dC5jcHAgXAogICAgIFNoYXJlZC9xdC9VcGRhdGVDaHVuay5jcHAgXApJbmRleDogV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHJldmlzaW9uIDc1
NTExKQorKysgV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIlBsdWdpbkNvbnRy
b2xsZXJQcm94eS5oIgogCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiRGF0
YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk5QT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlICJOUFJl
bW90ZU9iamVjdE1hcC5oIgpAQCAtMzYsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHNjYXBlUGx1
Z2luLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlBsdWdpblByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC0yOTgsNyArMjk4LDcgQEAg
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Omdlb21ldHJ5RGlkQwogCiAgICAgaWYgKCFiYWNr
aW5nU3RvcmVIYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJhY2tp
bmcgc3RvcmUuCi0gICAgICAgIG1fYmFja2luZ1N0b3JlID0gQmFja2luZ1N0b3JlOjpjcmVhdGUo
ZnJhbWVSZWN0LnNpemUoKSwgYmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICAgICAgbV9iYWNraW5n
U3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShmcmFtZVJlY3Quc2l6ZSgpLCBiYWNraW5n
U3RvcmVIYW5kbGUpOwogICAgIH0KIAogICAgIG1fcGx1Z2luLT5nZW9tZXRyeURpZENoYW5nZShm
cmFtZVJlY3QsIGNsaXBSZWN0KTsKSW5kZXg6IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgJKHJldmlzaW9uIDc1NTExKQorKysgV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0
Nyw3IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IEJhY2tpbmdTdG9yZTsKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIFdlYlByb2Nlc3ND
b25uZWN0aW9uOwogCiBjbGFzcyBQbHVnaW5Db250cm9sbGVyUHJveHkgOiBQbHVnaW5Db250cm9s
bGVyIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgCiAgICAgLy8g
VGhlIGJhY2tpbmcgc3RvcmUgdGhhdCB0aGlzIHBsdWctaW4gZHJhd3MgaW50by4KLSAgICBSZWZQ
dHI8QmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBtX2JhY2tpbmdTdG9yZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
V2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9CYWNraW5nU3RvcmUuY3BwCShyZXZpc2lvbiA3NTUxOCkKKysrIFdlYktpdDIvU2hhcmVk
L0JhY2tpbmdTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCi0KLSNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8QmFja2lu
Z1N0b3JlPiBCYWNraW5nU3RvcmU6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXpl
KQotewotICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKLSAgICAK
LSAgICB2b2lkKiBkYXRhID0gMDsKLSAgICBpZiAoIXRyeUZhc3RNYWxsb2MobnVtQnl0ZXMpLmdl
dFZhbHVlKGRhdGEpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmFja2luZ1N0b3JlKHNpemUsIGRhdGEpKTsKLX0KLQotUGFzc1JlZlB0cjxCYWNraW5nU3Rv
cmU+IEJhY2tpbmdTdG9yZTo6Y3JlYXRlU2hhcmFibGUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICBzaXplX3QgbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7Ci0gICAgCi0gICAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUo
bnVtQnl0ZXMpOwotICAgIGlmICghc2hhcmVkTWVtb3J5KQotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhY2tpbmdTdG9yZShzaXplLCBzaGFyZWRNZW1v
cnkpKTsKLX0KLQotUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiBoYW5kbGUpCi17Ci0gICAgLy8gQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5LgotICAgIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpSZWFkV3JpdGUpOwotICAgIGlmICghc2hhcmVkTWVtb3J5KQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShz
aXplKTsKLSAgICBBU1NFUlRfVU5VU0VEKG51bUJ5dGVzLCBzaGFyZWRNZW1vcnktPnNpemUoKSA+
PSBudW1CeXRlcyk7Ci0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhY2tpbmdTdG9yZShzaXpl
LCBzaGFyZWRNZW1vcnkpKTsKLX0KLQotYm9vbCBCYWNraW5nU3RvcmU6OmNyZWF0ZUhhbmRsZShT
aGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlKQotewotICAgIEFTU0VSVChpc0JhY2tlZEJ5U2hh
cmVkTWVtb3J5KCkpOwotCi0gICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRXcml0ZSk7Ci19Ci0KLUJhY2tpbmdTdG9yZTo6QmFj
a2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNpemUsIHZvaWQqIGRhdGEpCi0gICAgOiBtX3NpemUo
c2l6ZSkKLSAgICAsIG1fZGF0YShkYXRhKQotewotfQotCi1CYWNraW5nU3RvcmU6OkJhY2tpbmdT
dG9yZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVk
TWVtb3J5KQotICAgIDogbV9zaXplKHNpemUpCi0gICAgLCBtX3NoYXJlZE1lbW9yeShzaGFyZWRN
ZW1vcnkpCi0gICAgLCBtX2RhdGEoMCkKLXsKLX0KLQotQmFja2luZ1N0b3JlOjp+QmFja2luZ1N0
b3JlKCkKLXsKLSAgICBpZiAoIWlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSkKLSAgICAgICAgZmFz
dEZyZWUobV9kYXRhKTsKLX0KLQotYm9vbCBCYWNraW5nU3RvcmU6OnJlc2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQotewotICAgIC8vIFdlIGNhbid0IHJlc2l6ZSBiYWNraW5nIHN0b3JlcyB0aGF0
IGFyZSBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeS4KLSAgICBBU1NFUlQoIWlzQmFja2VkQnlTaGFy
ZWRNZW1vcnkoKSk7Ci0KLSAgICBpZiAoc2l6ZSA9PSBtX3NpemUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgc2l6ZV90IG5ld051bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOwot
ICAgIAotICAgIC8vIFRyeSB0byByZXNpemUuCi0gICAgY2hhciogbmV3RGF0YSA9IDA7Ci0gICAg
aWYgKCF0cnlGYXN0UmVhbGxvYyhtX2RhdGEsIG5ld051bUJ5dGVzKS5nZXRWYWx1ZShuZXdEYXRh
KSkgewotICAgICAgICAvLyBXZSBmYWlsZWQsIGJ1dCB0aGUgYmFja2luZyBzdG9yZSBpcyBzdGls
bCBrZXB0IGluIGEgY29uc2lzdGVudCBzdGF0ZS4KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgbV9kYXRhID0gbmV3RGF0YTsKLQotICAgIHJl
dHVybiB0cnVlOwotfQotCi12b2lkKiBCYWNraW5nU3RvcmU6OmRhdGEoKSBjb25zdAotewotICAg
IGlmIChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpCi0gICAgICAgIHJldHVybiBtX3NoYXJlZE1l
bW9yeS0+ZGF0YSgpOwotCi0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9CYWNraW5n
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9CYWNraW5nU3RvcmUuaAkocmV2
aXNpb24gNzU1MTgpCisrKyBXZWJLaXQyL1NoYXJlZC9CYWNraW5nU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBCYWNraW5nU3RvcmVf
aAotI2RlZmluZSBCYWNraW5nU3RvcmVfaAotCi0jaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCi0j
aW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLSAgICAKLWNsYXNz
IEJhY2tpbmdTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tpbmdTdG9yZT4gewotcHVibGlj
OgotICAgIC8vIENyZWF0ZSBhIGJhY2tpbmcgc3RvcmUgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9y
eS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJik7Ci0KLSAgICAvLyBDcmVhdGUgYSBiYWNraW5nIHN0b3JlIHdob3NlIGJh
Y2tpbmcgbWVtb3J5IGNhbiBiZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QmFja2luZ1N0b3JlPiBjcmVhdGVTaGFyYWJsZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7Ci0KLSAgICAvLyBDcmVhdGUgYSBiYWNraW5nIHN0b3JlIGZyb20gYSBzaGFy
ZWQgbWVtb3J5IGhhbmRsZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUm
KTsKLQotICAgIC8vIENyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgaGFuZGxlLgotICAgIGJvb2wgY3Jl
YXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7Ci0KLSAgICB+QmFja2luZ1N0b3JlKCk7
Ci0KLSAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJD
b3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KLQotICAgIGJvb2wg
cmVzaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOwotCi0gICAgLy8gQ3JlYXRlIGEg
Z3JhcGhpY3MgY29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tp
bmcgc3RvcmUuCi0gICAgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0
ZUdyYXBoaWNzQ29udGV4dCgpOwotCi0gICAgLy8gUGFpbnQgdGhlIGJhY2tpbmcgc3RvcmUgaW50
byB0aGUgZ2l2ZW4gY29udGV4dC4KLSAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCk7Ci0KLSAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBj
b25zdCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeTsgfQotCi1wcml2YXRlOgotICAgIEJhY2tpbmdT
dG9yZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdm9pZCopOwotICAgIEJhY2tpbmdTdG9yZShj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKLQotICAg
IHN0YXRpYyBzaXplX3QgbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpIHsgcmV0dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OyB9Ci0KLSAgICB2
b2lkKiBkYXRhKCkgY29uc3Q7Ci0gICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1
cm4gbnVtQnl0ZXNGb3JTaXplKG1fc2l6ZSk7IH0KLQotICAgIFdlYkNvcmU6OkludFNpemUgbV9z
aXplOwotCi0gICAgLy8gSWYgdGhlIGJhY2tpbmcgc3RvcmUgaXMgYmFja2VkIGJ5IHNoYXJlZCBt
ZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KLSAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKLQotICAgIC8vIElmIHRoZSBiYWNraW5n
IHN0b3JlIGlzIGJhY2tlZCBieSBmYXN0TWFsbG9jZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0
aGUgZGF0YS4KLSAgICB2b2lkKiBtX2RhdGE7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIEJhY2tpbmdTdG9yZV9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1BsYXRmb3Jt
UG9wdXBNZW51RGF0YS5jcHAJKHJldmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBA
IGJvb2wgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoQ29yZUkKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBkLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBCYWNraW5nU3RvcmU6
OmNyZWF0ZShkLm1fYmFja2luZ1N0b3JlU2l6ZSwgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5k
bGUpOworICAgIGQubV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGQubV9iYWNraW5nU3RvcmVTaXplLCBub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRs
ZSk7CiAKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRs
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBC
YWNraW5nU3RvcmU6OmNyZWF0ZShkLm1fYmFja2luZ1N0b3JlU2l6ZSwgc2VsZWN0ZWRCYWNraW5n
U3RvcmVIYW5kbGUpOworICAgIGQubV9zZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGQubV9iYWNraW5nU3RvcmVTaXplLCBzZWxlY3RlZEJhY2tpbmdTdG9yZUhh
bmRsZSk7CiAKICAgICBkYXRhID0gZDsKICNlbmRpZgpJbmRleDogV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmgJKHJldmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
Zm5kZWYgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhX2gKICNkZWZpbmUgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhX2gKIAotI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQ29y
ZUlQQyB7CkBAIC01MCw4ICs1MCw4IEBAIHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEgewog
ICAgIGludCBtX3BvcHVwV2lkdGg7CiAgICAgaW50IG1faXRlbUhlaWdodDsKICAgICBXZWJDb3Jl
OjpJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKLSAgICBSZWZQdHI8QmFja2luZ1N0b3JlPiBt
X25vdFNlbGVjdGVkQmFja2luZ1N0b3JlOwotICAgIFJlZlB0cjxCYWNraW5nU3RvcmU+IG1fc2Vs
ZWN0ZWRCYWNraW5nU3RvcmU7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9ub3RTZWxl
Y3RlZEJhY2tpbmdTdG9yZTsKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3NlbGVjdGVk
QmFja2luZ1N0b3JlOwogI2VuZGlmCiB9OwogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAJKHJldmlzaW9uIDc1NTE4KQkoZnJvbSBXZWJLaXQyL1NoYXJlZC9CYWNraW5nU3RvcmUu
Y3BwOjc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJCYWNraW5n
U3RvcmUuaCIKKworI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IEJhY2tpbmdTdG9yZTo6Y3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCit7CisgICAgc2l6ZV90IG51bUJ5dGVz
ID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIAorICAgIHZvaWQqIGRhdGEgPSAwOworICAg
IGlmICghdHJ5RmFzdE1hbGxvYyhudW1CeXRlcykuZ2V0VmFsdWUoZGF0YSkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNraW5nU3RvcmUoc2l6ZSwgZGF0
YSkpOworfQorCitQYXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gQmFja2luZ1N0b3JlOjpjcmVhdGVT
aGFyYWJsZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIHNpemVfdCBudW1CeXRlcyA9IG51
bUJ5dGVzRm9yU2l6ZShzaXplKTsKKyAgICAKKyAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShudW1CeXRlcyk7CisgICAgaWYgKCFzaGFy
ZWRNZW1vcnkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmFja2luZ1N0b3JlKHNpemUsIHNoYXJlZE1lbW9yeSkpOworfQorCitQYXNzUmVmUHRyPEJh
Y2tpbmdTdG9yZT4gQmFja2luZ1N0b3JlOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSkKK3sKKyAgICAvLyBDcmVh
dGUgdGhlIHNoYXJlZCBtZW1vcnkuCisgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRXcml0
ZSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpCisgICAgICAgIHJldHVybiAwOworCisgICAgc2l6
ZV90IG51bUJ5dGVzID0gbnVtQnl0ZXNGb3JTaXplKHNpemUpOworICAgIEFTU0VSVF9VTlVTRUQo
bnVtQnl0ZXMsIHNoYXJlZE1lbW9yeS0+c2l6ZSgpID49IG51bUJ5dGVzKTsKKworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQmFja2luZ1N0b3JlKHNpemUsIHNoYXJlZE1lbW9yeSkpOworfQorCiti
b29sIEJhY2tpbmdTdG9yZTo6Y3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5k
bGUpCit7CisgICAgQVNTRVJUKGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSk7CisKKyAgICByZXR1
cm4gbV9zaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UmVh
ZFdyaXRlKTsKK30KKworQmFja2luZ1N0b3JlOjpCYWNraW5nU3RvcmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgdm9pZCogZGF0YSkKKyAgICA6IG1fc2l6ZShzaXplKQorICAgICwgbV9kYXRhKGRhdGEp
Cit7Cit9CisKK0JhY2tpbmdTdG9yZTo6QmFja2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNpemUs
IFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCisgICAgOiBtX3NpemUoc2l6
ZSkKKyAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKKyAgICAsIG1fZGF0YSgwKQor
eworfQorCitCYWNraW5nU3RvcmU6On5CYWNraW5nU3RvcmUoKQoreworICAgIGlmICghaXNCYWNr
ZWRCeVNoYXJlZE1lbW9yeSgpKQorICAgICAgICBmYXN0RnJlZShtX2RhdGEpOworfQorCitib29s
IEJhY2tpbmdTdG9yZTo6cmVzaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgLy8gV2Ug
Y2FuJ3QgcmVzaXplIGJhY2tpbmcgc3RvcmVzIHRoYXQgYXJlIGJhY2tlZCBieSBzaGFyZWQgbWVt
b3J5LgorICAgIEFTU0VSVCghaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsKKworICAgIGlmIChz
aXplID09IG1fc2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBzaXplX3QgbmV3TnVt
Qnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7CisgICAgCisgICAgLy8gVHJ5IHRvIHJlc2l6
ZS4KKyAgICBjaGFyKiBuZXdEYXRhID0gMDsKKyAgICBpZiAoIXRyeUZhc3RSZWFsbG9jKG1fZGF0
YSwgbmV3TnVtQnl0ZXMpLmdldFZhbHVlKG5ld0RhdGEpKSB7CisgICAgICAgIC8vIFdlIGZhaWxl
ZCwgYnV0IHRoZSBiYWNraW5nIHN0b3JlIGlzIHN0aWxsIGtlcHQgaW4gYSBjb25zaXN0ZW50IHN0
YXRlLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9zaXplID0gc2l6ZTsK
KyAgICBtX2RhdGEgPSBuZXdEYXRhOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQqIEJh
Y2tpbmdTdG9yZTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKGlzQmFja2VkQnlTaGFyZWRNZW1v
cnkoKSkKKyAgICAgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5kYXRhKCk7CisKKyAgICBBU1NF
UlQobV9kYXRhKTsKKyAgICByZXR1cm4gbV9kYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gNzU1MTgpCisr
KyBXZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgog
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gQmFja2luZ1N0b3Jl
OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKQogewogICAgIHNpemVfdCBudW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsK
ICAgICAKQEAgLTQwLDEwICs0MCwxMCBAQCBQYXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gQmFja2lu
Z1N0b3JlOjpjCiAgICAgaWYgKCF0cnlGYXN0TWFsbG9jKG51bUJ5dGVzKS5nZXRWYWx1ZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhY2tpbmdT
dG9yZShzaXplLCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFibGVCaXRt
YXAoc2l6ZSwgZGF0YSkpOwogfQogCi1QYXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gQmFja2luZ1N0
b3JlOjpjcmVhdGVTaGFyYWJsZShjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmFibGUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBzaXplX3QgbnVtQnl0ZXMgPSBudW1CeXRlc0ZvclNpemUoc2l6ZSk7
CiAgICAgCkBAIC01MSwxMCArNTEsMTAgQEAgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IEJhY2tp
bmdTdG9yZTo6YwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJhY2tpbmdTdG9yZShzaXplLCBzaGFyZWRNZW1v
cnkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBzaGFy
ZWRNZW1vcnkpKTsKIH0KIAotUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IEJhY2tpbmdTdG9yZTo6
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiBoYW5kbGUpCitQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgY29uc3QgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICAvLyBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnku
CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpj
cmVhdGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRXcml0ZSk7CkBAIC02NCwzNiArNjQsMzYg
QEAgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IEJhY2tpbmdTdG9yZTo6YwogICAgIHNpemVfdCBu
dW1CeXRlcyA9IG51bUJ5dGVzRm9yU2l6ZShzaXplKTsKICAgICBBU1NFUlRfVU5VU0VEKG51bUJ5
dGVzLCBzaGFyZWRNZW1vcnktPnNpemUoKSA+PSBudW1CeXRlcyk7CiAKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEJhY2tpbmdTdG9yZShzaXplLCBzaGFyZWRNZW1vcnkpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlYWJsZUJpdG1hcChzaXplLCBzaGFyZWRNZW1vcnkpKTsKIH0KIAot
Ym9vbCBCYWNraW5nU3RvcmU6OmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFu
ZGxlKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUhhbmRsZShTaGFyZWRNZW1vcnk6Okhh
bmRsZSYgaGFuZGxlKQogewogICAgIEFTU0VSVChpc0JhY2tlZEJ5U2hhcmVkTWVtb3J5KCkpOwog
CiAgICAgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlJlYWRXcml0ZSk7CiB9CiAKLUJhY2tpbmdTdG9yZTo6QmFja2luZ1N0b3JlKGNvbnN0
IEludFNpemUmIHNpemUsIHZvaWQqIGRhdGEpCitTaGFyZWFibGVCaXRtYXA6OlNoYXJlYWJsZUJp
dG1hcChjb25zdCBJbnRTaXplJiBzaXplLCB2b2lkKiBkYXRhKQogICAgIDogbV9zaXplKHNpemUp
CiAgICAgLCBtX2RhdGEoZGF0YSkKIHsKIH0KIAotQmFja2luZ1N0b3JlOjpCYWNraW5nU3RvcmUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eSkKK1NoYXJlYWJsZUJpdG1hcDo6U2hhcmVhYmxlQml0bWFwKGNvbnN0IEludFNpemUmIHNpemUs
IFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCiAgICAgOiBtX3NpemUoc2l6
ZSkKICAgICAsIG1fc2hhcmVkTWVtb3J5KHNoYXJlZE1lbW9yeSkKICAgICAsIG1fZGF0YSgwKQog
ewogfQogCi1CYWNraW5nU3RvcmU6On5CYWNraW5nU3RvcmUoKQorU2hhcmVhYmxlQml0bWFwOjp+
U2hhcmVhYmxlQml0bWFwKCkKIHsKICAgICBpZiAoIWlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSkK
ICAgICAgICAgZmFzdEZyZWUobV9kYXRhKTsKIH0KIAotYm9vbCBCYWNraW5nU3RvcmU6OnJlc2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OnJlc2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIFdlIGNhbid0IHJlc2l6ZSBiYWNraW5nIHN0b3Jl
cyB0aGF0IGFyZSBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeS4KICAgICBBU1NFUlQoIWlzQmFja2Vk
QnlTaGFyZWRNZW1vcnkoKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBCYWNraW5nU3RvcmU6
OnJlc2l6ZShjb25zdCBJbnRTaXplJgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkKiBCYWNr
aW5nU3RvcmU6OmRhdGEoKSBjb25zdAordm9pZCogU2hhcmVhYmxlQml0bWFwOjpkYXRhKCkgY29u
c3QKIHsKICAgICBpZiAoaXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKQogICAgICAgICByZXR1cm4g
bV9zaGFyZWRNZW1vcnktPmRhdGEoKTsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShy
ZXZpc2lvbiA3NTUxOCkJKGZyb20gV2ViS2l0Mi9TaGFyZWQvQmFja2luZ1N0b3JlLmg6NzU1MTgp
CisrKyBXZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCYWNraW5nU3RvcmVfaAorI2RlZmlu
ZSBCYWNraW5nU3RvcmVfaAorCisjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKyAgICAKK2NsYXNzIEJhY2tpbmdT
dG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJhY2tpbmdTdG9yZT4geworcHVibGljOgorICAgIC8v
IENyZWF0ZSBhIGJhY2tpbmcgc3RvcmUgdGhhdCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJik7CisKKyAgICAvLyBDcmVhdGUgYSBiYWNraW5nIHN0b3JlIHdob3NlIGJhY2tpbmcgbWVt
b3J5IGNhbiBiZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QmFja2luZ1N0b3JlPiBjcmVhdGVTaGFyYWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CisKKyAgICAvLyBDcmVhdGUgYSBiYWNraW5nIHN0b3JlIGZyb20gYSBzaGFyZWQgbWVtb3J5
IGhhbmRsZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmKTsKKworICAg
IC8vIENyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgaGFuZGxlLgorICAgIGJvb2wgY3JlYXRlSGFuZGxl
KFNoYXJlZE1lbW9yeTo6SGFuZGxlJik7CisKKyAgICB+QmFja2luZ1N0b3JlKCk7CisKKyAgICBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpJbnRS
ZWN0KFdlYkNvcmU6OkludFBvaW50KCksIHNpemUoKSk7IH0KKworICAgIGJvb2wgcmVzaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpOworCisgICAgLy8gQ3JlYXRlIGEgZ3JhcGhpY3Mg
Y29udGV4dCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhaW50IGludG8gdGhlIGJhY2tpbmcgc3RvcmUu
CisgICAgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOworCisgICAgLy8gUGFpbnQgdGhlIGJhY2tpbmcgc3RvcmUgaW50byB0aGUgZ2l2
ZW4gY29udGV4dC4KKyAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c3JjUmVjdCk7CisKKyAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJl
dHVybiBtX3NoYXJlZE1lbW9yeTsgfQorCitwcml2YXRlOgorICAgIEJhY2tpbmdTdG9yZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgdm9pZCopOworICAgIEJhY2tpbmdTdG9yZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKworICAgIHN0YXRpYyBz
aXplX3QgbnVtQnl0ZXNGb3JTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpIHsgcmV0
dXJuIHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0KCkgKiA0OyB9CisKKyAgICB2b2lkKiBkYXRh
KCkgY29uc3Q7CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbnVtQnl0
ZXNGb3JTaXplKG1fc2l6ZSk7IH0KKworICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOworCisg
ICAgLy8gSWYgdGhlIGJhY2tpbmcgc3RvcmUgaXMgYmFja2VkIGJ5IHNoYXJlZCBtZW1vcnksIHRo
aXMgcG9pbnRzIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KKyAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKKworICAgIC8vIElmIHRoZSBiYWNraW5nIHN0b3JlIGlz
IGJhY2tlZCBieSBmYXN0TWFsbG9jZWQgbWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgZGF0YS4K
KyAgICB2b2lkKiBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEJhY2tpbmdTdG9yZV9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNp
b24gNzU1MTgpCisrKyBXZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgQmFja2luZ1N0b3JlX2gKLSNkZWZpbmUgQmFja2luZ1N0b3JlX2gK
KyNpZm5kZWYgU2hhcmVhYmxlQml0bWFwX2gKKyNkZWZpbmUgU2hhcmVhYmxlQml0bWFwX2gKIAog
I2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgpA
QCAtMzksMjEgKzM5LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgCi1jbGFzcyBCYWNraW5nU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxCYWNraW5n
U3RvcmU+IHsKK2NsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJl
YWJsZUJpdG1hcD4gewogcHVibGljOgotICAgIC8vIENyZWF0ZSBhIGJhY2tpbmcgc3RvcmUgdGhh
dCB1c2VzIG1hbGxvY2VkIG1lbW9yeS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3Rv
cmU+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgLy8gQ3JlYXRlIGEgc2hh
cmVhYmxlIGJpdG1hcCB0aGF0IHVzZXMgbWFsbG9jZWQgbWVtb3J5LgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
IAotICAgIC8vIENyZWF0ZSBhIGJhY2tpbmcgc3RvcmUgd2hvc2UgYmFja2luZyBtZW1vcnkgY2Fu
IGJlIHNoYXJlZCB3aXRoIGFub3RoZXIgcHJvY2Vzcy4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
YWNraW5nU3RvcmU+IGNyZWF0ZVNoYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAg
ICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgYml0bWFwIHdob3NlIGJhY2tpbmcgbWVtb3J5IGNhbiBi
ZSBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyYWJsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAK
LSAgICAvLyBDcmVhdGUgYSBiYWNraW5nIHN0b3JlIGZyb20gYSBzaGFyZWQgbWVtb3J5IGhhbmRs
ZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYWNraW5nU3RvcmU+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmKTsKKyAgICAvLyBDcmVh
dGUgYSBzaGFyZWFibGUgYml0bWFwIGZyb20gYSBzaGFyZWQgbWVtb3J5IGhhbmRsZS4KKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmKTsKIAogICAgIC8vIENyZWF0ZSBh
IHNoYXJlZCBtZW1vcnkgaGFuZGxlLgogICAgIGJvb2wgY3JlYXRlSGFuZGxlKFNoYXJlZE1lbW9y
eTo6SGFuZGxlJik7CiAKLSAgICB+QmFja2luZ1N0b3JlKCk7CisgICAgflNoYXJlYWJsZUJpdG1h
cCgpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3QgeyByZXR1cm4g
V2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBzaXplKCkpOyB9CkBAIC02OSw4
ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQmFja2VkQnlTaGFyZWRNZW1vcnkoKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeTsgfQogCiBwcml2YXRlOgotICAgIEJhY2tpbmdTdG9y
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgdm9pZCopOwotICAgIEJhY2tpbmdTdG9yZShjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICBTaGFy
ZWFibGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIHZvaWQqKTsKKyAgICBTaGFyZWFi
bGVCaXRtYXAoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5
Pik7CiAKICAgICBzdGF0aWMgc2l6ZV90IG51bUJ5dGVzRm9yU2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzaXplKSB7IHJldHVybiBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsg
fQogCkBAIC03OSwxMyArNzksMTMgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkludFNpemUg
bV9zaXplOwogCi0gICAgLy8gSWYgdGhlIGJhY2tpbmcgc3RvcmUgaXMgYmFja2VkIGJ5IHNoYXJl
ZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBzaGFyZWQgbWVtb3J5IG9iamVjdC4KKyAgICAv
LyBJZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCBpcyBiYWNrZWQgYnkgc2hhcmVkIG1lbW9yeSwgdGhp
cyBwb2ludHMgdG8gdGhlIHNoYXJlZCBtZW1vcnkgb2JqZWN0LgogICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCi0gICAgLy8gSWYgdGhlIGJhY2tpbmcgc3RvcmUgaXMg
YmFja2VkIGJ5IGZhc3RNYWxsb2NlZCBtZW1vcnksIHRoaXMgcG9pbnRzIHRvIHRoZSBkYXRhLgor
ICAgIC8vIElmIHRoZSBzaGFyZWFibGUgYml0bWFwIGlzIGJhY2tlZCBieSBmYXN0TWFsbG9jZWQg
bWVtb3J5LCB0aGlzIHBvaW50cyB0byB0aGUgZGF0YS4KICAgICB2b2lkKiBtX2RhdGE7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIEJhY2tpbmdTdG9yZV9oCisjZW5k
aWYgLy8gU2hhcmVhYmxlQml0bWFwX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdl
Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMu
aAkocmV2aXNpb24gNzU1MTgpCisrKyBXZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRFbmNv
ZGVyLmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbW11dGFibGVE
aWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKICNpbmNsdWRlICJX
ZWJOdW1iZXIuaCIKQEAgLTExOSwxMyArMTIwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZUltYWdlOiB7CiAgICAgICAgICAgICBXZWJJbWFnZSog
aW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJbWFnZSo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBpZiAo
IWltYWdlLT5iYWNraW5nU3RvcmUoKS0+aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKSB7CisgICAg
ICAgICAgICBpZiAoIWltYWdlLT5iaXRtYXAoKS0+aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKSB7
CiAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGZhbHNlKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlOwotICAgICAgICAgICAgaWYgKCFpbWFnZS0+YmFja2luZ1N0b3JlKCkt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpKQorICAgICAgICAgICAgaWYgKCFpbWFnZS0+Yml0bWFwKCkt
PmNyZWF0ZUhhbmRsZShoYW5kbGUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHRydWUpOwpAQCAtMjgxLDcgKzI4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJJ
bWFnZTo6Y3JlYXRlKEJhY2tpbmdTdG9yZTo6Y3JlYXRlKHNpemUsIGhhbmRsZSkpOworICAgICAg
ICAgICAgY29kZXIubV9yb290ID0gV2ViSW1hZ2U6OmNyZWF0ZShTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShzaXplLCBoYW5kbGUpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwCShyZXZpc2lvbiA3NTUxOCkK
KysrIFdlYktpdDIvU2hhcmVkL1dlYkltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsOCBAQAogCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAorI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0zMiwxOCArMzQsMjggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBQYXNzUmVmUHRyPFdlYklt
YWdlPiBXZWJJbWFnZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEltYWdlT3B0aW9ucyBv
cHRpb25zKQogewogICAgIGlmIChvcHRpb25zICYgSW1hZ2VPcHRpb25zU2hhcmFibGUpCi0gICAg
ICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKEJhY2tpbmdTdG9yZTo6Y3JlYXRlU2hhcmFibGUo
c2l6ZSkpOwotICAgIHJldHVybiBXZWJJbWFnZTo6Y3JlYXRlKEJhY2tpbmdTdG9yZTo6Y3JlYXRl
KHNpemUpKTsKKyAgICAgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyYWJsZShzaXplKSk7CisgICAgcmV0dXJuIFdlYkltYWdlOjpjcmVhdGUoU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoc2l6ZSkpOworfQorCitQYXNzUmVmUHRyPFdlYkltYWdlPiBX
ZWJJbWFnZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbWFnZShiaXRtYXApKTsKK30KKworV2ViSW1hZ2U6
OldlYkltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXApCisgICAgOiBtX2Jp
dG1hcChiaXRtYXApCit7CisgICAgQVNTRVJUKG1fYml0bWFwKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gV2ViSW1hZ2U6OmNyZWF0ZShQYXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gYmFja2lu
Z1N0b3JlKQorV2ViSW1hZ2U6On5XZWJJbWFnZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJJbWFnZShiYWNraW5nU3RvcmUpKTsKIH0KIAogY29uc3QgSW50U2l6ZSYgV2ViSW1hZ2U6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+c2l6ZSgpOworICAg
IHJldHVybiBtX2JpdG1hcC0+c2l6ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdDIvU2hhcmVkL1dlYkltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFy
ZWQvV2ViSW1hZ2UuaAkocmV2aXNpb24gNzU1MTgpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTcgQEAKICNkZWZpbmUgV2ViSW1hZ2Vf
aAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRT
aXplOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2hhcmVhYmxlQml0bWFwOwor
CiAvLyBXZWJJbWFnZSAtIEFuIGltYWdlIHR5cGUgc3VpdGFibGUgZm9yIHZlbmRpbmcgdG8gYW4g
QVBJLgogCiBjbGFzcyBXZWJJbWFnZSA6IHB1YmxpYyBBUElPYmplY3QgewpAQCAtNDAsMjIgKzQ1
LDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUltYWdl
OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGNyZWF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgSW1hZ2VPcHRpb25zKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gY3JlYXRlKFBhc3NSZWZQdHI8QmFja2luZ1N0b3JlPik7Ci0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJJbWFnZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CisgICAg
fldlYkltYWdlKCk7CisgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSgpIGNv
bnN0OwogCi0gICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmdTdG9yZS5nZXQoKTsgfQorICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRtYXAuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJJbWFnZShQ
YXNzUmVmUHRyPEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKQotICAgICAgICA6IG1fYmFja2lu
Z1N0b3JlKGJhY2tpbmdTdG9yZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2JhY2tpbmdTdG9y
ZSk7Ci0gICAgfQorICAgIFdlYkltYWdlKFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPik7CiAK
ICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAotICAg
IFJlZlB0cjxCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworICAgIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IG1fYml0bWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9jZy9XS0ltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0FQSS9jL2NnL1dLSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDc1NTE4KQorKysgV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2cvV0tJbWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiV0tJbWFnZUNHLmgiCiAKKyNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJ
bWFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC0zNCw2ICsz
NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBDR0ltYWdlUmVmIFdLSW1hZ2VDcmVh
dGVDR0ltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7Ci0gICAgT3duUHRyPEdyYXBoaWNzQ29u
dGV4dD4gc291cmNlQ29udGV4dCA9IHRvSW1wbChpbWFnZVJlZiktPmJhY2tpbmdTdG9yZSgpLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBzb3Vy
Y2VDb250ZXh0ID0gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29u
dGV4dCgpOwogICAgIHJldHVybiBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShzb3VyY2VDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9jYWlyby9C
YWNraW5nU3RvcmVDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvY2Fpcm8v
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwCShyZXZpc2lvbiA3NTUxOCkKKysrIFdlYktpdDIvU2hhcmVk
L2NhaXJvL0JhY2tpbmdTdG9yZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRl
ICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKIAogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBCYWNraW5nU3RvcmU6
OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlOjpwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBTaGFy
ZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFdlYktpdDIv
U2hhcmVkL2NnL0JhY2tpbmdTdG9yZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJl
ZC9jZy9CYWNraW5nU3RvcmVDRy5jcHAJKHJldmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFy
ZWQvY2cvQmFja2luZ1N0b3JlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCi0KLSNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQot
ewotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRDRiwgQ0dD
b2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+
IGJpdG1hcENvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEoKSwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgIG1fc2l6ZS53aWR0aCgpICogNCwgY29s
b3JTcGFjZS5nZXQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwotCi0gICAgLy8gV2Ugd2FudCB0
aGUgb3JpZ2luIHRvIGJlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgc28gZmxpcCB0aGUgYmFja2lu
ZyBzdG9yZSBjb250ZXh0LgotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShiaXRtYXBDb250ZXh0
LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIENHQ29udGV4dFNjYWxlQ1RNKGJpdG1h
cENvbnRleHQuZ2V0KCksIDEsIC0xKTsKLQotICAgIHJldHVybiBhZG9wdFB0cihuZXcgR3JhcGhp
Y3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKLX0KLQotdm9pZCBCYWNraW5nU3RvcmU6
OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KQotewot
ICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IHNvdXJjZUNvbnRleHQoY3JlYXRlR3JhcGhpY3ND
b250ZXh0KCkpOwotCi0gICAgQ0dDb250ZXh0UmVmIHNvdXJjZUNHQ29udGV4dCA9IHNvdXJjZUNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgw
LCBkYXRhKCksIHNpemVJbkJ5dGVzKCksIDApKTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2UoQWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZShDR0JpdG1hcENvbnRleHRHZXRXaWR0aChzb3Vy
Y2VDR0NvbnRleHQpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDR0JpdG1hcENvbnRleHRHZXRIZWlnaHQoc291cmNlQ0dDb250ZXh0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
R0JpdG1hcENvbnRleHRHZXRCaXRzUGVyQ29tcG9uZW50KHNvdXJjZUNHQ29udGV4dCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dCaXRt
YXBDb250ZXh0R2V0Qml0c1BlclBpeGVsKHNvdXJjZUNHQ29udGV4dCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dCaXRtYXBDb250ZXh0
R2V0Qnl0ZXNQZXJSb3coc291cmNlQ0dDb250ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0JpdG1hcENvbnRleHRHZXRDb2xvclNw
YWNlKHNvdXJjZUNHQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0dCaXRtYXBDb250ZXh0R2V0Qml0bWFwSW5mbyhzb3VyY2VD
R0NvbnRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKLQotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwotICAgIAotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsK
LQotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY2dDb250ZXh0LCBDR1JlY3RNYWtlKGRzdFBvaW50
LngoKSwgZHN0UG9pbnQueSgpLCBzcmNSZWN0LndpZHRoKCksIHNyY1JlY3QuaGVpZ2h0KCkpKTsK
LSAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKLQotICAgIENHRmxvYXQg
aW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsKLSAgICBDR0Zsb2F0
IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOwotCi0gICAgQ0dGbG9h
dCBkZXN0WCA9IGRzdFBvaW50LngoKSAtIHNyY1JlY3QueCgpOwotICAgIENHRmxvYXQgZGVzdFkg
PSAtaW1hZ2VIZWlnaHQgLSBkc3RQb2ludC55KCkgKyBzcmNSZWN0LnkoKTsKLQotICAgIENHQ29u
dGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRlc3RZLCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGNnQ29udGV4dCk7Ci19Ci0gICAgICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiA3NTUxOCkJ
KGZyb20gV2ViS2l0Mi9TaGFyZWQvY2cvQmFja2luZ1N0b3JlQ0cuY3BwOjc1NTE4KQorKysgV2Vi
S2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQoKQoreworICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2Uo
QWRvcHRDRiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOworICAgIFJldGFpblB0cjxD
R0NvbnRleHRSZWY+IGJpdG1hcENvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgIG1fc2l6ZS53aWR0
aCgpICogNCwgY29sb3JTcGFjZS5nZXQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworCisgICAg
Ly8gV2Ugd2FudCB0aGUgb3JpZ2luIHRvIGJlIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgc28gZmxp
cCB0aGUgYmFja2luZyBzdG9yZSBjb250ZXh0LgorICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShi
aXRtYXBDb250ZXh0LmdldCgpLCAwLCBtX3NpemUuaGVpZ2h0KCkpOworICAgIENHQ29udGV4dFNj
YWxlQ1RNKGJpdG1hcENvbnRleHQuZ2V0KCksIDEsIC0xKTsKKworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgR3JhcGhpY3NDb250ZXh0KGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKK30KKwordm9pZCBC
YWNraW5nU3RvcmU6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KQoreworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IHNvdXJjZUNvbnRleHQoY3Jl
YXRlR3JhcGhpY3NDb250ZXh0KCkpOworCisgICAgQ0dDb250ZXh0UmVmIHNvdXJjZUNHQ29udGV4
dCA9IHNvdXJjZUNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworCisgICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIoQWRvcHRDRiwgQ0dEYXRhUHJvdmlkZXJDcmVh
dGVXaXRoRGF0YSgwLCBkYXRhKCksIHNpemVJbkJ5dGVzKCksIDApKTsKKyAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dJbWFnZUNyZWF0ZShDR0JpdG1hcENvbnRleHRH
ZXRXaWR0aChzb3VyY2VDR0NvbnRleHQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDR0JpdG1hcENvbnRleHRHZXRIZWlnaHQoc291cmNl
Q0dDb250ZXh0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDR0JpdG1hcENvbnRleHRHZXRCaXRzUGVyQ29tcG9uZW50KHNvdXJjZUNHQ29u
dGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0dCaXRtYXBDb250ZXh0R2V0Qml0c1BlclBpeGVsKHNvdXJjZUNHQ29udGV4dCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dC
aXRtYXBDb250ZXh0R2V0Qnl0ZXNQZXJSb3coc291cmNlQ0dDb250ZXh0KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0JpdG1hcENvbnRl
eHRHZXRDb2xvclNwYWNlKHNvdXJjZUNHQ29udGV4dCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dCaXRtYXBDb250ZXh0R2V0Qml0bWFw
SW5mbyhzb3VyY2VDR0NvbnRleHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKKworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIAorICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
Y2dDb250ZXh0KTsKKworICAgIENHQ29udGV4dENsaXBUb1JlY3QoY2dDb250ZXh0LCBDR1JlY3RN
YWtlKGRzdFBvaW50LngoKSwgZHN0UG9pbnQueSgpLCBzcmNSZWN0LndpZHRoKCksIHNyY1JlY3Qu
aGVpZ2h0KCkpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsKKwor
ICAgIENHRmxvYXQgaW1hZ2VIZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKTsK
KyAgICBDR0Zsb2F0IGltYWdlV2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpOwor
CisgICAgQ0dGbG9hdCBkZXN0WCA9IGRzdFBvaW50LngoKSAtIHNyY1JlY3QueCgpOworICAgIENH
RmxvYXQgZGVzdFkgPSAtaW1hZ2VIZWlnaHQgLSBkc3RQb2ludC55KCkgKyBzcmNSZWN0LnkoKTsK
KworICAgIENHQ29udGV4dERyYXdJbWFnZShjZ0NvbnRleHQsIENHUmVjdE1ha2UoZGVzdFgsIGRl
c3RZLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCksIGltYWdlLmdldCgpKTsKKyAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Cit9CisgICAgICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZp
c2lvbiA3NTUxOCkKKysrIFdlYktpdDIvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzIsNyArMzIsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBCYWNraW5nU3RvcmU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpCitQYXNzT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVHcmFwaGljc0NvbnRl
eHQoKQogewogICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UoQWRvcHRD
RiwgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwogICAgIFJldGFpblB0cjxDR0NvbnRl
eHRSZWY+IGJpdG1hcENvbnRleHQoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEo
KSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgOCwgIG1fc2l6ZS53aWR0aCgpICog
NCwgY29sb3JTcGFjZS5nZXQoKSwgCkBAIC00NSw3ICs0NSw3IEBAIFBhc3NPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBCYWNraW5nU3RvcmUKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdyYXBoaWNz
Q29udGV4dChiaXRtYXBDb250ZXh0LmdldCgpKSk7CiB9CiAKLXZvaWQgQmFja2luZ1N0b3JlOjpw
YWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkKK3ZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc3JjUmVjdCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBzb3VyY2VDb250ZXh0
KGNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpKTsKIApJbmRleDogV2ViS2l0Mi9TaGFyZWQvZ3RrL0Jh
Y2tpbmdTdG9yZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvZ3RrL0JhY2tp
bmdTdG9yZUd0ay5jcHAJKHJldmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvZ3RrL0Jh
Y2tpbmdTdG9yZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLQot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFw
aGljc0NvbnRleHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXZvaWQgQmFja2luZ1N0b3JlOjpwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHN0UG9pbnQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNyY1JlY3QpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLSAgICAgICAgCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL2d0ay9TaGFyZWFibGVCaXRtYXBH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL2d0ay9TaGFyZWFibGVCaXRtYXBH
dGsuY3BwCShyZXZpc2lvbiA3NTUxOCkJKGZyb20gV2ViS2l0Mi9TaGFyZWQvZ3RrL0JhY2tpbmdT
dG9yZUd0ay5jcHA6NzU1MTgpCisrKyBXZWJLaXQyL1NoYXJlZC9ndGsvU2hhcmVhYmxlQml0bWFw
R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBCYWNraW5nU3RvcmU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBC
YWNraW5nU3RvcmU6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorICAgICAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9TaGFyZWQvZ3RrL1NoYXJlYWJsZUJpdG1hcEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvZ3RrL1NoYXJlYWJsZUJpdG1hcEd0ay5jcHAJKHJl
dmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvZ3RrL1NoYXJlYWJsZUJpdG1hcEd0ay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCisjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC0zMywxMyArMzMsMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQor
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIEJhY2tpbmdTdG9yZTo6cGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGRzdFBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KQordm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkc3RQb2ludCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgc3JjUmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogV2Vi
S2l0Mi9TaGFyZWQvcXQvQmFja2luZ1N0b3JlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
U2hhcmVkL3F0L0JhY2tpbmdTdG9yZVF0LmNwcAkocmV2aXNpb24gNzU1MTgpCisrKyBXZWJLaXQy
L1NoYXJlZC9xdC9CYWNraW5nU3RvcmVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLQotI2luY2x1ZGUg
PFFJbWFnZT4KLSNpbmNsdWRlIDxRUGFpbnRlcj4KLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXN0YXRpYyBpbmxpbmUgUUltYWdlIGNyZWF0ZVFJbWFnZSh2b2lkKiBkYXRhLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgcmV0dXJuIFFJbWFnZShyZWludGVycHJldF9jYXN0
PHVjaGFyKj4oZGF0YSksIHdpZHRoLCBoZWlnaHQsIHdpZHRoICogNCwgUUltYWdlOjpGb3JtYXRf
UkdCMzIpOwotfQotCi1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpj
cmVhdGVHcmFwaGljc0NvbnRleHQoKQotewotICAgIFFJbWFnZSogaW1hZ2UgPSBuZXcgUUltYWdl
KGNyZWF0ZVFJbWFnZShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0KG5ldyBR
UGFpbnRlcihpbWFnZSkpOwotICAgIGNvbnRleHQtPnRha2VPd25lcnNoaXBPZlBsYXRmb3JtQ29u
dGV4dCgpOwotICAgIHJldHVybiBjb250ZXh0OwotfQotCi12b2lkIEJhY2tpbmdTdG9yZTo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpCi17Ci0gICAgUUltYWdlIGltYWdlID0gY3JlYXRlUUltYWdl
KGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Ci0gICAgUVBhaW50ZXIq
IHBhaW50ZXIgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgIHBhaW50ZXItPnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7Ci0gICAgcGFpbnRlci0+ZHJhd0ltYWdl
KGRzdFBvaW50LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOwotICAgIHBhaW50ZXItPnRyYW5zbGF0
ZShzcmNSZWN0LngoKSwgc3JjUmVjdC55KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFdlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAJKHJldmlzaW9uIDc1
NTE4KQkoZnJvbSBXZWJLaXQyL1NoYXJlZC9xdC9CYWNraW5nU3RvcmVRdC5jcHA6NzU1MTgpCisr
KyBXZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIK
KworI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUgUUltYWdlIGNyZWF0ZVFJbWFnZSh2b2lk
KiBkYXRhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgcmV0dXJuIFFJbWFnZShyZWlu
dGVycHJldF9jYXN0PHVjaGFyKj4oZGF0YSksIHdpZHRoLCBoZWlnaHQsIHdpZHRoICogNCwgUUlt
YWdlOjpGb3JtYXRfUkdCMzIpOworfQorCitQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFj
a2luZ1N0b3JlOjpjcmVhdGVHcmFwaGljc0NvbnRleHQoKQoreworICAgIFFJbWFnZSogaW1hZ2Ug
PSBuZXcgUUltYWdlKGNyZWF0ZVFJbWFnZShkYXRhKCksIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCkpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBuZXcgR3JhcGhpY3ND
b250ZXh0KG5ldyBRUGFpbnRlcihpbWFnZSkpOworICAgIGNvbnRleHQtPnRha2VPd25lcnNoaXBP
ZlBsYXRmb3JtQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0OworfQorCit2b2lkIEJhY2tp
bmdTdG9yZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCit7CisgICAgUUltYWdlIGltYWdlID0g
Y3JlYXRlUUltYWdlKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Cisg
ICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIHBh
aW50ZXItPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgcGFpbnRl
ci0+ZHJhd0ltYWdlKGRzdFBvaW50LCBpbWFnZSwgUVJlY3Qoc3JjUmVjdCkpOworICAgIHBhaW50
ZXItPnRyYW5zbGF0ZShzcmNSZWN0LngoKSwgc3JjUmVjdC55KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAJ
KHJldmlzaW9uIDc1NTE4KQorKysgV2ViS2l0Mi9TaGFyZWQvcXQvU2hhcmVhYmxlQml0bWFwUXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogCiAjaW5jbHVkZSA8UUltYWdlPgogI2luY2x1ZGUgPFFQ
YWludGVyPgpAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgaW5saW5lIFFJbWFnZSBjcmVhdGVRSW1h
Z2Uodm9pZCogCiAgICAgcmV0dXJuIFFJbWFnZShyZWludGVycHJldF9jYXN0PHVjaGFyKj4oZGF0
YSksIHdpZHRoLCBoZWlnaHQsIHdpZHRoICogNCwgUUltYWdlOjpGb3JtYXRfUkdCMzIpOwogfQog
Ci1QYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gQmFja2luZ1N0b3JlOjpjcmVhdGVHcmFwaGlj
c0NvbnRleHQoKQorUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBRSW1hZ2UqIGltYWdlID0gbmV3IFFJbWFn
ZShjcmVhdGVRSW1hZ2UoZGF0YSgpLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dChuZXcg
UVBhaW50ZXIoaW1hZ2UpKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0Nv
bnRleHQ+IEJhY2tpbmdTdG9yZQogICAgIHJldHVybiBjb250ZXh0OwogfQogCi12b2lkIEJhY2tp
bmdTdG9yZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
ZHN0UG9pbnQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCit2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgZHN0UG9pbnQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgUUltYWdlIGltYWdlID0gY3JlYXRlUUlt
YWdlKGRhdGEoKSwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7CiAgICAgUVBhaW50
ZXIqIHBhaW50ZXIgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvRmluZEluZGljYXRvci5jcHAJKHJldmlzaW9uIDc1NTExKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvRmluZEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKIAotI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgor
I2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhZGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgpAQCAtNzgsMTQgKzc4LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQ
YXNzUmVmUHRyPEZpbmRJbmRpY2F0b3I+IEZpbmRJbmRpY2F0b3I6OmNyZWF0ZShjb25zdCBGbG9h
dFJlY3QmIHNlbGVjdGlvblJlY3QsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiB0ZXh0UmVjdHMs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUpCiB7Ci0gICAg
UmVmUHRyPEJhY2tpbmdTdG9yZT4gY29udGVudEltYWdlID0gQmFja2luZ1N0b3JlOjpjcmVhdGUo
ZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25SZWN0KS5zaXplKCksIGNvbnRlbnRJbWFnZUhhbmRs
ZSk7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udGVudEltYWdlID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGUoZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb25SZWN0KS5zaXplKCksIGNv
bnRlbnRJbWFnZUhhbmRsZSk7CiAgICAgaWYgKCFjb250ZW50SW1hZ2UpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaW5kSW5kaWNhdG9yKHNlbGVjdGlvblJl
Y3QsIHRleHRSZWN0cywgY29udGVudEltYWdlLnJlbGVhc2UoKSkpOwogfQogCi1GaW5kSW5kaWNh
dG9yOjpGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc2VsZWN0aW9uUmVj
dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0cywgUGFzc1JlZlB0
cjxCYWNraW5nU3RvcmU+IGNvbnRlbnRJbWFnZSkKK0ZpbmRJbmRpY2F0b3I6OkZpbmRJbmRpY2F0
b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY29udGVudEltYWdlKQogICAgIDogbV9zZWxlY3Rpb25SZWN0KHNlbGVjdGlvblJlY3QpCiAg
ICAgLCBtX3RleHRSZWN0cyh0ZXh0UmVjdHMpCiAgICAgLCBtX2NvbnRlbnRJbWFnZShjb250ZW50
SW1hZ2UpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5oCShyZXZpc2lvbiA3NTUxMSkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBCYWNraW5nU3RvcmU7CitjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGNsYXNzIEZp
bmRJbmRpY2F0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxGaW5kSW5kaWNhdG9yPiB7CiBwdWJsaWM6
CkBAIC00OSwxNiArNDksMTYgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkZsb2F0UmVjdD4mIHRleHRSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFJlY3RzOyB9CiAK
LSAgICBCYWNraW5nU3RvcmUqIGNvbnRlbnRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dEltYWdlLmdldCgpOyB9CisgICAgU2hhcmVhYmxlQml0bWFwKiBjb250ZW50SW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRJbWFnZS5nZXQoKTsgfQogCiAgICAgdm9pZCBkcmF3KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCk7
CiAKIHByaXZhdGU6Ci0gICAgRmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHNlbGVjdGlvblJlY3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiB0ZXh0UmVj
dHMsIFBhc3NSZWZQdHI8QmFja2luZ1N0b3JlPiBjb250ZW50SW1hZ2UpOworICAgIEZpbmRJbmRp
Y2F0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY29udGVudEltYWdlKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3NlbGVjdGlv
blJlY3Q7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4gbV90ZXh0UmVjdHM7Ci0gICAg
UmVmUHRyPEJhY2tpbmdTdG9yZT4gbV9jb250ZW50SW1hZ2U7CisgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gbV9jb250ZW50SW1hZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3
NTUxMSkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2IEBACiAJCTFBMDQzQjVEMTI0RDVFOUQwMEZGQkZCNSAv
KiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwNDNCNUIxMjRENUU5RDAwRkZCRkI1IC8q
IFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBMDQzQjVF
MTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwNDNCNUMxMjRENUU5RDAw
RkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTFBMDQzQ0VC
MTI0RkUzOEYwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEVDNkJEMTI0QkJE
OUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKLQkJ
MUEwNDNEN0ExMjRGRUZDMTAwRkZCRkI1IC8qIEJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwNDNENzgxMjRGRUZDMTAwRkZCRkI1
IC8qIEJhY2tpbmdTdG9yZS5oICovOyB9OwotCQkxQTA0M0Q3QjEyNEZFRkMxMDBGRkJGQjUgLyog
QmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMDQzRDc5MTI0RkVGQzEwMEZGQkZCNSAvKiBCYWNraW5nU3RvcmUuY3BwICovOyB9
OwogCQkxQTA0M0RDMTEyNEZGODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMDQzREJGMTI0RkY4NzUwMEZG
QkZCNSAvKiBQbHVnaW5Qcm94eS5oICovOyB9OwogCQkxQTA0M0RDMjEyNEZGODc1MDBGRkJGQjUg
LyogUGx1Z2luUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUEwNDNEQzAxMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblByb3h5LmNwcCAqLzsg
fTsKIAkJMUEwNDNGNjkxMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMDQzRjY3MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CkBAIC0xMjQsNiArMTIyLDggQEAKIAkJMUE2MTYxRDQx
Mjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTYxNjFEMjEyNzg5ODFDMDAzQUNEODYgLyogRG93bmxvYWQu
aCAqLzsgfTsKIAkJMUE2MTYxRDUxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjE2MUQzMTI3ODk4
MUMwMDNBQ0Q4NiAvKiBEb3dubG9hZC5jcHAgKi87IH07CiAJCTFBNjE2Mzk2MTI3ODlCMkYwMDNB
Q0Q4NiAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNjE2Mzk1MTI3ODlCMkYwMDNBQ0Q4NiAvKiBEb3dubG9hZE1hYy5tbSAq
LzsgfTsKKwkJMUE2NDIwRTQxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjBFMjEy
RENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCAqLzsgfTsKKwkJMUE2NDIwRTUx
MkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNo
YXJlYWJsZUJpdG1hcC5oICovOyB9OwogCQkxQTZGOUY5MDExRTEzRUZDMDBEQjEzNzEgLyogQ29t
bWFuZExpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oICovOyB9OwogCQkxQTZG
OUZCNzExRTE0MDg1MDBEQjEzNzEgLyogQ29tbWFuZExpbmVNYWMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RjlGQjYxMUUxNDA4NTAwREIxMzcx
IC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLzsgfTsKIAkJMUE2RkEwMUUxMUUxNTI2MzAwREIxMzcx
IC8qIFdlYlByb2Nlc3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdlYlByb2Nlc3NNYWlu
TWFjLm1tICovOyB9OwpAQCAtNjI1LDcgKzYyNSw3IEBACiAJCUJDRjY5RkEzMTE3NkQwMTQwMDQ3
MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdh
dGlvbkRhdGEuY3BwICovOyB9OwogCQlCQ0Y2OUZBOTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZp
Z2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGNjlGQTcxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDRjY5RkFBMTE3NkQx
Q0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjY5RkE4MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05h
dmlnYXRpb25EYXRhLmNwcCAqLzsgfTsKLQkJQzAxQTI2MDExMjY2MkYyMTAwQzlFRDU1IC8qIEJh
Y2tpbmdTdG9yZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMwMUEyNjAwMTI2NjJGMjEwMEM5RUQ1NSAvKiBCYWNraW5nU3RvcmVDRy5jcHAgKi87
IH07CisJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBDRy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMDFBMjYwMDEy
NjYyRjIxMDBDOUVENTUgLyogU2hhcmVhYmxlQml0bWFwQ0cuY3BwICovOyB9OwogCQlDMDJCRkYx
RTEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwMkJGRjFEMTI1MTUwMkUw
MDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovOyB9OwogCQlDMDMzN0RB
RTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAzMzdEQUQxMjdBMjRGRTAwOEZGNEY0IC8qIFdlYkV2
ZW50LmNwcCAqLzsgfTsKIAkJQzAzMzdEQjAxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNlRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzAz
MzdEQUYxMjdBMjhEMDAwOEZGNEY0IC8qIFdlYk1vdXNlRXZlbnQuY3BwICovOyB9OwpAQCAtNzQz
LDggKzc0Myw2IEBACiAJCTFBMDQzQjRDMTI0RDVFMzYwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGx1Z2luUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTA0M0I1QjEy
NEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMDQzQjVD
MTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTA0M0Q3ODEyNEZFRkMxMDBGRkJGQjUgLyog
QmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tpbmdT
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTA0M0Q3OTEyNEZFRkMxMDBG
RkJGQjUgLyogQmFja2luZ1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJhY2tpbmdTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
MDQzREJGMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQbHVnaW5Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTA0M0RDMDEyNEZGODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luUHJveHkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTA0M0Y1OTEyNTE0Q0YzMDBGRkJGQjUgLyogV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MjcsNiArODI1LDggQEAKIAkJMUE2MTYxRDIxMjc4OTgxQzAwM0FDRDg2IC8qIERvd25sb2FkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNjE2MUQzMTI3ODk4MUMwMDNBQ0Q4NiAvKiBEb3dubG9hZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjE2Mzk1MTI3ODlCMkYwMDNBQ0Q4NiAvKiBE
b3dubG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERv
d25sb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQTY0MjBFMjEyRENF
MkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNoYXJlYWJsZUJpdG1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFBNjQyMEUzMTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVhYmxlQml0bWFwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21t
YW5kTGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tYW5kTGluZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZGOUZCNjExRTE0MDg1MDBEQjEzNzEg
LyogQ29tbWFuZExpbmVNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29tbWFuZExpbmVNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTZG
QTAxRDExRTE1MjYzMDBEQjEzNzEgLyogV2ViUHJvY2Vzc01haW5NYWMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzTWFpbk1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTAsNyArMTM1MCw3IEBACiAJCUJDRjY5RkExMTE3
NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOYXZpZ2F0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRjY5RkE3MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25E
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkRhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUy
IC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tOYXZpZ2F0aW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUMwMUEyNjAwMTI2NjJGMjEwMEM5RUQ1NSAvKiBCYWNraW5nU3RvcmVDRy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNraW5nU3RvcmVDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwMUEyNjAwMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFi
bGVCaXRtYXBDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWFibGVCaXRtYXBDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwMkJGRjE1
MTI1MTRGRDgwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdl
YktleWJvYXJkRXZlbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMDMzN0RBRDEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTY4NSw4ICsxNjg1LDYgQEAKIAkJCQkxQUFFMDU4QzEyNzlEQ0Q0
MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQkxQTNERDIwNTEyNUU1QTJGMDA0NTE1RTYgLyog
QVBJQ2xpZW50LmggKi8sCiAJCQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8qIEFQSU9iamVj
dC5oICovLAotCQkJCTFBMDQzRDc5MTI0RkVGQzEwMEZGQkZCNSAvKiBCYWNraW5nU3RvcmUuY3Bw
ICovLAotCQkJCTFBMDQzRDc4MTI0RkVGQzEwMEZGQkZCNSAvKiBCYWNraW5nU3RvcmUuaCAqLywK
IAkJCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovLAogCQkJCTFB
MkQ5NTZFMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuY3BwICovLAogCQkJCTFBMkQ5
NTZEMTI4NDg1NjQwMDFFQjk2MiAvKiBDaGlsZFByb2Nlc3MuaCAqLywKQEAgLTE3MTYsNiArMTcx
NCw4IEBACiAJCQkJMUFBNDFBQjQxMkMwMkVDNDAwMkJFNjdCIC8qIFNlbGVjdGlvblN0YXRlLmgg
Ki8sCiAJCQkJNTE4RDJDQzgxMkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Npb25TdGF0ZS5jcHAgKi8s
CiAJCQkJNTE4RDJDQzkxMkQ1MURGQjAwM0JCOTNCIC8qIFNlc3Npb25TdGF0ZS5oICovLAorCQkJ
CTFBNjQyMEUyMTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuY3BwICovLAorCQkJ
CTFBNjQyMEUzMTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCAqLywKIAkJCQlC
Q0JEM0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCTFB
NUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCiAJCQkJQkNC
MEIwREYxMjMwNUFCMTAwQjEzNDFFIC8qIFVzZXJNZXNzYWdlQ29kZXJzLmggKi8sCkBAIC0yNTYy
LDcgKzI1NjIsNyBAQAogCQlDMDFBMjVGRjEyNjYyRjIxMDBDOUVENTUgLyogY2cgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUMwMUEyNjAwMTI2NjJGMjEw
MEM5RUQ1NSAvKiBCYWNraW5nU3RvcmVDRy5jcHAgKi8sCisJCQkJQzAxQTI2MDAxMjY2MkYyMTAw
QzlFRDU1IC8qIFNoYXJlYWJsZUJpdG1hcENHLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2c7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzMiw3ICsyODMyLDYgQEAKIAkJCQlC
QzQwNzYyNzEyNEZGMDQwMDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDNDA3NjI5MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlcXVlc3ROUy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MkIxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVz
cG9uc2VOUy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUEwNDNEN0ExMjRGRUZDMTAwRkZCRkI1IC8q
IEJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc4M0QxMjUwRkFERDAwNjhG
MjBBIC8qIFdLRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZG
QkZCNSAvKiBQbHVnaW5Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNGNkExMjUxNEQ4
QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LApAQCAtMjk3MCw2ICsyOTY5LDcgQEAKIAkJCQlCQzA2RjQzQTEyREJDQ0ZCMDAyRDc4REUgLyog
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzA2RjQ0QTEyREJEMUY1MDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNkY0NEUxMkRCREYzRjAwMkQ3OERF
IC8qIFdLR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUE2NDIwRTUxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0zMjc3LDcgKzMyNzcsNiBAQAogCQkJCUJDNDA3NjJBMTI0RkYwNDAwMDY4RjIwQSAv
KiBXS1VSTFJlcXVlc3ROUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjJDMTI0RkYwNDAw
MDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0NF
QjEyNEZFMzhGMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQkxQTA0M0Q3QjEyNEZFRkMxMDBGRkJGQjUgLyogQmFja2luZ1N0b3Jl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQzREMyMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVn
aW5Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0Y2OTEyNTE0RDhCMDBGRkJGQjUg
LyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE4RUY0Q0MxMjUyNDAzNzAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMyOTcsNyArMzI5Niw3IEBACiAJCQkJMUFDNDFBQzgxMjYz
Qzg4MzAwMDU0RTk0IC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTkwQzFGNTEyNjRGRDcxMDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE5MEMyMzgxMjY1MDcxNzAwM0U0NEQ0IC8qIFBhZ2VPdmVybGF5LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBCYWNraW5nU3RvcmVD
Ry5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMDFBMjYwMTEyNjYyRjIxMDBDOUVENTUgLyogU2hh
cmVhYmxlQml0bWFwQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NzUwOTgxMjY4RjNDNjAw
NkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE5
MTAwNzIxMjY2NzVDNDAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE5MTAxMEIxMjY4QzhDQTAwMTg0MkY1IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cubW0g
aW4gU291cmNlcyAqLywKQEAgLTM0MTgsNiArMzQxNyw3IEBACiAJCQkJQkMwNkY0M0IxMkRCQ0NG
QjAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzA2RjQ0QjEyREJEMUY1MDAyRDc4REUgLyogR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzA2RjQ0
RjEyREJERjNGMDAyRDc4REUgLyogV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTFBNjQyMEU0MTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVC
aXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCShyZXZpc2lvbiA3NTUxMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBA
QAogCiAjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKIAotI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJOUFJlbW90ZU9iamVjdE1h
cC5oIgogI2luY2x1ZGUgIk5QUnVudGltZVV0aWxpdGllcy5oIgpAQCAtMzYsNiArMzUsNyBAQAog
I2luY2x1ZGUgIlBsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFBs
dWdpblByb3h5OjpnZW9tZXRyeURpZENoYW5nZShjb25zCiAKICAgICBib29sIGRpZFVwZGF0ZUJh
Y2tpbmdTdG9yZSA9IGZhbHNlOwogICAgIGlmICghbV9iYWNraW5nU3RvcmUpIHsKLSAgICAgICAg
bV9iYWNraW5nU3RvcmUgPSBCYWNraW5nU3RvcmU6OmNyZWF0ZShmcmFtZVJlY3Quc2l6ZSgpKTsK
KyAgICAgICAgbV9iYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShmcmFtZVJl
Y3Quc2l6ZSgpKTsKICAgICAgICAgZGlkVXBkYXRlQmFja2luZ1N0b3JlID0gdHJ1ZTsKICAgICB9
IGVsc2UgaWYgKGZyYW1lUmVjdC5zaXplKCkgIT0gbV9iYWNraW5nU3RvcmUtPnNpemUoKSkgewog
ICAgICAgICAvLyBUaGUgYmFja2luZyBzdG9yZSBhbHJlYWR5IGV4aXN0cywganVzdCByZXNpemUg
aXQuCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6Z2VvbWV0cnlEaWRDaGFu
Z2UoY29ucwogCiAgICAgaWYgKGRpZFVwZGF0ZUJhY2tpbmdTdG9yZSkgewogICAgICAgICAvLyBD
cmVhdGUgYSBuZXcgcGx1Zy1pbiBiYWNraW5nIHN0b3JlLgotICAgICAgICBtX3BsdWdpbkJhY2tp
bmdTdG9yZSA9IEJhY2tpbmdTdG9yZTo6Y3JlYXRlU2hhcmFibGUoZnJhbWVSZWN0LnNpemUoKSk7
CisgICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyYWJsZShmcmFtZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFtX3BsdWdpbkJhY2tpbmdT
dG9yZSkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCShyZXZpc2lvbiA3NTUxMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQmFja2lu
Z1N0b3JlOworY2xhc3MgU2hhcmVhYmxlQml0bWFwOwogY2xhc3MgTlBWYXJpYW50RGF0YTsKIGNs
YXNzIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOwogCkBAIC0xMzIsMTEgKzEzMiwxMSBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3QgbV9mcmFtZVJlY3Q7CiAKICAgICAvLyBUaGlzIGlz
IHRoZSBiYWNraW5nIHN0b3JlIHRoYXQgd2UgcGFpbnQgd2hlbiB3ZSdyZSB0b2xkIHRvIHBhaW50
LgotICAgIFJlZlB0cjxCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOworICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgc2hh
cmVkIG1lbW9yeSBiYWNraW5nIHN0b3JlIHRoYXQgdGhlIHBsdWctaW4gcGFpbnRzIGludG8uIFdo
ZW4gdGhlIHBsdWctaW4gdGVsbHMgdXMKICAgICAvLyB0aGF0IGl0J3MgcGFpbnRlZCBzb21ldGhp
bmcgaW4gaXQsIHdlJ2xsIGJsaXQgZnJvbSBpdCB0byBvdXIgb3duIGJhY2tpbmcgc3RvcmUuCi0g
ICAgUmVmUHRyPEJhY2tpbmdTdG9yZT4gbV9wbHVnaW5CYWNraW5nU3RvcmU7CisgICAgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gbV9wbHVnaW5CYWNraW5nU3RvcmU7CiAgICAgCiAgICAgLy8gV2hl
dGhlciBhbGwgb2YgdGhlIHBsdWctaW4gYmFja2luZyBzdG9yZSBjb250YWlucyB2YWxpZCBkYXRh
LgogICAgIGJvb2wgbV9wbHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YTsKSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDc1NTExKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJGaW5kQ29u
dHJvbGxlci5oIgogCi0jaW5jbHVkZSAiQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgpAQCAtMTU4LDcgKzE1OCw3IEBAIGJv
b2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRpY2F0b3IKICAgICBzZWxlY3RlZEZyYW1l
LT5zZWxlY3Rpb24oKS0+Z2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlcyh0ZXh0UmVjdHMp
OwogCiAgICAgLy8gQ3JlYXRlIGEgYmFja2luZyBzdG9yZSBhbmQgcGFpbnQgdGhlIGZpbmQgaW5k
aWNhdG9yIHRleHQgaW50byBpdC4KLSAgICBSZWZQdHI8QmFja2luZ1N0b3JlPiBmaW5kSW5kaWNh
dG9yVGV4dEJhY2tpbmdTdG9yZSA9IEJhY2tpbmdTdG9yZTo6Y3JlYXRlU2hhcmFibGUoc2VsZWN0
aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMuc2l6ZSgpKTsKKyAgICBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBmaW5kSW5kaWNhdG9yVGV4dEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmFibGUoc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMuc2l6ZSgpKTsK
ICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBmaW5kSW5kaWNh
dG9yVGV4dEJhY2tpbmdTdG9yZS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBncmFw
aGljc0NvbnRleHQtPnRyYW5zbGF0ZSgtc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMu
eCgpLCAtc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMueSgpKTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA3NTUxMSkKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJveHkuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3
LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCkBA
IC02MjMsNyArNjI0LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RJ
bgogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwogCiAgICAgUmVmUHRyPFdlYkltYWdlPiBz
bmFwc2hvdCA9IFdlYkltYWdlOjpjcmVhdGUocmVjdC5zaXplKCksIG9wdGlvbnMpOwotICAgIE93
blB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHNuYXBzaG90
LT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgT3duUHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gc25hcHNob3QtPmJpdG1h
cCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2
ZSgpOwogICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgp
KTsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFw
c2hvdEluCiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7CiAKICAgICBSZWZQdHI8V2ViSW1h
Z2U+IHNuYXBzaG90ID0gV2ViSW1hZ2U6OmNyZWF0ZShyZWN0LnNpemUoKSwgb3B0aW9ucyk7Ci0g
ICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gc25h
cHNob3QtPmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBPd25Q
dHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBzbmFwc2hvdC0+
Yml0bWFwKCktPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zYXZlKCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVj
dC55KCkpOwpJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDc1NTExKQorKysgV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5OSwxMSArMzk5LDExIEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxC
YWNraW5nU3RvcmUuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFNoYXJlYWJsZUJp
dG1hcC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFNoYXJlZFxCYWNraW5nU3RvcmUuaCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxT
aGFyZWFibGVCaXRtYXAuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpAQCAtMTEzMCw3
ICsxMTMwLDcgQEAKIAkJCQlOYW1lPSJjZyIKIAkJCQk+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxTaGFyZWRcY2dcQmFja2luZ1N0b3JlQ0cuY3BwIgorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFNoYXJlZFxjZ1xTaGFyZWFibGVCaXRtYXBDRy5jcHAiCiAJCQkJCT4KIAkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCiAJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCkBA
IC0xMTU0LDcgKzExNTQsNyBAQAogCQkJCU5hbWU9ImNhaXJvIgogCQkJCT4KIAkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxjYWlyb1xCYWNraW5nU3RvcmVDYWlyby5jcHAi
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXGNhaXJvXFNoYXJlYWJsZUJpdG1hcENhaXJv
LmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KIAkJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgo=
</data>
<flag name="review"
          id="69899"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>