<?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>69229</bug_id>
          
          <creation_ts>2011-10-02 14:26:53 -0700</creation_ts>
          <short_desc>[Chromium] Moved files towards GTK removal</short_desc>
          <delta_ts>2011-10-04 16:00:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476716</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-02 14:26:53 -0700</bug_when>
    <thetext>[Chromium] Moved files towards GTK removal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476717</commentid>
    <comment_count>1</comment_count>
      <attachid>109428</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-10-02 14:27:41 -0700</bug_when>
    <thetext>Created attachment 109428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477726</commentid>
    <comment_count>2</comment_count>
      <attachid>109428</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 10:47:04 -0700</bug_when>
    <thetext>Comment on attachment 109428
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=109428&amp;action=review

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:2312
&gt;                                                   activeColor,
&gt;                                                   trackColor);

Nit: Fix indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477735</commentid>
    <comment_count>3</comment_count>
      <attachid>109647</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 10:53:17 -0700</bug_when>
    <thetext>Created attachment 109647
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477860</commentid>
    <comment_count>4</comment_count>
      <attachid>109647</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 13:06:35 -0700</bug_when>
    <thetext>Comment on attachment 109647
Patch for landing

Rejecting attachment 109647 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
ommit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 64, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 57, in run
    if self._has_valid_reviewer(changelog_entry):
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 42, in _has_valid_reviewer
    if changelog_entry.reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;reviewer&apos;

Full output: http://queues.webkit.org/results/9954145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477883</commentid>
    <comment_count>5</comment_count>
      <attachid>109673</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 13:33:27 -0700</bug_when>
    <thetext>Created attachment 109673
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478016</commentid>
    <comment_count>6</comment_count>
      <attachid>109673</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-04 15:42:43 -0700</bug_when>
    <thetext>Comment on attachment 109673
Patch for landing

Rejecting attachment 109673 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
ommit-queue/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 64, in _run
    step(tool, options).run(state)
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 57, in run
    if self._has_valid_reviewer(changelog_entry):
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 42, in _has_valid_reviewer
    if changelog_entry.reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;reviewer&apos;

Full output: http://queues.webkit.org/results/9930984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478033</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 16:00:06 -0700</bug_when>
    <thetext>Committed r96660: &lt;http://trac.webkit.org/changeset/96660&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109428</attachid>
            <date>2011-10-02 14:27:41 -0700</date>
            <delta_ts>2011-10-04 10:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69229-20111002172739.patch</filename>
            <type>text/plain</type>
            <size>44792</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0NzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzN2EzNzc2YmQzYTUxNTk5
ZmJlNTYxYTJmNWM2MTYxZTk4YWZmMzgyLi5iMzQ5YjI2MzA1MWRkNjUwYWMwMDM1Y2Y1Yjg0YjRl
ZGNiNjAzNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTAtMDIgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3Zl
ZCBmaWxlcyB0b3dhcmRzIEdUSyByZW1vdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTIyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3Jv
bGxiYXJDb2xvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXApOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNhdHVyYXRlQW5kQnJpZ2h0ZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcik6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRBcnJv
d0J1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9t
aXVtTGludXguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5oLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1U
aGVtZUNocm9taXVtTGludXg6OnRodW1iSW5hY3RpdmVDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6dGh1bWJBY3RpdmVDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6dHJhY2tDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6UGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXgpOgorCiAyMDExLTEwLTAyICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk1NTAyKTogQXNzZXJ0aW9uIGZhaWx1cmUgaW4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhEb3VibGUoKSB3aGVuIG1lZGlhIHF1ZXJ5
IHNwZWNpZmllcyB1bml0LWxlc3MgbGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmEzZjkxMjNk
Yzc5ZTEzNDYzZmNlZjA1NzZlMGUwODRkMWI5MzE2Mi4uODk1ZmIzMjkxMmM0YTQzNDdlYTMxMDcx
OTg1NDllNzY2ZGZlYjllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE4OSw4ICszMTg5LDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJv
bWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVu
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1
cHBvcnQuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNo
cm9taXVtR3RrLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1U
aGVtZUNocm9taXVtR3RrLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cENvbnRhaW5lci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2NTI5NDgyNWUwNmIzMTgwNWY2ODgyOTg2OTU0YTY5NDZmOWI0YmI5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11
bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNfdGh1bWJJbmFjdGl2ZUNvbG9yID0g
MHhlYWVhZWE7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNfdGh1bWJBY3Rp
dmVDb2xvciA9IDB4ZjRmNGY0OwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrOjpz
X3RyYWNrQ29sb3IgPSAweGQzZDNkMzsKLQotdm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6
OnNldFNjcm9sbGJhckNvbG9ycygKLSAgICBTa0NvbG9yIGluYWN0aXZlQ29sb3IsIFNrQ29sb3Ig
YWN0aXZlQ29sb3IsIFNrQ29sb3IgdHJhY2tDb2xvcikKLXsKLSAgICBzX3RodW1iSW5hY3RpdmVD
b2xvciA9IGluYWN0aXZlQ29sb3I7Ci0gICAgc190aHVtYkFjdGl2ZUNvbG9yID0gYWN0aXZlQ29s
b3I7Ci0gICAgc190cmFja0NvbG9yID0gdHJhY2tDb2xvcjsKLX0KLQotc3RhdGljIFNrU2NhbGFy
IGNsYW1wKFNrU2NhbGFyIHZhbHVlLCBTa1NjYWxhciBtaW4sIFNrU2NhbGFyIG1heCkKLXsKLSAg
ICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgodmFsdWUsIG1pbiksIG1heCk7Ci19Ci0KLVNrQ29s
b3IgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrOjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNr
U2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVu
QW1vdW50KQotewotICAgIFNrU2NhbGFyIGNvbG9yWzNdOwotICAgIGNvbG9yWzBdID0gaHN2WzBd
OwotICAgIGNvbG9yWzFdID0gY2xhbXAoaHN2WzFdICsgc2F0dXJhdGVBbW91bnQsIDAuMCwgMS4w
KTsKLSAgICBjb2xvclsyXSA9IGNsYW1wKGhzdlsyXSArIGJyaWdodGVuQW1vdW50LCAwLjAsIDEu
MCk7Ci0gICAgcmV0dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7Ci19Ci0KLVNrQ29sb3IgUGxhdGZv
cm1UaGVtZUNocm9taXVtR3RrOjpvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwg
Y29uc3QgU2tTY2FsYXIgaHN2MlszXSkKLXsKLSAgICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZl
IHdheSB0b28gbXVjaCBjb250cm9sIG92ZXIgdGhlIGxheW91dCBvZgotICAgIC8vIHRoZSBzY3Jv
bGxiYXIuIFdlIG1pZ2h0IGJlIGFibGUgdG8gbW9yZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cwot
ICAgIC8vIGxvb2stYW5kLWZlZWwsIGlmIHdlIHNlbnQgd2hvbGUgaW1hZ2VzIGluc3RlYWQgb2Yg
anVzdCBjb2xvcnMKLSAgICAvLyBmcm9tIHRoZSBicm93c2VyIHRvIHRoZSByZW5kZXJlci4gQnV0
IGV2ZW4gdGhlbiwgc29tZSB0aGVtZXMKLSAgICAvLyB3b3VsZCBqdXN0IGJyZWFrLgotICAgIC8v
Ci0gICAgLy8gU28sIGluc3RlYWQsIHdlIGRvbid0IGV2ZW4gdHJ5IHRvIDEwMCUgcmVwbGljYXRl
IHRoZSBsb29rIG9mCi0gICAgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIuIFdlIHJlbmRlciBvdXIg
b3duIHZlcnNpb24sIGJ1dCB3ZSBtYWtlCi0gICAgLy8gc3VyZSB0byBwaWNrIGNvbG9ycyB0aGF0
IGJsZW5kIGluIG5pY2VseSB3aXRoIHRoZSBzeXN0ZW0gR1RLCi0gICAgLy8gdGhlbWUuIEluIG1v
c3QgY2FzZXMsIHdlIGNhbiBqdXN0IHNhbXBsZSBhIGNvdXBsZSBvZiBwaXhlbHMKLSAgICAvLyBm
cm9tIHRoZSBzeXN0ZW0gc2Nyb2xsYmFyIGFuZCB1c2UgdGhvc2UgY29sb3JzIHRvIGRyYXcgb3Vy
Ci0gICAgLy8gc2Nyb2xsYmFyLgotICAgIC8vCi0gICAgLy8gVGhpcyB3b3JrcyBmaW5lIGZvciB0
aGUgdHJhY2sgY29sb3IgYW5kIHRoZSBvdmVyYWxsIHRodW1iCi0gICAgLy8gY29sb3IuIEJ1dCBp
dCBmYWlscyBzcGVjdGFjdWxhcmx5IGZvciB0aGUgb3V0bGluZSBjb2xvciB1c2VkCi0gICAgLy8g
YXJvdW5kIHRoZSB0aHVtYiBwaWVjZS4gIE5vdCBhbGwgdGhlbWVzIGhhdmUgYSBjbGVhcmx5IGRl
ZmluZWQKLSAgICAvLyBvdXRsaW5lLiBGb3Igc29tZSBvZiB0aGVtIGl0IGlzIHBhcnRpYWxseSB0
cmFuc3BhcmVudCwgYW5kIGZvcgotICAgIC8vIG90aGVycyB0aGUgdGhpY2tuZXNzIGlzIHZlcnkg
dW5wcmVkaWN0YWJsZS4KLSAgICAvLwotICAgIC8vIFNvLCBpbnN0ZWFkIG9mIHRyeWluZyB0byBh
cHByb3hpbWF0ZSB0aGUgc3lzdGVtIHRoZW1lLCB3ZQotICAgIC8vIGluc3RlYWQgdHJ5IHRvIGNv
bXB1dGUgYSByZWFzb25hYmxlIGxvb2tpbmcgY2hvaWNlIGJhc2VkIG9uIHRoZQotICAgIC8vIGtu
b3duIGNvbG9yIG9mIHRoZSB0cmFjayBhbmQgdGhlIHRodW1iIHBpZWNlLiBUaGlzIGlzIGRpZmZp
Y3VsdAotICAgIC8vIHdoZW4gdHJ5aW5nIHRvIGRlYWwgYm90aCB3aXRoIGhpZ2gtIGFuZCBsb3ct
Y29udHJhc3QgdGhlbWVzLAotICAgIC8vIGFuZCBib3RoIHdpdGggcG9zaXRpdmUgYW5kIGludmVy
dGVkIHRoZW1lcy4KLSAgICAvLwotICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiB0
ZXN0ZWQgdG8gbG9vayBPSyB3aXRoIGFsbCBvZiB0aGUKLSAgICAvLyBkZWZhdWx0IEdUSyB0aGVt
ZXMuCi0gICAgU2tTY2FsYXIgbWluRGlmZiA9IGNsYW1wKChoc3YxWzFdICsgaHN2MlsxXSkgKiAx
LjIsIDAuMjgsIDAuNSk7Ci0gICAgU2tTY2FsYXIgZGlmZiA9IGNsYW1wKGZhYnMoaHN2MVsyXSAt
IGhzdjJbMl0pIC8gMiwgbWluRGlmZiwgMC41KTsKLQotICAgIGlmIChoc3YxWzJdICsgaHN2Mlsy
XSA+IDEuMCkKLSAgICAgICAgZGlmZiA9IC1kaWZmOwotCi0gICAgcmV0dXJuIHNhdHVyYXRlQW5k
QnJpZ2h0ZW4oaHN2MiwgLTAuMiwgZGlmZik7Ci19Ci0KLXZvaWQgUGxhdGZvcm1UaGVtZUNocm9t
aXVtR3RrOjpwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJl
Y3QmIHJlY3QsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyBzdGF0ZXMp
Ci17Ci0gICAgU2tDYW52YXMqIGNvbnN0IGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y2FudmFzKCk7Ci0gICAgaW50IHdpZHRoTWlkZGxlLCBsZW5ndGhNaWRkbGU7Ci0gICAgU2tQYWlu
dCBwYWludDsKLSAgICBpZiAoZGlyZWN0aW9uID09IE5vcnRoIHx8IGRpcmVjdGlvbiA9PSBTb3V0
aCkgewotICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOwotICAgICAg
ICBsZW5ndGhNaWRkbGUgPSByZWN0LmhlaWdodCgpIC8gMiArIDE7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7Ci0gICAgICAgIHdpZHRo
TWlkZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOwotICAgIH0KLQotICAgIC8vIENhbGN1bGF0
ZSBidXR0b24gY29sb3IuCi0gICAgU2tTY2FsYXIgdHJhY2tIU1ZbM107Ci0gICAgU2tDb2xvclRv
SFNWKHRyYWNrQ29sb3IoKSwgdHJhY2tIU1YpOwotICAgIFNrQ29sb3IgYnV0dG9uQ29sb3IgPSBz
YXR1cmF0ZUFuZEJyaWdodGVuKHRyYWNrSFNWLCAwLCAwLjIpOwotICAgIFNrQ29sb3IgYmFja2dy
b3VuZENvbG9yID0gYnV0dG9uQ29sb3I7Ci0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkg
ewotICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihi
dXR0b25Db2xvciwgYnV0dG9uSFNWKTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFu
ZEJyaWdodGVuKGJ1dHRvbkhTViwgMCwgLTAuMSk7Ci0gICAgfSBlbHNlIGlmIChzdGF0ZXMgJiBI
b3ZlclN0YXRlKSB7Ci0gICAgICAgIFNrU2NhbGFyIGJ1dHRvbkhTVlszXTsKLSAgICAgICAgU2tD
b2xvclRvSFNWKGJ1dHRvbkNvbG9yLCBidXR0b25IU1YpOwotICAgICAgICBidXR0b25Db2xvciA9
IHNhdHVyYXRlQW5kQnJpZ2h0ZW4oYnV0dG9uSFNWLCAwLCAwLjA1KTsKLSAgICB9Ci0KLSAgICBT
a0lSZWN0IHNrcmVjdDsKLSAgICBza3JlY3Quc2V0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC54
KCkgKyByZWN0LndpZHRoKCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7Ci0gICAgLy8gUGFp
bnQgdGhlIGJhY2tncm91bmQgKHRoZSBhcmVhIHZpc2libGUgYmVoaW5kIHRoZSByb3VuZGVkIGNv
cm5lcnMpLgotICAgIHBhaW50LnNldENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgY2FudmFz
LT5kcmF3SVJlY3Qoc2tyZWN0LCBwYWludCk7Ci0KLSAgICAvLyBQYWludCB0aGUgYnV0dG9uJ3Mg
b3V0bGluZSBhbmQgZmlsbCB0aGUgbWlkZGxlCi0gICAgU2tQYXRoIG91dGxpbmU7Ci0gICAgc3dp
dGNoIChkaXJlY3Rpb24pIHsKLSAgICBjYXNlIE5vcnRoOgotICAgICAgICBvdXRsaW5lLm1vdmVU
byhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpICsgMC41KTsKLSAgICAg
ICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAgICAgb3V0
bGluZS5yTGluZVRvKDIsIC0yKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qud2lkdGgo
KSAtIDUsIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxp
bmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gMik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgU291dGg6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgMC41LCByZWN0Lnko
KSAtIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gMik7
Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRv
KHJlY3Qud2lkdGgoKSAtIDUsIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgLTIpOwot
ICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0gMikpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEVhc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgp
IC0gMC41LCByZWN0LnkoKSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0Lndp
ZHRoKCkgLSAyLCAwKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBv
dXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDUpOwotICAgICAgICBvdXRsaW5lLnJM
aW5lVG8oLTIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLShyZWN0LndpZHRoKCkgLSAy
KSwgMCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2VzdDoKLSAgICAgICAgb3V0bGluZS5t
b3ZlVG8ocmVjdC54KCkgKyByZWN0LndpZHRoKCkgKyAwLjUsIHJlY3QueSgpICsgMC41KTsKLSAg
ICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAgICAgICBv
dXRsaW5lLnJMaW5lVG8oLTIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5o
ZWlnaHQoKSAtIDUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91
dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSAyLCAwKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIG91dGxpbmUuY2xvc2UoKTsKLQotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKLSAgICBwYWludC5zZXRDb2xvcihidXR0b25Db2xvcik7Ci0gICAgY2FudmFz
LT5kcmF3UGF0aChvdXRsaW5lLCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRBbnRpQWxpYXModHJ1
ZSk7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgU2tT
Y2FsYXIgdGh1bWJIU1ZbM107Ci0gICAgU2tDb2xvclRvSFNWKHRodW1iSW5hY3RpdmVDb2xvcigp
LCB0aHVtYkhTVik7Ci0gICAgcGFpbnQuc2V0Q29sb3Iob3V0bGluZUNvbG9yKHRyYWNrSFNWLCB0
aHVtYkhTVikpOwotICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOwotCi0gICAg
Ly8gSWYgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZCBvciByZWFkLW9ubHksIHRoZSBhcnJvdyBpcyBk
cmF3biB3aXRoIHRoZSBvdXRsaW5lIGNvbG9yLgotICAgIGlmIChzdGF0ZXMgJiBFbmFibGVkU3Rh
dGUgJiYgIShzdGF0ZXMgJiBSZWFkT25seVN0YXRlKSkKLSAgICAgICAgcGFpbnQuc2V0Q29sb3Io
U0tfQ29sb3JCTEFDSyk7Ci0KLSAgICBwYWludC5zZXRBbnRpQWxpYXMoZmFsc2UpOwotICAgIHBh
aW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLQotICAgIFNrUGF0aCBwYXRoOwot
ICAgIC8vIFRoZSBjb25zdGFudHMgaW4gdGhpcyBibG9jayBvZiBjb2RlIGFyZSBoYW5kLXRhaWxv
cmVkIHRvIHByb2R1Y2UgZ29vZAotICAgIC8vIGxvb2tpbmcgYXJyb3dzIHdpdGhvdXQgYW50aS1h
bGlhc2luZy4KLSAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgTm9ydGg6Ci0gICAg
ICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgd2lkdGhNaWRkbGUgLSA0LCByZWN0LnkoKSArIGxl
bmd0aE1pZGRsZSArIDIpOwotICAgICAgICBwYXRoLnJMaW5lVG8oNywgMCk7Ci0gICAgICAgIHBh
dGguckxpbmVUbygtNCwgLTQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvdXRoOgotICAg
ICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBs
ZW5ndGhNaWRkbGUgLSAzKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwotICAgICAgICBw
YXRoLnJMaW5lVG8oLTQsIDQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVhc3Q6Ci0gICAg
ICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlIC0gMywgcmVjdC55KCkgKyB3
aWR0aE1pZGRsZSAtIDQpOwotICAgICAgICBwYXRoLnJMaW5lVG8oMCwgNyk7Ci0gICAgICAgIHBh
dGguckxpbmVUbyg0LCAtNCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2VzdDoKLSAgICAg
ICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyBsZW5ndGhNaWRkbGUgKyAxLCByZWN0LnkoKSArIHdp
ZHRoTWlkZGxlIC0gNSk7Ci0gICAgICAgIHBhdGguckxpbmVUbygwLCA5KTsKLSAgICAgICAgcGF0
aC5yTGluZVRvKC00LCAtNCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBwYXRoLmNsb3Nl
KCk7Ci0KLSAgICBjYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBiZGMyNjgzZGYyZGYxNzM0N2ZiZDYxMzkxOGNlNjVlNWMyZTQ5MTAwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5oCisrKyAvZGV2L251
bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrX2gKLSNk
ZWZpbmUgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKLSNpbmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiU2tTY2FsYXIuaCIK
LSNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
UGxhdGZvcm1UaGVtZUNocm9taXVtR3RrIHsKLXB1YmxpYzoKLSAgICBlbnVtIEFycm93RGlyZWN0
aW9uIHsKLSAgICAgICAgTm9ydGgsCi0gICAgICAgIEVhc3QsCi0gICAgICAgIFNvdXRoLAotICAg
ICAgICBXZXN0LAotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnMo
dW5zaWduZWQgaW5hY3RpdmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpOwotICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkluYWN0
aXZlQ29sb3IoKSB7IHJldHVybiBzX3RodW1iSW5hY3RpdmVDb2xvcjsgfQotICAgIHN0YXRpYyB1
bnNpZ25lZCB0aHVtYkFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190aHVtYkFjdGl2ZUNvbG9yOyB9
Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRyYWNrQ29sb3IoKSB7IHJldHVybiBzX3RyYWNrQ29sb3I7
IH0KLQotICAgIHN0YXRpYyBTa0NvbG9yIHNhdHVyYXRlQW5kQnJpZ2h0ZW4oY29uc3QgU2tTY2Fs
YXIgaHN2WzNdLCBTa1NjYWxhciBzYXR1cmF0ZUFtb3VudCwgU2tTY2FsYXIgYnJpZ2h0ZW5BbW91
bnQpOwotICAgIHN0YXRpYyBTa0NvbG9yIG91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3Yx
WzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKTsKLSAgICBzdGF0aWMgdm9pZCBwYWludEFycm93
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBBcnJvd0RpcmVjdGlvbiwg
Q29udHJvbFN0YXRlcyk7Ci0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1UaGVtZUNocm9taXVtR3Rr
KCkge30KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iSW5hY3RpdmVDb2xvcjsKLSAgICBz
dGF0aWMgdW5zaWduZWQgc190aHVtYkFjdGl2ZUNvbG9yOwotICAgIHN0YXRpYyB1bnNpZ25lZCBz
X3RyYWNrQ29sb3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQ
bGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJlNGY4NTBhODVlMjc2YTU5YjBiOTAyMzVjMDE5MGQwYWQ1OTNkMDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190aHVtYklu
YWN0aXZlQ29sb3IgPSAweGVhZWFlYTsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxp
bnV4OjpzX3RodW1iQWN0aXZlQ29sb3IgPSAweGY0ZjRmNDsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhl
bWVDaHJvbWl1bUxpbnV4OjpzX3RyYWNrQ29sb3IgPSAweGQzZDNkMzsKKwordm9pZCBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1MaW51eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKAorICAgIFNrQ29sb3IgaW5h
Y3RpdmVDb2xvciwgU2tDb2xvciBhY3RpdmVDb2xvciwgU2tDb2xvciB0cmFja0NvbG9yKQorewor
ICAgIHNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gaW5hY3RpdmVDb2xvcjsKKyAgICBzX3RodW1iQWN0
aXZlQ29sb3IgPSBhY3RpdmVDb2xvcjsKKyAgICBzX3RyYWNrQ29sb3IgPSB0cmFja0NvbG9yOwor
fQorCitzdGF0aWMgU2tTY2FsYXIgY2xhbXAoU2tTY2FsYXIgdmFsdWUsIFNrU2NhbGFyIG1pbiwg
U2tTY2FsYXIgbWF4KQoreworICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCh2YWx1ZSwgbWlu
KSwgbWF4KTsKK30KKworU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2F0dXJh
dGVBbmRCcmlnaHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1v
dW50LCBTa1NjYWxhciBicmlnaHRlbkFtb3VudCkKK3sKKyAgICBTa1NjYWxhciBjb2xvclszXTsK
KyAgICBjb2xvclswXSA9IGhzdlswXTsKKyAgICBjb2xvclsxXSA9IGNsYW1wKGhzdlsxXSArIHNh
dHVyYXRlQW1vdW50LCAwLjAsIDEuMCk7CisgICAgY29sb3JbMl0gPSBjbGFtcChoc3ZbMl0gKyBi
cmlnaHRlbkFtb3VudCwgMC4wLCAxLjApOworICAgIHJldHVybiBTa0hTVlRvQ29sb3IoY29sb3Ip
OworfQorCitTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpvdXRsaW5lQ29sb3Io
Y29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSkKK3sKKyAgICAv
LyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBjb250cm9sIG92ZXIgdGhlIGxh
eW91dCBvZgorICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0IGJlIGFibGUgdG8gbW9yZSBj
bG9zZWx5IGFwcHJveGltYXRlIGl0cworICAgIC8vIGxvb2stYW5kLWZlZWwsIGlmIHdlIHNlbnQg
d2hvbGUgaW1hZ2VzIGluc3RlYWQgb2YganVzdCBjb2xvcnMKKyAgICAvLyBmcm9tIHRoZSBicm93
c2VyIHRvIHRoZSByZW5kZXJlci4gQnV0IGV2ZW4gdGhlbiwgc29tZSB0aGVtZXMKKyAgICAvLyB3
b3VsZCBqdXN0IGJyZWFrLgorICAgIC8vCisgICAgLy8gU28sIGluc3RlYWQsIHdlIGRvbid0IGV2
ZW4gdHJ5IHRvIDEwMCUgcmVwbGljYXRlIHRoZSBsb29rIG9mCisgICAgLy8gdGhlIG5hdGl2ZSBz
Y3JvbGxiYXIuIFdlIHJlbmRlciBvdXIgb3duIHZlcnNpb24sIGJ1dCB3ZSBtYWtlCisgICAgLy8g
c3VyZSB0byBwaWNrIGNvbG9ycyB0aGF0IGJsZW5kIGluIG5pY2VseSB3aXRoIHRoZSBzeXN0ZW0g
R1RLCisgICAgLy8gdGhlbWUuIEluIG1vc3QgY2FzZXMsIHdlIGNhbiBqdXN0IHNhbXBsZSBhIGNv
dXBsZSBvZiBwaXhlbHMKKyAgICAvLyBmcm9tIHRoZSBzeXN0ZW0gc2Nyb2xsYmFyIGFuZCB1c2Ug
dGhvc2UgY29sb3JzIHRvIGRyYXcgb3VyCisgICAgLy8gc2Nyb2xsYmFyLgorICAgIC8vCisgICAg
Ly8gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgdHJhY2sgY29sb3IgYW5kIHRoZSBvdmVyYWxsIHRo
dW1iCisgICAgLy8gY29sb3IuIEJ1dCBpdCBmYWlscyBzcGVjdGFjdWxhcmx5IGZvciB0aGUgb3V0
bGluZSBjb2xvciB1c2VkCisgICAgLy8gYXJvdW5kIHRoZSB0aHVtYiBwaWVjZS4gTm90IGFsbCB0
aGVtZXMgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZAorICAgIC8vIG91dGxpbmUuIEZvciBzb21lIG9m
IHRoZW0gaXQgaXMgcGFydGlhbGx5IHRyYW5zcGFyZW50LCBhbmQgZm9yCisgICAgLy8gb3RoZXJz
IHRoZSB0aGlja25lc3MgaXMgdmVyeSB1bnByZWRpY3RhYmxlLgorICAgIC8vCisgICAgLy8gU28s
IGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFwcHJveGltYXRlIHRoZSBzeXN0ZW0gdGhlbWUsIHdlCisg
ICAgLy8gaW5zdGVhZCB0cnkgdG8gY29tcHV0ZSBhIHJlYXNvbmFibGUgbG9va2luZyBjaG9pY2Ug
YmFzZWQgb24gdGhlCisgICAgLy8ga25vd24gY29sb3Igb2YgdGhlIHRyYWNrIGFuZCB0aGUgdGh1
bWIgcGllY2UuIFRoaXMgaXMgZGlmZmljdWx0CisgICAgLy8gd2hlbiB0cnlpbmcgdG8gZGVhbCBi
b3RoIHdpdGggaGlnaC0gYW5kIGxvdy1jb250cmFzdCB0aGVtZXMsCisgICAgLy8gYW5kIGJvdGgg
d2l0aCBwb3NpdGl2ZSBhbmQgaW52ZXJ0ZWQgdGhlbWVzLgorICAgIC8vCisgICAgLy8gVGhlIGZv
bGxvd2luZyBjb2RlIGhhcyBiZWVuIHRlc3RlZCB0byBsb29rIE9LIHdpdGggYWxsIG9mIHRoZQor
ICAgIC8vIGRlZmF1bHQgR1RLIHRoZW1lcy4KKyAgICBTa1NjYWxhciBtaW5EaWZmID0gY2xhbXAo
KGhzdjFbMV0gKyBoc3YyWzFdKSAqIDEuMiwgMC4yOCwgMC41KTsKKyAgICBTa1NjYWxhciBkaWZm
ID0gY2xhbXAoZmFicyhoc3YxWzJdIC0gaHN2MlsyXSkgLyAyLCBtaW5EaWZmLCAwLjUpOworCisg
ICAgaWYgKGhzdjFbMl0gKyBoc3YyWzJdID4gMS4wKQorICAgICAgICBkaWZmID0gLWRpZmY7CisK
KyAgICByZXR1cm4gc2F0dXJhdGVBbmRCcmlnaHRlbihoc3YyLCAtMC4yLCBkaWZmKTsKK30KKwor
dm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRBcnJvd0J1dHRvbihHcmFwaGlj
c0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBcnJvd0RpcmVjdGlvbiBkaXJlY3Rp
b24sIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQoreworICAgIFNrQ2FudmFzKiBjb25zdCBjYW52YXMg
PSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIGludCB3aWR0aE1pZGRsZSwg
bGVuZ3RoTWlkZGxlOworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBO
b3J0aCB8fCBkaXJlY3Rpb24gPT0gU291dGgpIHsKKyAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0
LndpZHRoKCkgLyAyICsgMTsKKyAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAv
IDIgKyAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lkdGgo
KSAvIDIgKyAxOworICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsK
KyAgICB9CisKKyAgICAvLyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgorICAgIFNrU2NhbGFyIHRy
YWNrSFNWWzNdOworICAgIFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRyYWNrSFNWKTsKKyAg
ICBTa0NvbG9yIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0cmFja0hTViwgMCwg
MC4yKTsKKyAgICBTa0NvbG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNvbG9yOworICAgIGlm
IChzdGF0ZXMgJiBQcmVzc2VkU3RhdGUpIHsKKyAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNd
OworICAgICAgICBTa0NvbG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7CisgICAgICAg
IGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIC0wLjEpOwor
ICAgIH0gZWxzZSBpZiAoc3RhdGVzICYgSG92ZXJTdGF0ZSkgeworICAgICAgICBTa1NjYWxhciBi
dXR0b25IU1ZbM107CisgICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNW
KTsKKyAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwg
MCwgMC4wNSk7CisgICAgfQorCisgICAgU2tJUmVjdCBza3JlY3Q7CisgICAgc2tyZWN0LnNldChy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCByZWN0LnkoKSArIHJl
Y3QuaGVpZ2h0KCkpOworICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2aXNp
YmxlIGJlaGluZCB0aGUgcm91bmRlZCBjb3JuZXJzKS4KKyAgICBwYWludC5zZXRDb2xvcihiYWNr
Z3JvdW5kQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFpbnQpOworCisg
ICAgLy8gUGFpbnQgdGhlIGJ1dHRvbidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1pZGRsZQorICAg
IFNrUGF0aCBvdXRsaW5lOworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBOb3J0
aDoKKyAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpICsgcmVj
dC5oZWlnaHQoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3QuaGVp
Z2h0KCkgLSAyKSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7CisgICAgICAgIG91
dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGlu
ZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXRoOgorICAgICAgICBvdXRsaW5lLm1vdmVU
byhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgLSAwLjUpOworICAgICAgICBvdXRsaW5lLnJMaW5l
VG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7
CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAgICAg
b3V0bGluZS5yTGluZVRvKDIsIC0yKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVj
dC5oZWlnaHQoKSAtIDIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0OgorICAgICAg
ICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUpOworICAgICAg
ICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7CisgICAgICAgIG91dGxpbmUu
ckxpbmVUbygyLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkg
LSA1KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAgICAgb3V0bGluZS5y
TGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlc3Q6CisgICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53aWR0aCgpICsg
MC41LCByZWN0LnkoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qud2lk
dGgoKSAtIDIpLCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAgICAg
b3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKKyAgICAgICAgb3V0bGluZS5y
TGluZVRvKDIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwg
MCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXRsaW5lLmNsb3NlKCk7CisKKyAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGFpbnQuc2V0Q29sb3Io
YnV0dG9uQ29sb3IpOworICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOworCisg
ICAgcGFpbnQuc2V0QW50aUFsaWFzKHRydWUpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6
OmtTdHJva2VfU3R5bGUpOworICAgIFNrU2NhbGFyIHRodW1iSFNWWzNdOworICAgIFNrQ29sb3JU
b0hTVih0aHVtYkluYWN0aXZlQ29sb3IoKSwgdGh1bWJIU1YpOworICAgIHBhaW50LnNldENvbG9y
KG91dGxpbmVDb2xvcih0cmFja0hTViwgdGh1bWJIU1YpKTsKKyAgICBjYW52YXMtPmRyYXdQYXRo
KG91dGxpbmUsIHBhaW50KTsKKworICAgIC8vIElmIHRoZSBidXR0b24gaXMgZGlzYWJsZWQgb3Ig
cmVhZC1vbmx5LCB0aGUgYXJyb3cgaXMgZHJhd24gd2l0aCB0aGUgb3V0bGluZSBjb2xvci4KKyAg
ICBpZiAoc3RhdGVzICYgRW5hYmxlZFN0YXRlICYmICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkp
CisgICAgICAgIHBhaW50LnNldENvbG9yKFNLX0NvbG9yQkxBQ0spOworCisgICAgcGFpbnQuc2V0
QW50aUFsaWFzKGZhbHNlKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHls
ZSk7CisKKyAgICBTa1BhdGggcGF0aDsKKyAgICAvLyBUaGUgY29uc3RhbnRzIGluIHRoaXMgYmxv
Y2sgb2YgY29kZSBhcmUgaGFuZC10YWlsb3JlZCB0byBwcm9kdWNlIGdvb2QKKyAgICAvLyBsb29r
aW5nIGFycm93cyB3aXRob3V0IGFudGktYWxpYXNpbmcuCisgICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKKyAgICBjYXNlIE5vcnRoOgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRo
TWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgKyAyKTsKKyAgICAgICAgcGF0aC5y
TGluZVRvKDcsIDApOworICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTb3V0aDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0
aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxlIC0gMyk7CisgICAgICAgIHBhdGgu
ckxpbmVUbyg3LCAwKTsKKyAgICAgICAgcGF0aC5yTGluZVRvKC00LCA0KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFYXN0OgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0
aE1pZGRsZSAtIDMsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUgLSA0KTsKKyAgICAgICAgcGF0aC5y
TGluZVRvKDAsIDcpOworICAgICAgICBwYXRoLnJMaW5lVG8oNCwgLTQpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdlc3Q6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3Ro
TWlkZGxlICsgMSwgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDUpOworICAgICAgICBwYXRoLnJM
aW5lVG8oMCwgOSk7CisgICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgcGF0aC5jbG9zZSgpOworCisgICAgY2FudmFzLT5kcmF3UGF0aChwYXRo
LCBwYWludCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzYWViNjQyOWU1MjkyMWRmYzFiNGYwYjVmYmZjMzVkZDY2
MWEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXhfaAorI2RlZmluZSBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiU2tD
b2xvci5oIgorI2luY2x1ZGUgIlNrU2NhbGFyLmgiCisjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
IHsKK3B1YmxpYzoKKyAgICBlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICAgICAgTm9ydGgsCisg
ICAgICAgIEVhc3QsCisgICAgICAgIFNvdXRoLAorICAgICAgICBXZXN0LAorICAgIH07CisKKyAg
ICBzdGF0aWMgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlQ29sb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3Ip
OworICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkluYWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3Ro
dW1iSW5hY3RpdmVDb2xvcjsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkFjdGl2ZUNvbG9y
KCkgeyByZXR1cm4gc190aHVtYkFjdGl2ZUNvbG9yOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIHRy
YWNrQ29sb3IoKSB7IHJldHVybiBzX3RyYWNrQ29sb3I7IH0KKworICAgIHN0YXRpYyBTa0NvbG9y
IHNhdHVyYXRlQW5kQnJpZ2h0ZW4oY29uc3QgU2tTY2FsYXIgaHN2WzNdLCBTa1NjYWxhciBzYXR1
cmF0ZUFtb3VudCwgU2tTY2FsYXIgYnJpZ2h0ZW5BbW91bnQpOworICAgIHN0YXRpYyBTa0NvbG9y
IG91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3Yy
WzNdKTsKKyAgICBzdGF0aWMgdm9pZCBwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmLCBBcnJvd0RpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyk7CisKK3ByaXZh
dGU6CisgICAgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXgoKSB7IH0KKworICAgIHN0YXRpYyB1
bnNpZ25lZCBzX3RodW1iSW5hY3RpdmVDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgc190aHVt
YkFjdGl2ZUNvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RyYWNrQ29sb3I7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ2Y2RjNWM2NWI1NjE1MWZiNzY0
NTk5OGJiY2FhNGVmMzk5YjljNTYuLjFlMWE4ZTA0NmEwZDI3MWUwYWRmOWY2YTBmOThjOGYzZDFl
MDIxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKyAgMjAx
MS0xMC0wMiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICAg
IFtDaHJvbWl1bV0gTW92ZWQgZmlsZXMgdG93YXJkcyBHVEsgcmVtb3ZhbAorICAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTIyOQorCisgICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRTY3JvbGxiYXJDb2xvcnMpOgorICAgICAgICAqIHNyYy9saW51eC9XZWJGb250SW5mby5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViRm9udElu
Zm8uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2UpOgorCiAy
MDExLTA5LTMwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAg
W2Nocm9taXVtXSBUcmFjayBzZXBhcmF0ZSBzY3JvbGwgZGVsdGFzIG9uIHRoZSBjb21wb3NpdG9y
IHRocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDY2MzBiMzUxMTdiMGQwMzY2
ZDMwZGM5MjBiMmZkYzg2ZDAyY2M1NjAuLjUyNDQwMzM4OGIxNDRkZGViNTJjOTZiZDhhYWI4MTZh
MDJjZjkzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM3MSw3ICszNzEsNiBA
QAogICAgICAgICAgICAgICAgICdzcmMvR2VvbG9jYXRpb25DbGllbnRQcm94eS5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oJywKLSAgICAgICAgICAgICAg
ICAnc3JjL2d0ay9XZWJGb250SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvZ3RrL1dl
YklucHV0RXZlbnRGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDYWxsYmFj
a3NQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSURCQ2FsbGJhY2tzUHJveHkuaCcs
CkBAIC0zOTUsNiArMzk0LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1w
bC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250UmVuZGVyaW5nLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9saW51eC9XZWJGb250UmVuZGVyU3R5bGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL2xpbnV4L1dlYlJlbmRlclRoZW1lLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYjNiMTdiYTZiMTIxOGQ0ZmFiM2VmYjhkNjU5N2U1
M2Q1YWZiOGFjZi4uNzllODVhMmQzZDNkMTQ1YjczY2I4YzRhMjY4M2M1ODI3MTkyMGI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODUsNyArODUsNyBA
QAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUg
IlBvcHVwQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCkBAIC0yMzA3
LDcgKzIzMDcsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRTY3JvbGxiYXJDb2xvcnModW5zaWdu
ZWQgaW5hY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBhY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCB0cmFja0NvbG9yKSB7CiAjaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKLSAg
ICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNv
bG9yLAorICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMo
aW5hY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3RpdmVDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFja0NvbG9yKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL2d0ay9XZWJGb250SW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3YWQxN2JhNjU4ZTRkYTFhZmRkMjA2OTZjYWU2NDIxNWNhZmZmYzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCi0jaW5jbHVkZSAi
V2ViRm9udFJlbmRlclN0eWxlLmgiCi0KLSNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcu
aD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1XZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFy
cyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0
IGNoYXIqIHByZWZlcnJlZExvY2FsZSkKLXsKLSAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJT
ZXRDcmVhdGUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsr
aSkgewotICAgICAgICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQotICAgICAg
ICAgJiYgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNbaV0pCi0gICAgICAgICAmJiBp
ICE9IG51bUNoYXJhY3RlcnMgLSAxCi0gICAgICAgICAmJiBVMTZfSVNfVFJBSUwoY2hhcmFjdGVy
c1tpICsgMV0pKSB7Ci0gICAgICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIoY3NldCwgVTE2X0dF
VF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcnNbaV0sIGNoYXJhY3RlcnNbaSsxXSkpOwotICAgICAg
ICAgIGkrKzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIo
Y3NldCwgY2hhcmFjdGVyc1tpXSk7Ci0gICAgfQotICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZj
UGF0dGVybkNyZWF0ZSgpOwotCi0gICAgRmNWYWx1ZSBmY3ZhbHVlOwotICAgIGZjdmFsdWUudHlw
ZSA9IEZjVHlwZUNoYXJTZXQ7Ci0gICAgZmN2YWx1ZS51LmMgPSBjc2V0OwotICAgIEZjUGF0dGVy
bkFkZChwYXR0ZXJuLCBGQ19DSEFSU0VULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIGZjdmFs
dWUudHlwZSA9IEZjVHlwZUJvb2w7Ci0gICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7Ci0gICAgRmNQ
YXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAg
IGlmIChwcmVmZXJyZWRMb2NhbGUpIHsKLSAgICAgICAgRmNMYW5nU2V0KiBsYW5nc2V0ID0gRmNM
YW5nU2V0Q3JlYXRlKCk7Ci0gICAgICAgIEZjTGFuZ1NldEFkZChsYW5nc2V0LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IEZjQ2hhcjggKj4ocHJlZmVycmVkTG9jYWxlKSk7Ci0gICAgICAgIEZjUGF0
dGVybkFkZExhbmdTZXQocGF0dGVybiwgRkNfTEFORywgbGFuZ3NldCk7Ci0gICAgICAgIEZjTGFu
Z1NldERlc3Ryb3kobGFuZ3NldCk7Ci0gICAgfQotCi0gICAgRmNDb25maWdTdWJzdGl0dXRlKDAs
IHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKLSAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRl
cm4pOwotCi0gICAgRmNSZXN1bHQgcmVzdWx0OwotICAgIEZjRm9udFNldCogZm9udFNldCA9IEZj
Rm9udFNvcnQoMCwgcGF0dGVybiwgMCwgMCwgJnJlc3VsdCk7Ci0gICAgRmNQYXR0ZXJuRGVzdHJv
eShwYXR0ZXJuKTsKLSAgICBGY0NoYXJTZXREZXN0cm95KGNzZXQpOwotCi0gICAgaWYgKCFmb250
U2V0KQotICAgICAgICByZXR1cm4gV2ViQ1N0cmluZygpOwotCi0gICAgLy8gT2xkZXIgdmVyc2lv
bnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fubm90IHNlbGVjdAotICAg
IC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2ZSB0byBtYW51YWxseSBmaWx0ZXIgdGhl
IHJlc3VsdHMuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250U2V0LT5uZm9udDsgKytpKSB7
Ci0gICAgICAgIEZjUGF0dGVybiogY3VycmVudCA9IGZvbnRTZXQtPmZvbnRzW2ldOwotICAgICAg
ICBGY0Jvb2wgaXNTY2FsYWJsZTsKLQotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0Qm9vbChjdXJy
ZW50LCBGQ19TQ0FMQUJMRSwgMCwgJmlzU2NhbGFibGUpICE9IEZjUmVzdWx0TWF0Y2gKLSAgICAg
ICAgICAgIHx8ICFpc1NjYWxhYmxlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAg
Ly8gZm9udGNvbmZpZyBjYW4gYWxzbyByZXR1cm4gZm9udHMgd2hpY2ggYXJlIHVucmVhZGFibGUK
LSAgICAgICAgRmNDaGFyOCogY0ZpbGVuYW1lOwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0U3Ry
aW5nKGN1cnJlbnQsIEZDX0ZJTEUsIDAsICZjRmlsZW5hbWUpICE9IEZjUmVzdWx0TWF0Y2gpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoYWNjZXNzKHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgRmNDaGFyOCogZmFtaWx5OwotICAgICAgICBXZWJDU3RyaW5nIHJlc3VsdDsKLSAgICAg
ICAgaWYgKEZjUGF0dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHkp
ID09IEZjUmVzdWx0TWF0Y2gpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkg
PSByZWludGVycHJldF9jYXN0PGNoYXIqPihmYW1pbHkpOwotICAgICAgICAgICAgcmVzdWx0ID0g
V2ViQ1N0cmluZyhjaGFyRmFtaWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOwotICAgICAgICB9Ci0g
ICAgICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQotCi0gICAgRmNGb250U2V0RGVzdHJveShmb250U2V0KTsKLSAgICByZXR1cm4gV2Vi
Q1N0cmluZygpOwotfQotCi12b2lkIFdlYkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZShj
b25zdCBjaGFyKiBmYW1pbHksIGludCBzaXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSog
b3V0KQotewotICAgIGJvb2wgaXNCb2xkID0gc2l6ZUFuZFN0eWxlICYgMTsKLSAgICBib29sIGlz
SXRhbGljID0gc2l6ZUFuZFN0eWxlICYgMjsKLSAgICBpbnQgcGl4ZWxTaXplID0gc2l6ZUFuZFN0
eWxlID4+IDI7Ci0KLSAgICBGY1BhdHRlcm4qIHBhdHRlcm4gPSBGY1BhdHRlcm5DcmVhdGUoKTsK
LSAgICBGY1ZhbHVlIGZjdmFsdWU7Ci0KLSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVTdHJpbmc7
Ci0gICAgZmN2YWx1ZS51LnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjggKj4oZmFt
aWx5KTsKLSAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfRkFNSUxZLCBmY3ZhbHVlLCBGY0Zh
bHNlKTsKLQotICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUludGVnZXI7Ci0gICAgZmN2YWx1ZS51
LmkgPSBpc0JvbGQgPyBGQ19XRUlHSFRfQk9MRCA6IEZDX1dFSUdIVF9OT1JNQUw7Ci0gICAgRmNQ
YXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1dFSUdIVCwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0KLSAgICBm
Y3ZhbHVlLnR5cGUgPSBGY1R5cGVJbnRlZ2VyOwotICAgIGZjdmFsdWUudS5pID0gaXNJdGFsaWMg
PyBGQ19TTEFOVF9JVEFMSUMgOiBGQ19TTEFOVF9ST01BTjsKLSAgICBGY1BhdHRlcm5BZGQocGF0
dGVybiwgRkNfU0xBTlQsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2YWx1ZS50eXBlID0g
RmNUeXBlQm9vbDsKLSAgICBmY3ZhbHVlLnUuYiA9IEZjVHJ1ZTsKLSAgICBGY1BhdHRlcm5BZGQo
cGF0dGVybiwgRkNfU0NBTEFCTEUsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2YWx1ZS50
eXBlID0gRmNUeXBlRG91YmxlOwotICAgIGZjdmFsdWUudS5kID0gcGl4ZWxTaXplOwotICAgIEZj
UGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TSVpFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIEZj
Q29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7Ci0gICAgRmNEZWZh
dWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKLQotICAgIEZjUmVzdWx0IHJlc3VsdDsKLSAgICAvLyBT
b21lIHZlcnNpb25zIG9mIGZvbnRjb25maWcgZG9uJ3QgYWN0dWFsbHkgd3JpdGUgYSB2YWx1ZSBp
bnRvIHJlc3VsdC4KLSAgICAvLyBIb3dldmVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1
bWVudGF0aW9uIGlmIHJlc3VsdCBzaG91bGQgYmUgYQotICAgIC8vIG5vbi0wIHBvaW50ZXI6IGZ1
dHVyZSB2ZXJzaW9ucyBtaWdodCBleHBlY3QgdG8gYmUgYWJsZSB0byB3cml0ZSB0bwotICAgIC8v
IGl0LiBTbyB3ZSBwYXNzIGluIGEgdmFsaWQgcG9pbnRlciBhbmQgaWdub3JlIGl0LgotICAgIEZj
UGF0dGVybiogbWF0Y2ggPSBGY0ZvbnRNYXRjaCgwLCBwYXR0ZXJuLCAmcmVzdWx0KTsKLSAgICBG
Y1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwotCi0gICAgb3V0LT5zZXREZWZhdWx0cygpOwotCi0g
ICAgaWYgKCFtYXRjaCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmNCb29sIGI7Ci0gICAgaW50
IGk7Ci0KLSAgICBpZiAoRmNQYXR0ZXJuR2V0Qm9vbChtYXRjaCwgRkNfQU5USUFMSUFTLCAwLCAm
YikgPT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAgb3V0LT51c2VBbnRpQWxpYXMgPSBiOwotICAg
IGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19FTUJFRERFRF9CSVRNQVAsIDAsICZiKSA9
PSBGY1Jlc3VsdE1hdGNoKQotICAgICAgICBvdXQtPnVzZUJpdG1hcHMgPSBiOwotICAgIGlmIChG
Y1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19BVVRPSElOVCwgMCwgJmIpID09IEZjUmVzdWx0TWF0
Y2gpCi0gICAgICAgIG91dC0+dXNlQXV0b0hpbnQgPSBiOwotICAgIGlmIChGY1BhdHRlcm5HZXRC
b29sKG1hdGNoLCBGQ19ISU5USU5HLCAwLCAmYikgPT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAg
b3V0LT51c2VIaW50aW5nID0gYjsKLSAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihtYXRjaCwg
RkNfSElOVF9TVFlMRSwgMCwgJmkpID09IEZjUmVzdWx0TWF0Y2gpCi0gICAgICAgIG91dC0+aGlu
dFN0eWxlID0gaTsKLSAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihtYXRjaCwgRkNfUkdCQSwg
MCwgJmkpID09IEZjUmVzdWx0TWF0Y2gpIHsKLSAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAg
IGNhc2UgRkNfUkdCQV9OT05FOgotICAgICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDA7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGQ19SR0JBX1JHQjoKLSAgICAgICAgY2Fz
ZSBGQ19SR0JBX0JHUjoKLSAgICAgICAgY2FzZSBGQ19SR0JBX1ZSR0I6Ci0gICAgICAgIGNhc2Ug
RkNfUkdCQV9WQkdSOgotICAgICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDE7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8vIFRoaXMgaW5jbHVk
ZXMgRkNfUkdCQV9VTktOT1dOLgotICAgICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZjUGF0dGVybkRlc3Ry
b3kobWF0Y2gpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTE4MmQ0
N2VhN2Y1YmFkNTYyYTE2YTU5MWZkMGUwNTc0ZDUxZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCkBAIC0wLDAgKzEs
MTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCisKKyNp
bmNsdWRlICJXZWJGb250UmVuZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgPGZvbnRjb25maWcvZm9u
dGNvbmZpZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXRmMTYu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkNTdHJpbmcgV2ViRm9udEluZm86OmZhbWls
eUZvckNoYXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVy
cywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlKQoreworICAgIEZjQ2hhclNldCogY3NldCA9
IEZjQ2hhclNldENyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hhcmFj
dGVyczsgKytpKSB7CisgICAgICAgIGlmIChVMTZfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcnNbaV0p
CisgICAgICAgICAmJiBVMTZfSVNfU1VSUk9HQVRFX0xFQUQoY2hhcmFjdGVyc1tpXSkKKyAgICAg
ICAgICYmIGkgIT0gbnVtQ2hhcmFjdGVycyAtIDEKKyAgICAgICAgICYmIFUxNl9JU19UUkFJTChj
aGFyYWN0ZXJzW2kgKyAxXSkpIHsKKyAgICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0
LCBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyc1tpXSwgY2hhcmFjdGVyc1tpKzFdKSk7
CisgICAgICAgICAgaSsrOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgRmNDaGFyU2V0
QWRkQ2hhcihjc2V0LCBjaGFyYWN0ZXJzW2ldKTsKKyAgICB9CisgICAgRmNQYXR0ZXJuKiBwYXR0
ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlKCk7CisKKyAgICBGY1ZhbHVlIGZjdmFsdWU7CisgICAgZmN2
YWx1ZS50eXBlID0gRmNUeXBlQ2hhclNldDsKKyAgICBmY3ZhbHVlLnUuYyA9IGNzZXQ7CisgICAg
RmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX0NIQVJTRVQsIGZjdmFsdWUsIEZjRmFsc2UpOworCisg
ICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlQm9vbDsKKyAgICBmY3ZhbHVlLnUuYiA9IEZjVHJ1ZTsK
KyAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfU0NBTEFCTEUsIGZjdmFsdWUsIEZjRmFsc2Up
OworCisgICAgaWYgKHByZWZlcnJlZExvY2FsZSkgeworICAgICAgICBGY0xhbmdTZXQqIGxhbmdz
ZXQgPSBGY0xhbmdTZXRDcmVhdGUoKTsKKyAgICAgICAgRmNMYW5nU2V0QWRkKGxhbmdzZXQsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCAqPihwcmVmZXJyZWRMb2NhbGUpKTsKKyAgICAg
ICAgRmNQYXR0ZXJuQWRkTGFuZ1NldChwYXR0ZXJuLCBGQ19MQU5HLCBsYW5nc2V0KTsKKyAgICAg
ICAgRmNMYW5nU2V0RGVzdHJveShsYW5nc2V0KTsKKyAgICB9CisKKyAgICBGY0NvbmZpZ1N1YnN0
aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0aXR1
dGUocGF0dGVybik7CisKKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgRmNGb250U2V0KiBmb250
U2V0ID0gRmNGb250U29ydCgwLCBwYXR0ZXJuLCAwLCAwLCAmcmVzdWx0KTsKKyAgICBGY1BhdHRl
cm5EZXN0cm95KHBhdHRlcm4pOworICAgIEZjQ2hhclNldERlc3Ryb3koY3NldCk7CisKKyAgICBp
ZiAoIWZvbnRTZXQpCisgICAgICAgIHJldHVybiBXZWJDU3RyaW5nKCk7CisKKyAgICAvLyBPbGRl
ciB2ZXJzaW9ucyBvZiBmb250Y29uZmlnIGhhdmUgYSBidWcgd2hlcmUgdGhleSBjYW5ub3Qgc2Vs
ZWN0CisgICAgLy8gb25seSBzY2FsYWJsZSBmb250cyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGZp
bHRlciB0aGUgcmVzdWx0cy4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRTZXQtPm5mb250
OyArK2kpIHsKKyAgICAgICAgRmNQYXR0ZXJuKiBjdXJyZW50ID0gZm9udFNldC0+Zm9udHNbaV07
CisgICAgICAgIEZjQm9vbCBpc1NjYWxhYmxlOworCisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRC
b29sKGN1cnJlbnQsIEZDX1NDQUxBQkxFLCAwLCAmaXNTY2FsYWJsZSkgIT0gRmNSZXN1bHRNYXRj
aAorICAgICAgICAgICAgfHwgIWlzU2NhbGFibGUpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAvLyBmb250Y29uZmlnIGNhbiBhbHNvIHJldHVybiBmb250cyB3aGljaCBhcmUgdW5y
ZWFkYWJsZQorICAgICAgICBGY0NoYXI4KiBjRmlsZW5hbWU7CisgICAgICAgIGlmIChGY1BhdHRl
cm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRklMRSwgMCwgJmNGaWxlbmFtZSkgIT0gRmNSZXN1bHRN
YXRjaCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChhY2Nlc3MocmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY0ZpbGVuYW1lKSwgUl9PSykpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBGY0NoYXI4KiBmYW1pbHk7CisgICAgICAgIFdlYkNTdHJpbmcgcmVzdWx0
OworICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwg
JmZhbWlseSkgPT0gRmNSZXN1bHRNYXRjaCkgeworICAgICAgICAgICAgY29uc3QgY2hhciogY2hh
ckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhbWlseSk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBXZWJDU3RyaW5nKGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAg
ICAgIH0KKyAgICAgICAgRmNGb250U2V0RGVzdHJveShmb250U2V0KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBGY0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOworICAgIHJl
dHVybiBXZWJDU3RyaW5nKCk7Cit9CisKK3ZvaWQgV2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9y
U3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRl
clN0eWxlKiBvdXQpCit7CisgICAgYm9vbCBpc0JvbGQgPSBzaXplQW5kU3R5bGUgJiAxOworICAg
IGJvb2wgaXNJdGFsaWMgPSBzaXplQW5kU3R5bGUgJiAyOworICAgIGludCBwaXhlbFNpemUgPSBz
aXplQW5kU3R5bGUgPj4gMjsKKworICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNy
ZWF0ZSgpOworICAgIEZjVmFsdWUgZmN2YWx1ZTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlw
ZVN0cmluZzsKKyAgICBmY3ZhbHVlLnUucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFy
OCAqPihmYW1pbHkpOworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19GQU1JTFksIGZjdmFs
dWUsIEZjRmFsc2UpOworCisgICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlSW50ZWdlcjsKKyAgICBm
Y3ZhbHVlLnUuaSA9IGlzQm9sZCA/IEZDX1dFSUdIVF9CT0xEIDogRkNfV0VJR0hUX05PUk1BTDsK
KyAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfV0VJR0hULCBmY3ZhbHVlLCBGY0ZhbHNlKTsK
KworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUludGVnZXI7CisgICAgZmN2YWx1ZS51LmkgPSBp
c0l0YWxpYyA/IEZDX1NMQU5UX0lUQUxJQyA6IEZDX1NMQU5UX1JPTUFOOworICAgIEZjUGF0dGVy
bkFkZChwYXR0ZXJuLCBGQ19TTEFOVCwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3ZhbHVl
LnR5cGUgPSBGY1R5cGVCb29sOworICAgIGZjdmFsdWUudS5iID0gRmNUcnVlOworICAgIEZjUGF0
dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBm
Y3ZhbHVlLnR5cGUgPSBGY1R5cGVEb3VibGU7CisgICAgZmN2YWx1ZS51LmQgPSBwaXhlbFNpemU7
CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NJWkUsIGZjdmFsdWUsIEZjRmFsc2UpOwor
CisgICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKKyAg
ICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRlcm4pOworCisgICAgRmNSZXN1bHQgcmVzdWx0Owor
ICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBkb24ndCBhY3R1YWxseSB3cml0ZSBh
IHZhbHVlIGludG8gcmVzdWx0LgorICAgIC8vIEhvd2V2ZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20g
dGhlIGRvY3VtZW50YXRpb24gaWYgcmVzdWx0IHNob3VsZCBiZSBhCisgICAgLy8gbm9uLTAgcG9p
bnRlcjogZnV0dXJlIHZlcnNpb25zIG1pZ2h0IGV4cGVjdCB0byBiZSBhYmxlIHRvIHdyaXRlIHRv
CisgICAgLy8gaXQuIFNvIHdlIHBhc3MgaW4gYSB2YWxpZCBwb2ludGVyIGFuZCBpZ25vcmUgaXQu
CisgICAgRmNQYXR0ZXJuKiBtYXRjaCA9IEZjRm9udE1hdGNoKDAsIHBhdHRlcm4sICZyZXN1bHQp
OworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisKKyAgICBvdXQtPnNldERlZmF1bHRz
KCk7CisKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICByZXR1cm47CisKKyAgICBGY0Jvb2wgYjsK
KyAgICBpbnQgaTsKKworICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19BTlRJQUxJ
QVMsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUFudGlBbGlhcyA9
IGI7CisgICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0VNQkVEREVEX0JJVE1BUCwg
MCwgJmIpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgIG91dC0+dXNlQml0bWFwcyA9IGI7Cisg
ICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0FVVE9ISU5ULCAwLCAmYikgPT0gRmNS
ZXN1bHRNYXRjaCkKKyAgICAgICAgb3V0LT51c2VBdXRvSGludCA9IGI7CisgICAgaWYgKEZjUGF0
dGVybkdldEJvb2wobWF0Y2gsIEZDX0hJTlRJTkcsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQor
ICAgICAgICBvdXQtPnVzZUhpbnRpbmcgPSBiOworICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2Vy
KG1hdGNoLCBGQ19ISU5UX1NUWUxFLCAwLCAmaSkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAg
b3V0LT5oaW50U3R5bGUgPSBpOworICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKG1hdGNoLCBG
Q19SR0JBLCAwLCAmaSkgPT0gRmNSZXN1bHRNYXRjaCkgeworICAgICAgICBzd2l0Y2ggKGkpIHsK
KyAgICAgICAgY2FzZSBGQ19SR0JBX05PTkU6CisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVs
ID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZDX1JHQkFfUkdCOgorICAg
ICAgICBjYXNlIEZDX1JHQkFfQkdSOgorICAgICAgICBjYXNlIEZDX1JHQkFfVlJHQjoKKyAgICAg
ICAgY2FzZSBGQ19SR0JBX1ZCR1I6CisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gVGhp
cyBpbmNsdWRlcyBGQ19SR0JBX1VOS05PV04uCisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVs
ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgRmNQYXR0
ZXJuRGVzdHJveShtYXRjaCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109647</attachid>
            <date>2011-10-04 10:53:17 -0700</date>
            <delta_ts>2011-10-04 13:33:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69229-20111004105152.patch</filename>
            <type>text/plain</type>
            <size>44776</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMTViYzliN2QxZDQ2OTkz
YTljMjk4ODI1Y2Y2MWNjZmFkNGI4NWM1Li45ODMxZjMzMTZkMjAzMTA3NjdlZWE2MTY2M2ZmN2Rh
MDViMzM5ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTAtMDQgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3Zl
ZCBmaWxlcyB0b3dhcmRzIEdUSyByZW1vdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTIyOQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCisKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuY3BwLgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNldFNjcm9sbGJh
ckNvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2F0dXJhdGVBbmRCcmlnaHRlbik6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6b3V0bGluZUNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEFycm93QnV0
dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1UaGVtZUNocm9taXVtR3RrLmguCisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1l
Q2hyb21pdW1MaW51eDo6dGh1bWJJbmFjdGl2ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Ojp0aHVtYkFjdGl2ZUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4Ojp0cmFja0NvbG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1MaW51eCk6CisKIDIwMTEtMTAtMDQgIENhcnkgQ2xhcmsgIDxjYXJ5Y2xhcmtAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBcHBseSBjb2xvciBwcm9maWxlIGZvdW5kIHRvIGRlY29kZWQgYml0bWFw
IChTa2lhIG9uIE1hYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYWJiOWUzMmRlZDU2MWY0MzdlNGI3
NjBjMWVkMDM1ZmM4MjY3Yjk2Li4wZmQ2OGE5ZGE5YmM0Y2ZhOWJlMTYyYjg0Yjg3NDMxNjAzMjUx
YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zMTg5LDggKzMxODksOCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudENocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oJywKLSAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1H
dGsuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9t
aXVtTGludXguY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVdpZGdldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRh
aW5lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVy
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1UaGVtZUNocm9taXVtR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDY1Mjk0ODI1ZTA2YjMxODA1ZjY4ODI5ODY5NTRhNjk0NmY5YjRiYjkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDIyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtVGhl
bWVDaHJvbWl1bUd0ay5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXVuc2lnbmVkIFBsYXRm
b3JtVGhlbWVDaHJvbWl1bUd0azo6c190aHVtYkluYWN0aXZlQ29sb3IgPSAweGVhZWFlYTsKLXVu
c2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUd0azo6c190aHVtYkFjdGl2ZUNvbG9yID0gMHhm
NGY0ZjQ7Ci11bnNpZ25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNfdHJhY2tDb2xvciA9
IDB4ZDNkM2QzOwotCi12b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUd0azo6c2V0U2Nyb2xsYmFy
Q29sb3JzKAotICAgIFNrQ29sb3IgaW5hY3RpdmVDb2xvciwgU2tDb2xvciBhY3RpdmVDb2xvciwg
U2tDb2xvciB0cmFja0NvbG9yKQotewotICAgIHNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gaW5hY3Rp
dmVDb2xvcjsKLSAgICBzX3RodW1iQWN0aXZlQ29sb3IgPSBhY3RpdmVDb2xvcjsKLSAgICBzX3Ry
YWNrQ29sb3IgPSB0cmFja0NvbG9yOwotfQotCi1zdGF0aWMgU2tTY2FsYXIgY2xhbXAoU2tTY2Fs
YXIgdmFsdWUsIFNrU2NhbGFyIG1pbiwgU2tTY2FsYXIgbWF4KQotewotICAgIHJldHVybiBzdGQ6
Om1pbihzdGQ6Om1heCh2YWx1ZSwgbWluKSwgbWF4KTsKLX0KLQotU2tDb2xvciBQbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1HdGs6OnNhdHVyYXRlQW5kQnJpZ2h0ZW4oY29uc3QgU2tTY2FsYXIgaHN2WzNd
LCBTa1NjYWxhciBzYXR1cmF0ZUFtb3VudCwgU2tTY2FsYXIgYnJpZ2h0ZW5BbW91bnQpCi17Ci0g
ICAgU2tTY2FsYXIgY29sb3JbM107Ci0gICAgY29sb3JbMF0gPSBoc3ZbMF07Ci0gICAgY29sb3Jb
MV0gPSBjbGFtcChoc3ZbMV0gKyBzYXR1cmF0ZUFtb3VudCwgMC4wLCAxLjApOwotICAgIGNvbG9y
WzJdID0gY2xhbXAoaHN2WzJdICsgYnJpZ2h0ZW5BbW91bnQsIDAuMCwgMS4wKTsKLSAgICByZXR1
cm4gU2tIU1ZUb0NvbG9yKGNvbG9yKTsKLX0KLQotU2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21p
dW1HdGs6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxh
ciBoc3YyWzNdKQotewotICAgIC8vIEdUSyBUaGVtZSBlbmdpbmVzIGhhdmUgd2F5IHRvbyBtdWNo
IGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mCi0gICAgLy8gdGhlIHNjcm9sbGJhci4gV2UgbWln
aHQgYmUgYWJsZSB0byBtb3JlIGNsb3NlbHkgYXBwcm94aW1hdGUgaXRzCi0gICAgLy8gbG9vay1h
bmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9sZSBpbWFnZXMgaW5zdGVhZCBvZiBqdXN0IGNvbG9ycwot
ICAgIC8vIGZyb20gdGhlIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLiBCdXQgZXZlbiB0aGVuLCBz
b21lIHRoZW1lcwotICAgIC8vIHdvdWxkIGp1c3QgYnJlYWsuCi0gICAgLy8KLSAgICAvLyBTbywg
aW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0cnkgdG8gMTAwJSByZXBsaWNhdGUgdGhlIGxvb2sgb2YK
LSAgICAvLyB0aGUgbmF0aXZlIHNjcm9sbGJhci4gV2UgcmVuZGVyIG91ciBvd24gdmVyc2lvbiwg
YnV0IHdlIG1ha2UKLSAgICAvLyBzdXJlIHRvIHBpY2sgY29sb3JzIHRoYXQgYmxlbmQgaW4gbmlj
ZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsKLSAgICAvLyB0aGVtZS4gSW4gbW9zdCBjYXNlcywgd2Ug
Y2FuIGp1c3Qgc2FtcGxlIGEgY291cGxlIG9mIHBpeGVscwotICAgIC8vIGZyb20gdGhlIHN5c3Rl
bSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9zZSBjb2xvcnMgdG8gZHJhdyBvdXIKLSAgICAvLyBzY3Jv
bGxiYXIuCi0gICAgLy8KLSAgICAvLyBUaGlzIHdvcmtzIGZpbmUgZm9yIHRoZSB0cmFjayBjb2xv
ciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIKLSAgICAvLyBjb2xvci4gQnV0IGl0IGZhaWxzIHNwZWN0
YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5lIGNvbG9yIHVzZWQKLSAgICAvLyBhcm91bmQgdGhlIHRo
dW1iIHBpZWNlLiAgTm90IGFsbCB0aGVtZXMgaGF2ZSBhIGNsZWFybHkgZGVmaW5lZAotICAgIC8v
IG91dGxpbmUuIEZvciBzb21lIG9mIHRoZW0gaXQgaXMgcGFydGlhbGx5IHRyYW5zcGFyZW50LCBh
bmQgZm9yCi0gICAgLy8gb3RoZXJzIHRoZSB0aGlja25lc3MgaXMgdmVyeSB1bnByZWRpY3RhYmxl
LgotICAgIC8vCi0gICAgLy8gU28sIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFwcHJveGltYXRlIHRo
ZSBzeXN0ZW0gdGhlbWUsIHdlCi0gICAgLy8gaW5zdGVhZCB0cnkgdG8gY29tcHV0ZSBhIHJlYXNv
bmFibGUgbG9va2luZyBjaG9pY2UgYmFzZWQgb24gdGhlCi0gICAgLy8ga25vd24gY29sb3Igb2Yg
dGhlIHRyYWNrIGFuZCB0aGUgdGh1bWIgcGllY2UuIFRoaXMgaXMgZGlmZmljdWx0Ci0gICAgLy8g
d2hlbiB0cnlpbmcgdG8gZGVhbCBib3RoIHdpdGggaGlnaC0gYW5kIGxvdy1jb250cmFzdCB0aGVt
ZXMsCi0gICAgLy8gYW5kIGJvdGggd2l0aCBwb3NpdGl2ZSBhbmQgaW52ZXJ0ZWQgdGhlbWVzLgot
ICAgIC8vCi0gICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGhhcyBiZWVuIHRlc3RlZCB0byBsb29r
IE9LIHdpdGggYWxsIG9mIHRoZQotICAgIC8vIGRlZmF1bHQgR1RLIHRoZW1lcy4KLSAgICBTa1Nj
YWxhciBtaW5EaWZmID0gY2xhbXAoKGhzdjFbMV0gKyBoc3YyWzFdKSAqIDEuMiwgMC4yOCwgMC41
KTsKLSAgICBTa1NjYWxhciBkaWZmID0gY2xhbXAoZmFicyhoc3YxWzJdIC0gaHN2MlsyXSkgLyAy
LCBtaW5EaWZmLCAwLjUpOwotCi0gICAgaWYgKGhzdjFbMl0gKyBoc3YyWzJdID4gMS4wKQotICAg
ICAgICBkaWZmID0gLWRpZmY7Ci0KLSAgICByZXR1cm4gc2F0dXJhdGVBbmRCcmlnaHRlbihoc3Yy
LCAtMC4yLCBkaWZmKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnBhaW50
QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgQXJy
b3dEaXJlY3Rpb24gZGlyZWN0aW9uLCBDb250cm9sU3RhdGVzIHN0YXRlcykKLXsKLSAgICBTa0Nh
bnZhcyogY29uc3QgY2FudmFzID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKTsKLSAg
ICBpbnQgd2lkdGhNaWRkbGUsIGxlbmd0aE1pZGRsZTsKLSAgICBTa1BhaW50IHBhaW50OwotICAg
IGlmIChkaXJlY3Rpb24gPT0gTm9ydGggfHwgZGlyZWN0aW9uID09IFNvdXRoKSB7Ci0gICAgICAg
IHdpZHRoTWlkZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7Ci0gICAgICAgIGxlbmd0aE1pZGRs
ZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgICBsZW5ndGhN
aWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsgMTsKLSAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0
LmhlaWdodCgpIC8gMiArIDE7Ci0gICAgfQotCi0gICAgLy8gQ2FsY3VsYXRlIGJ1dHRvbiBjb2xv
ci4KLSAgICBTa1NjYWxhciB0cmFja0hTVlszXTsKLSAgICBTa0NvbG9yVG9IU1YodHJhY2tDb2xv
cigpLCB0cmFja0hTVik7Ci0gICAgU2tDb2xvciBidXR0b25Db2xvciA9IHNhdHVyYXRlQW5kQnJp
Z2h0ZW4odHJhY2tIU1YsIDAsIDAuMik7Ci0gICAgU2tDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBi
dXR0b25Db2xvcjsKLSAgICBpZiAoc3RhdGVzICYgUHJlc3NlZFN0YXRlKSB7Ci0gICAgICAgIFNr
U2NhbGFyIGJ1dHRvbkhTVlszXTsKLSAgICAgICAgU2tDb2xvclRvSFNWKGJ1dHRvbkNvbG9yLCBi
dXR0b25IU1YpOwotICAgICAgICBidXR0b25Db2xvciA9IHNhdHVyYXRlQW5kQnJpZ2h0ZW4oYnV0
dG9uSFNWLCAwLCAtMC4xKTsKLSAgICB9IGVsc2UgaWYgKHN0YXRlcyAmIEhvdmVyU3RhdGUpIHsK
LSAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNdOwotICAgICAgICBTa0NvbG9yVG9IU1YoYnV0
dG9uQ29sb3IsIGJ1dHRvbkhTVik7Ci0gICAgICAgIGJ1dHRvbkNvbG9yID0gc2F0dXJhdGVBbmRC
cmlnaHRlbihidXR0b25IU1YsIDAsIDAuMDUpOwotICAgIH0KLQotICAgIFNrSVJlY3Qgc2tyZWN0
OwotICAgIHNrcmVjdC5zZXQocmVjdC54KCksIHJlY3QueSgpLCByZWN0LngoKSArIHJlY3Qud2lk
dGgoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKLSAgICAvLyBQYWludCB0aGUgYmFja2dy
b3VuZCAodGhlIGFyZWEgdmlzaWJsZSBiZWhpbmQgdGhlIHJvdW5kZWQgY29ybmVycykuCi0gICAg
cGFpbnQuc2V0Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICBjYW52YXMtPmRyYXdJUmVjdChz
a3JlY3QsIHBhaW50KTsKLQotICAgIC8vIFBhaW50IHRoZSBidXR0b24ncyBvdXRsaW5lIGFuZCBm
aWxsIHRoZSBtaWRkbGUKLSAgICBTa1BhdGggb3V0bGluZTsKLSAgICBzd2l0Y2ggKGRpcmVjdGlv
bikgewotICAgIGNhc2UgTm9ydGg6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsg
MC41LCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkgKyAwLjUpOwotICAgICAgICBvdXRsaW5lLnJM
aW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0gMikpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8o
MiwgLTIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gNSwgMCk7Ci0g
ICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDAs
IHJlY3QuaGVpZ2h0KCkgLSAyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTb3V0aDoKLSAg
ICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpIC0gMC41KTsKLSAg
ICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSAyKTsKLSAgICAgICAgb3V0
bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgp
IC0gNSwgMCk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7Ci0gICAgICAgIG91dGxp
bmUuckxpbmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRWFzdDoKLSAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgLSAwLjUsIHJlY3Qu
eSgpICsgMC41KTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qud2lkdGgoKSAtIDIsIDAp
OwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVU
bygwLCByZWN0LmhlaWdodCgpIC0gNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygtMiwgMik7
Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBXZXN0OgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0Lngo
KSArIHJlY3Qud2lkdGgoKSArIDAuNSwgcmVjdC55KCkgKyAwLjUpOwotICAgICAgICBvdXRsaW5l
LnJMaW5lVG8oLShyZWN0LndpZHRoKCkgLSAyKSwgMCk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVU
bygtMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gNSk7
Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRv
KHJlY3Qud2lkdGgoKSAtIDIsIDApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgb3V0bGlu
ZS5jbG9zZSgpOwotCi0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwot
ICAgIHBhaW50LnNldENvbG9yKGJ1dHRvbkNvbG9yKTsKLSAgICBjYW52YXMtPmRyYXdQYXRoKG91
dGxpbmUsIHBhaW50KTsKLQotICAgIHBhaW50LnNldEFudGlBbGlhcyh0cnVlKTsKLSAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBTa1NjYWxhciB0aHVtYkhT
VlszXTsKLSAgICBTa0NvbG9yVG9IU1YodGh1bWJJbmFjdGl2ZUNvbG9yKCksIHRodW1iSFNWKTsK
LSAgICBwYWludC5zZXRDb2xvcihvdXRsaW5lQ29sb3IodHJhY2tIU1YsIHRodW1iSFNWKSk7Ci0g
ICAgY2FudmFzLT5kcmF3UGF0aChvdXRsaW5lLCBwYWludCk7Ci0KLSAgICAvLyBJZiB0aGUgYnV0
dG9uIGlzIGRpc2FibGVkIG9yIHJlYWQtb25seSwgdGhlIGFycm93IGlzIGRyYXduIHdpdGggdGhl
IG91dGxpbmUgY29sb3IuCi0gICAgaWYgKHN0YXRlcyAmIEVuYWJsZWRTdGF0ZSAmJiAhKHN0YXRl
cyAmIFJlYWRPbmx5U3RhdGUpKQotICAgICAgICBwYWludC5zZXRDb2xvcihTS19Db2xvckJMQUNL
KTsKLQotICAgIHBhaW50LnNldEFudGlBbGlhcyhmYWxzZSk7Ci0gICAgcGFpbnQuc2V0U3R5bGUo
U2tQYWludDo6a0ZpbGxfU3R5bGUpOwotCi0gICAgU2tQYXRoIHBhdGg7Ci0gICAgLy8gVGhlIGNv
bnN0YW50cyBpbiB0aGlzIGJsb2NrIG9mIGNvZGUgYXJlIGhhbmQtdGFpbG9yZWQgdG8gcHJvZHVj
ZSBnb29kCi0gICAgLy8gbG9va2luZyBhcnJvd3Mgd2l0aG91dCBhbnRpLWFsaWFzaW5nLgotICAg
IHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBOb3J0aDoKLSAgICAgICAgcGF0aC5tb3Zl
VG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJlY3QueSgpICsgbGVuZ3RoTWlkZGxlICsg
Mik7Ci0gICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsKLSAgICAgICAgcGF0aC5yTGluZVRvKC00
LCAtNCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU291dGg6Ci0gICAgICAgIHBhdGgubW92
ZVRvKHJlY3QueCgpICsgd2lkdGhNaWRkbGUgLSA0LCByZWN0LnkoKSArIGxlbmd0aE1pZGRsZSAt
IDMpOwotICAgICAgICBwYXRoLnJMaW5lVG8oNywgMCk7Ci0gICAgICAgIHBhdGguckxpbmVUbygt
NCwgNCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRWFzdDoKLSAgICAgICAgcGF0aC5tb3Zl
VG8ocmVjdC54KCkgKyBsZW5ndGhNaWRkbGUgLSAzLCByZWN0LnkoKSArIHdpZHRoTWlkZGxlIC0g
NCk7Ci0gICAgICAgIHBhdGguckxpbmVUbygwLCA3KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDQs
IC00KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZXN0OgotICAgICAgICBwYXRoLm1vdmVU
byhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSArIDEsIHJlY3QueSgpICsgd2lkdGhNaWRkbGUgLSA1
KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDAsIDkpOwotICAgICAgICBwYXRoLnJMaW5lVG8oLTQs
IC00KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHBhdGguY2xvc2UoKTsKLQotICAgIGNh
bnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
VGhlbWVDaHJvbWl1bUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1UaGVtZUNocm9taXVtR3RrLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJk
YzI2ODNkZjJkZjE3MzQ3ZmJkNjEzOTE4Y2U2NWU1YzJlNDkxMDAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGtfaAotI2RlZmluZSBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1HdGtfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgot
I2luY2x1ZGUgIlNrQ29sb3IuaCIKLSNpbmNsdWRlICJTa1NjYWxhci5oIgotI2luY2x1ZGUgIlRo
ZW1lVHlwZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0Zm9ybVRoZW1l
Q2hyb21pdW1HdGsgewotcHVibGljOgotICAgIGVudW0gQXJyb3dEaXJlY3Rpb24gewotICAgICAg
ICBOb3J0aCwKLSAgICAgICAgRWFzdCwKLSAgICAgICAgU291dGgsCi0gICAgICAgIFdlc3QsCi0g
ICAgfTsKLQotICAgIHN0YXRpYyB2b2lkIHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFj
dGl2ZUNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBh
Y3RpdmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
dHJhY2tDb2xvcik7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRodW1iSW5hY3RpdmVDb2xvcigpIHsg
cmV0dXJuIHNfdGh1bWJJbmFjdGl2ZUNvbG9yOyB9Ci0gICAgc3RhdGljIHVuc2lnbmVkIHRodW1i
QWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3RodW1iQWN0aXZlQ29sb3I7IH0KLSAgICBzdGF0aWMg
dW5zaWduZWQgdHJhY2tDb2xvcigpIHsgcmV0dXJuIHNfdHJhY2tDb2xvcjsgfQotCi0gICAgc3Rh
dGljIFNrQ29sb3Igc2F0dXJhdGVBbmRCcmlnaHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNr
U2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1NjYWxhciBicmlnaHRlbkFtb3VudCk7Ci0gICAgc3Rh
dGljIFNrQ29sb3Igb3V0bGluZUNvbG9yKGNvbnN0IFNrU2NhbGFyIGhzdjFbM10sIGNvbnN0IFNr
U2NhbGFyIGhzdjJbM10pOwotICAgIHN0YXRpYyB2b2lkIHBhaW50QXJyb3dCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIEFycm93RGlyZWN0aW9uLCBDb250cm9sU3RhdGVz
KTsKLQotcHJpdmF0ZToKLSAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsoKSB7fQotCi0gICAg
c3RhdGljIHVuc2lnbmVkIHNfdGh1bWJJbmFjdGl2ZUNvbG9yOwotICAgIHN0YXRpYyB1bnNpZ25l
ZCBzX3RodW1iQWN0aXZlQ29sb3I7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHNfdHJhY2tDb2xvcjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBsYXRmb3JtVGhlbWVD
aHJvbWl1bUd0a19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU0
Zjg1MGE4NWUyNzZhNTliMGI5MDIzNWMwMTkwZDBhZDU5M2QwOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vu
c2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RodW1iSW5hY3RpdmVDb2xvciA9
IDB4ZWFlYWVhOwordW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNfdGh1bWJB
Y3RpdmVDb2xvciA9IDB4ZjRmNGY0OwordW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXg6OnNfdHJhY2tDb2xvciA9IDB4ZDNkM2QzOworCit2b2lkIFBsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4OjpzZXRTY3JvbGxiYXJDb2xvcnMoCisgICAgU2tDb2xvciBpbmFjdGl2ZUNvbG9yLCBT
a0NvbG9yIGFjdGl2ZUNvbG9yLCBTa0NvbG9yIHRyYWNrQ29sb3IpCit7CisgICAgc190aHVtYklu
YWN0aXZlQ29sb3IgPSBpbmFjdGl2ZUNvbG9yOworICAgIHNfdGh1bWJBY3RpdmVDb2xvciA9IGFj
dGl2ZUNvbG9yOworICAgIHNfdHJhY2tDb2xvciA9IHRyYWNrQ29sb3I7Cit9CisKK3N0YXRpYyBT
a1NjYWxhciBjbGFtcChTa1NjYWxhciB2YWx1ZSwgU2tTY2FsYXIgbWluLCBTa1NjYWxhciBtYXgp
Cit7CisgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KHZhbHVlLCBtaW4pLCBtYXgpOworfQor
CitTa0NvbG9yIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzYXR1cmF0ZUFuZEJyaWdodGVu
KGNvbnN0IFNrU2NhbGFyIGhzdlszXSwgU2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFy
IGJyaWdodGVuQW1vdW50KQoreworICAgIFNrU2NhbGFyIGNvbG9yWzNdOworICAgIGNvbG9yWzBd
ID0gaHN2WzBdOworICAgIGNvbG9yWzFdID0gY2xhbXAoaHN2WzFdICsgc2F0dXJhdGVBbW91bnQs
IDAuMCwgMS4wKTsKKyAgICBjb2xvclsyXSA9IGNsYW1wKGhzdlsyXSArIGJyaWdodGVuQW1vdW50
LCAwLjAsIDEuMCk7CisgICAgcmV0dXJuIFNrSFNWVG9Db2xvcihjb2xvcik7Cit9CisKK1NrQ29s
b3IgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxh
ciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKQoreworICAgIC8vIEdUSyBUaGVtZSBl
bmdpbmVzIGhhdmUgd2F5IHRvbyBtdWNoIGNvbnRyb2wgb3ZlciB0aGUgbGF5b3V0IG9mCisgICAg
Ly8gdGhlIHNjcm9sbGJhci4gV2UgbWlnaHQgYmUgYWJsZSB0byBtb3JlIGNsb3NlbHkgYXBwcm94
aW1hdGUgaXRzCisgICAgLy8gbG9vay1hbmQtZmVlbCwgaWYgd2Ugc2VudCB3aG9sZSBpbWFnZXMg
aW5zdGVhZCBvZiBqdXN0IGNvbG9ycworICAgIC8vIGZyb20gdGhlIGJyb3dzZXIgdG8gdGhlIHJl
bmRlcmVyLiBCdXQgZXZlbiB0aGVuLCBzb21lIHRoZW1lcworICAgIC8vIHdvdWxkIGp1c3QgYnJl
YWsuCisgICAgLy8KKyAgICAvLyBTbywgaW5zdGVhZCwgd2UgZG9uJ3QgZXZlbiB0cnkgdG8gMTAw
JSByZXBsaWNhdGUgdGhlIGxvb2sgb2YKKyAgICAvLyB0aGUgbmF0aXZlIHNjcm9sbGJhci4gV2Ug
cmVuZGVyIG91ciBvd24gdmVyc2lvbiwgYnV0IHdlIG1ha2UKKyAgICAvLyBzdXJlIHRvIHBpY2sg
Y29sb3JzIHRoYXQgYmxlbmQgaW4gbmljZWx5IHdpdGggdGhlIHN5c3RlbSBHVEsKKyAgICAvLyB0
aGVtZS4gSW4gbW9zdCBjYXNlcywgd2UgY2FuIGp1c3Qgc2FtcGxlIGEgY291cGxlIG9mIHBpeGVs
cworICAgIC8vIGZyb20gdGhlIHN5c3RlbSBzY3JvbGxiYXIgYW5kIHVzZSB0aG9zZSBjb2xvcnMg
dG8gZHJhdyBvdXIKKyAgICAvLyBzY3JvbGxiYXIuCisgICAgLy8KKyAgICAvLyBUaGlzIHdvcmtz
IGZpbmUgZm9yIHRoZSB0cmFjayBjb2xvciBhbmQgdGhlIG92ZXJhbGwgdGh1bWIKKyAgICAvLyBj
b2xvci4gQnV0IGl0IGZhaWxzIHNwZWN0YWN1bGFybHkgZm9yIHRoZSBvdXRsaW5lIGNvbG9yIHVz
ZWQKKyAgICAvLyBhcm91bmQgdGhlIHRodW1iIHBpZWNlLiBOb3QgYWxsIHRoZW1lcyBoYXZlIGEg
Y2xlYXJseSBkZWZpbmVkCisgICAgLy8gb3V0bGluZS4gRm9yIHNvbWUgb2YgdGhlbSBpdCBpcyBw
YXJ0aWFsbHkgdHJhbnNwYXJlbnQsIGFuZCBmb3IKKyAgICAvLyBvdGhlcnMgdGhlIHRoaWNrbmVz
cyBpcyB2ZXJ5IHVucHJlZGljdGFibGUuCisgICAgLy8KKyAgICAvLyBTbywgaW5zdGVhZCBvZiB0
cnlpbmcgdG8gYXBwcm94aW1hdGUgdGhlIHN5c3RlbSB0aGVtZSwgd2UKKyAgICAvLyBpbnN0ZWFk
IHRyeSB0byBjb21wdXRlIGEgcmVhc29uYWJsZSBsb29raW5nIGNob2ljZSBiYXNlZCBvbiB0aGUK
KyAgICAvLyBrbm93biBjb2xvciBvZiB0aGUgdHJhY2sgYW5kIHRoZSB0aHVtYiBwaWVjZS4gVGhp
cyBpcyBkaWZmaWN1bHQKKyAgICAvLyB3aGVuIHRyeWluZyB0byBkZWFsIGJvdGggd2l0aCBoaWdo
LSBhbmQgbG93LWNvbnRyYXN0IHRoZW1lcywKKyAgICAvLyBhbmQgYm90aCB3aXRoIHBvc2l0aXZl
IGFuZCBpbnZlcnRlZCB0aGVtZXMuCisgICAgLy8KKyAgICAvLyBUaGUgZm9sbG93aW5nIGNvZGUg
aGFzIGJlZW4gdGVzdGVkIHRvIGxvb2sgT0sgd2l0aCBhbGwgb2YgdGhlCisgICAgLy8gZGVmYXVs
dCBHVEsgdGhlbWVzLgorICAgIFNrU2NhbGFyIG1pbkRpZmYgPSBjbGFtcCgoaHN2MVsxXSArIGhz
djJbMV0pICogMS4yLCAwLjI4LCAwLjUpOworICAgIFNrU2NhbGFyIGRpZmYgPSBjbGFtcChmYWJz
KGhzdjFbMl0gLSBoc3YyWzJdKSAvIDIsIG1pbkRpZmYsIDAuNSk7CisKKyAgICBpZiAoaHN2MVsy
XSArIGhzdjJbMl0gPiAxLjApCisgICAgICAgIGRpZmYgPSAtZGlmZjsKKworICAgIHJldHVybiBz
YXR1cmF0ZUFuZEJyaWdodGVuKGhzdjIsIC0wLjIsIGRpZmYpOworfQorCit2b2lkIFBsYXRmb3Jt
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2Ms
IGNvbnN0IEludFJlY3QmIHJlY3QsIEFycm93RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29udHJvbFN0
YXRlcyBzdGF0ZXMpCit7CisgICAgU2tDYW52YXMqIGNvbnN0IGNhbnZhcyA9IGdjLT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgaW50IHdpZHRoTWlkZGxlLCBsZW5ndGhNaWRkbGU7
CisgICAgU2tQYWludCBwYWludDsKKyAgICBpZiAoZGlyZWN0aW9uID09IE5vcnRoIHx8IGRpcmVj
dGlvbiA9PSBTb3V0aCkgeworICAgICAgICB3aWR0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIg
KyAxOworICAgICAgICBsZW5ndGhNaWRkbGUgPSByZWN0LmhlaWdodCgpIC8gMiArIDE7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7Cisg
ICAgICAgIHdpZHRoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOworICAgIH0KKworICAg
IC8vIENhbGN1bGF0ZSBidXR0b24gY29sb3IuCisgICAgU2tTY2FsYXIgdHJhY2tIU1ZbM107Cisg
ICAgU2tDb2xvclRvSFNWKHRyYWNrQ29sb3IoKSwgdHJhY2tIU1YpOworICAgIFNrQ29sb3IgYnV0
dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKHRyYWNrSFNWLCAwLCAwLjIpOworICAgIFNr
Q29sb3IgYmFja2dyb3VuZENvbG9yID0gYnV0dG9uQ29sb3I7CisgICAgaWYgKHN0YXRlcyAmIFBy
ZXNzZWRTdGF0ZSkgeworICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107CisgICAgICAgIFNr
Q29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNWKTsKKyAgICAgICAgYnV0dG9uQ29sb3Ig
PSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwgMCwgLTAuMSk7CisgICAgfSBlbHNlIGlm
IChzdGF0ZXMgJiBIb3ZlclN0YXRlKSB7CisgICAgICAgIFNrU2NhbGFyIGJ1dHRvbkhTVlszXTsK
KyAgICAgICAgU2tDb2xvclRvSFNWKGJ1dHRvbkNvbG9yLCBidXR0b25IU1YpOworICAgICAgICBi
dXR0b25Db2xvciA9IHNhdHVyYXRlQW5kQnJpZ2h0ZW4oYnV0dG9uSFNWLCAwLCAwLjA1KTsKKyAg
ICB9CisKKyAgICBTa0lSZWN0IHNrcmVjdDsKKyAgICBza3JlY3Quc2V0KHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC54KCkgKyByZWN0LndpZHRoKCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7
CisgICAgLy8gUGFpbnQgdGhlIGJhY2tncm91bmQgKHRoZSBhcmVhIHZpc2libGUgYmVoaW5kIHRo
ZSByb3VuZGVkIGNvcm5lcnMpLgorICAgIHBhaW50LnNldENvbG9yKGJhY2tncm91bmRDb2xvcik7
CisgICAgY2FudmFzLT5kcmF3SVJlY3Qoc2tyZWN0LCBwYWludCk7CisKKyAgICAvLyBQYWludCB0
aGUgYnV0dG9uJ3Mgb3V0bGluZSBhbmQgZmlsbCB0aGUgbWlkZGxlCisgICAgU2tQYXRoIG91dGxp
bmU7CisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIE5vcnRoOgorICAgICAgICBv
dXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAuNSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpICsg
MC41KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsK
KyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIC0yKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KHJlY3Qud2lkdGgoKSAtIDUsIDApOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Cisg
ICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gMik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgU291dGg6CisgICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsg
MC41LCByZWN0LnkoKSAtIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0Lmhl
aWdodCgpIC0gMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsKKyAgICAgICAgb3V0
bGluZS5yTGluZVRvKHJlY3Qud2lkdGgoKSAtIDUsIDApOworICAgICAgICBvdXRsaW5lLnJMaW5l
VG8oMiwgLTIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0g
MikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVhc3Q6CisgICAgICAgIG91dGxpbmUubW92
ZVRvKHJlY3QueCgpIC0gMC41LCByZWN0LnkoKSArIDAuNSk7CisgICAgICAgIG91dGxpbmUuckxp
bmVUbyhyZWN0LndpZHRoKCkgLSAyLCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIp
OworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDUpOworICAgICAg
ICBvdXRsaW5lLnJMaW5lVG8oLTIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLShyZWN0
LndpZHRoKCkgLSAyKSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2VzdDoKKyAgICAg
ICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkgKyByZWN0LndpZHRoKCkgKyAwLjUsIHJlY3QueSgp
ICsgMC41KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDAp
OworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLTIsIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5l
VG8oMCwgcmVjdC5oZWlnaHQoKSAtIDUpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7
CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSAyLCAwKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIG91dGxpbmUuY2xvc2UoKTsKKworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBwYWludC5zZXRDb2xvcihidXR0b25Db2xvcik7
CisgICAgY2FudmFzLT5kcmF3UGF0aChvdXRsaW5lLCBwYWludCk7CisKKyAgICBwYWludC5zZXRB
bnRpQWxpYXModHJ1ZSk7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHls
ZSk7CisgICAgU2tTY2FsYXIgdGh1bWJIU1ZbM107CisgICAgU2tDb2xvclRvSFNWKHRodW1iSW5h
Y3RpdmVDb2xvcigpLCB0aHVtYkhTVik7CisgICAgcGFpbnQuc2V0Q29sb3Iob3V0bGluZUNvbG9y
KHRyYWNrSFNWLCB0aHVtYkhTVikpOworICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFp
bnQpOworCisgICAgLy8gSWYgdGhlIGJ1dHRvbiBpcyBkaXNhYmxlZCBvciByZWFkLW9ubHksIHRo
ZSBhcnJvdyBpcyBkcmF3biB3aXRoIHRoZSBvdXRsaW5lIGNvbG9yLgorICAgIGlmIChzdGF0ZXMg
JiBFbmFibGVkU3RhdGUgJiYgIShzdGF0ZXMgJiBSZWFkT25seVN0YXRlKSkKKyAgICAgICAgcGFp
bnQuc2V0Q29sb3IoU0tfQ29sb3JCTEFDSyk7CisKKyAgICBwYWludC5zZXRBbnRpQWxpYXMoZmFs
c2UpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKworICAgIFNr
UGF0aCBwYXRoOworICAgIC8vIFRoZSBjb25zdGFudHMgaW4gdGhpcyBibG9jayBvZiBjb2RlIGFy
ZSBoYW5kLXRhaWxvcmVkIHRvIHByb2R1Y2UgZ29vZAorICAgIC8vIGxvb2tpbmcgYXJyb3dzIHdp
dGhvdXQgYW50aS1hbGlhc2luZy4KKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAgIGNhc2Ug
Tm9ydGg6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgd2lkdGhNaWRkbGUgLSA0LCBy
ZWN0LnkoKSArIGxlbmd0aE1pZGRsZSArIDIpOworICAgICAgICBwYXRoLnJMaW5lVG8oNywgMCk7
CisgICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFNvdXRoOgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwg
cmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgLSAzKTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDcsIDAp
OworICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIDQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEVhc3Q6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlIC0gMywg
cmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDQpOworICAgICAgICBwYXRoLnJMaW5lVG8oMCwgNyk7
CisgICAgICAgIHBhdGguckxpbmVUbyg0LCAtNCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V2VzdDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyBsZW5ndGhNaWRkbGUgKyAxLCBy
ZWN0LnkoKSArIHdpZHRoTWlkZGxlIC0gNSk7CisgICAgICAgIHBhdGguckxpbmVUbygwLCA5KTsK
KyAgICAgICAgcGF0aC5yTGluZVRvKC00LCAtNCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBwYXRoLmNsb3NlKCk7CisKKyAgICBjYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NTNhZWI2NDI5ZTUyOTIxZGZjMWI0ZjBiNWZiZmMzNWRkNjYxYTMxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXguaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1MaW51eF9oCisjZGVmaW5lIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKyNpbmNsdWRlICJTa0NvbG9yLmgiCisjaW5j
bHVkZSAiU2tTY2FsYXIuaCIKKyNpbmNsdWRlICJUaGVtZVR5cGVzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXggeworcHVibGljOgor
ICAgIGVudW0gQXJyb3dEaXJlY3Rpb24geworICAgICAgICBOb3J0aCwKKyAgICAgICAgRWFzdCwK
KyAgICAgICAgU291dGgsCisgICAgICAgIFdlc3QsCisgICAgfTsKKworICAgIHN0YXRpYyB2b2lk
IHNldFNjcm9sbGJhckNvbG9ycyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhY3RpdmVDb2xvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhY2tDb2xvcik7CisgICAgc3RhdGlj
IHVuc2lnbmVkIHRodW1iSW5hY3RpdmVDb2xvcigpIHsgcmV0dXJuIHNfdGh1bWJJbmFjdGl2ZUNv
bG9yOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIHRodW1iQWN0aXZlQ29sb3IoKSB7IHJldHVybiBz
X3RodW1iQWN0aXZlQ29sb3I7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgdHJhY2tDb2xvcigpIHsg
cmV0dXJuIHNfdHJhY2tDb2xvcjsgfQorCisgICAgc3RhdGljIFNrQ29sb3Igc2F0dXJhdGVBbmRC
cmlnaHRlbihjb25zdCBTa1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1vdW50LCBT
a1NjYWxhciBicmlnaHRlbkFtb3VudCk7CisgICAgc3RhdGljIFNrQ29sb3Igb3V0bGluZUNvbG9y
KGNvbnN0IFNrU2NhbGFyIGhzdjFbM10sIGNvbnN0IFNrU2NhbGFyIGhzdjJbM10pOworICAgIHN0
YXRpYyB2b2lkIHBhaW50QXJyb3dCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYsIEFycm93RGlyZWN0aW9uLCBDb250cm9sU3RhdGVzKTsKKworcHJpdmF0ZToKKyAgICBQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1MaW51eCgpIHsgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHNfdGh1
bWJJbmFjdGl2ZUNvbG9yOworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1iQWN0aXZlQ29sb3I7
CisgICAgc3RhdGljIHVuc2lnbmVkIHNfdHJhY2tDb2xvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTQwNDRkOGM4M2Q0MzVhMDE5ZjZmN2M0YzgzNmExNzI2
OWZjNzU0ZS4uOTRkZDAwMmFlYjE5ZDUzOWZlNzY5YzhkOTdhMDUzZWEwNDViMTliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorICAyMDExLTEwLTAyICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgICAgW0Nocm9taXVtXSBN
b3ZlZCBmaWxlcyB0b3dhcmRzIEdUSyByZW1vdmFsCisgICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MjI5CisKKyAgICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29s
b3JzKToKKyAgICAgICAgKiBzcmMvbGludXgvV2ViRm9udEluZm8uY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcC4KKyAgICAgICAg
KFdlYktpdDo6V2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtlKToKKwogMjAxMS0xMC0wNCAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFdl
YiBJbnNwZWN0b3I6IHNhdmUgaW5zcGVjdG9yIHN0YXRlIGludG8gc2luZ2xlIHN0cmluZyBpbnN0
ZWFkIG9mIHN0cmluZyBtYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA2NjMwYjM1
MTE3YjBkMDM2NmQzMGRjOTIwYjJmZGM4NmQwMmNjNTYwLi41MjQ0MDMzODhiMTQ0ZGRlYjUyYzk2
YmQ4YWFiODE2YTAyY2Y5MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zNzEs
NyArMzcxLDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL0dlb2xvY2F0aW9uQ2xpZW50UHJveHku
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCcsCi0gICAg
ICAgICAgICAgICAgJ3NyYy9ndGsvV2ViRm9udEluZm8uY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
SURCQ2FsbGJhY2tzUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmgnLApAQCAtMzk1LDYgKzM5NCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9JbnNw
ZWN0b3JDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJGb250SW5mby5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlcmluZy5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udFJlbmRlclN0eWxlLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9saW51eC9XZWJSZW5kZXJUaGVtZS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDhhMjYyYjg4OGRjODZmY2RiOGY0
YzY4NDc3NjhmMzA3MTg2M2RmNmMuLmRhZTQxNjg0N2UzZGI0ZGI4NDA0ZjkxOTYwZDU1NTI1ZjEx
NGU0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTg1
LDcgKzg1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50Lmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1UaGVtZUNocm9taXVtTGludXguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
ICNpbmNsdWRlICJQb3B1cENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5o
IgpAQCAtMjMwOCw5ICsyMzA4LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0U2Nyb2xsYmFyQ29s
b3JzKHVuc2lnbmVkIGluYWN0aXZlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgYWN0aXZlQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdHJhY2tDb2xvcikgewogI2lmIE9TKFVOSVgpICYmICFPUyhE
QVJXSU4pCi0gICAgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrOjpzZXRTY3JvbGxiYXJDb2xvcnMo
aW5hY3RpdmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3RpdmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFja0NvbG9yKTsKKyAgICBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51
eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKGluYWN0aXZlQ29sb3IsIGFjdGl2ZUNvbG9yLCB0cmFja0Nv
bG9yKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9ndGsvV2ViRm9udEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dl
YkZvbnRJbmZvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdhZDE3YmE2NThl
NGRhMWFmZGQyMDY5NmNhZTY0MjE1Y2FmZmZjNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViRm9u
dEluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViRm9udEluZm8uaCIKLSNpbmNsdWRlICJXZWJGb250UmVuZGVyU3R5
bGUuaCIKLQotI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgotI2luY2x1ZGUgPHN0
cmluZy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdXRmMTYuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVdlYkNTdHJpbmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdlYlVDaGFy
KiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVk
TG9jYWxlKQotewotICAgIEZjQ2hhclNldCogY3NldCA9IEZjQ2hhclNldENyZWF0ZSgpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyczsgKytpKSB7Ci0gICAgICAgIGlm
IChVMTZfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcnNbaV0pCi0gICAgICAgICAmJiBVMTZfSVNfU1VS
Uk9HQVRFX0xFQUQoY2hhcmFjdGVyc1tpXSkKLSAgICAgICAgICYmIGkgIT0gbnVtQ2hhcmFjdGVy
cyAtIDEKLSAgICAgICAgICYmIFUxNl9JU19UUkFJTChjaGFyYWN0ZXJzW2kgKyAxXSkpIHsKLSAg
ICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBVMTZfR0VUX1NVUFBMRU1FTlRBUlko
Y2hhcmFjdGVyc1tpXSwgY2hhcmFjdGVyc1tpKzFdKSk7Ci0gICAgICAgICAgaSsrOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBjaGFyYWN0ZXJz
W2ldKTsKLSAgICB9Ci0gICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlKCk7
Ci0KLSAgICBGY1ZhbHVlIGZjdmFsdWU7Ci0gICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlQ2hhclNl
dDsKLSAgICBmY3ZhbHVlLnUuYyA9IGNzZXQ7Ci0gICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZD
X0NIQVJTRVQsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2YWx1ZS50eXBlID0gRmNUeXBl
Qm9vbDsKLSAgICBmY3ZhbHVlLnUuYiA9IEZjVHJ1ZTsKLSAgICBGY1BhdHRlcm5BZGQocGF0dGVy
biwgRkNfU0NBTEFCTEUsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgaWYgKHByZWZlcnJlZExv
Y2FsZSkgewotICAgICAgICBGY0xhbmdTZXQqIGxhbmdzZXQgPSBGY0xhbmdTZXRDcmVhdGUoKTsK
LSAgICAgICAgRmNMYW5nU2V0QWRkKGxhbmdzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmND
aGFyOCAqPihwcmVmZXJyZWRMb2NhbGUpKTsKLSAgICAgICAgRmNQYXR0ZXJuQWRkTGFuZ1NldChw
YXR0ZXJuLCBGQ19MQU5HLCBsYW5nc2V0KTsKLSAgICAgICAgRmNMYW5nU2V0RGVzdHJveShsYW5n
c2V0KTsKLSAgICB9Ci0KLSAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRj
aFBhdHRlcm4pOwotICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7Ci0KLSAgICBGY1Jl
c3VsdCByZXN1bHQ7Ci0gICAgRmNGb250U2V0KiBmb250U2V0ID0gRmNGb250U29ydCgwLCBwYXR0
ZXJuLCAwLCAwLCAmcmVzdWx0KTsKLSAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOwotICAg
IEZjQ2hhclNldERlc3Ryb3koY3NldCk7Ci0KLSAgICBpZiAoIWZvbnRTZXQpCi0gICAgICAgIHJl
dHVybiBXZWJDU3RyaW5nKCk7Ci0KLSAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBmb250Y29uZmln
IGhhdmUgYSBidWcgd2hlcmUgdGhleSBjYW5ub3Qgc2VsZWN0Ci0gICAgLy8gb25seSBzY2FsYWJs
ZSBmb250cyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGZpbHRlciB0aGUgcmVzdWx0cy4KLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IGZvbnRTZXQtPm5mb250OyArK2kpIHsKLSAgICAgICAgRmNQYXR0
ZXJuKiBjdXJyZW50ID0gZm9udFNldC0+Zm9udHNbaV07Ci0gICAgICAgIEZjQm9vbCBpc1NjYWxh
YmxlOwotCi0gICAgICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKGN1cnJlbnQsIEZDX1NDQUxBQkxF
LCAwLCAmaXNTY2FsYWJsZSkgIT0gRmNSZXN1bHRNYXRjaAotICAgICAgICAgICAgfHwgIWlzU2Nh
bGFibGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBmb250Y29uZmlnIGNh
biBhbHNvIHJldHVybiBmb250cyB3aGljaCBhcmUgdW5yZWFkYWJsZQotICAgICAgICBGY0NoYXI4
KiBjRmlsZW5hbWU7Ci0gICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNf
RklMRSwgMCwgJmNGaWxlbmFtZSkgIT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIGlmIChhY2Nlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY0ZpbGVu
YW1lKSwgUl9PSykpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBGY0NoYXI4KiBm
YW1pbHk7Ci0gICAgICAgIFdlYkNTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoRmNQYXR0ZXJu
R2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseSkgPT0gRmNSZXN1bHRNYXRj
aCkgewotICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGZhbWlseSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBXZWJDU3RyaW5nKGNoYXJG
YW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgRmNGb250U2V0
RGVzdHJveShmb250U2V0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBG
Y0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOwotICAgIHJldHVybiBXZWJDU3RyaW5nKCk7Ci19Ci0K
LXZvaWQgV2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWls
eSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKiBvdXQpCi17Ci0gICAgYm9v
bCBpc0JvbGQgPSBzaXplQW5kU3R5bGUgJiAxOwotICAgIGJvb2wgaXNJdGFsaWMgPSBzaXplQW5k
U3R5bGUgJiAyOwotICAgIGludCBwaXhlbFNpemUgPSBzaXplQW5kU3R5bGUgPj4gMjsKLQotICAg
IEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSgpOwotICAgIEZjVmFsdWUgZmN2
YWx1ZTsKLQotICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZVN0cmluZzsKLSAgICBmY3ZhbHVlLnUu
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCAqPihmYW1pbHkpOwotICAgIEZjUGF0
dGVybkFkZChwYXR0ZXJuLCBGQ19GQU1JTFksIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2
YWx1ZS50eXBlID0gRmNUeXBlSW50ZWdlcjsKLSAgICBmY3ZhbHVlLnUuaSA9IGlzQm9sZCA/IEZD
X1dFSUdIVF9CT0xEIDogRkNfV0VJR0hUX05PUk1BTDsKLSAgICBGY1BhdHRlcm5BZGQocGF0dGVy
biwgRkNfV0VJR0hULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIGZjdmFsdWUudHlwZSA9IEZj
VHlwZUludGVnZXI7Ci0gICAgZmN2YWx1ZS51LmkgPSBpc0l0YWxpYyA/IEZDX1NMQU5UX0lUQUxJ
QyA6IEZDX1NMQU5UX1JPTUFOOwotICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TTEFOVCwg
ZmN2YWx1ZSwgRmNGYWxzZSk7Ci0KLSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVCb29sOwotICAg
IGZjdmFsdWUudS5iID0gRmNUcnVlOwotICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FM
QUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0KLSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVEb3Vi
bGU7Ci0gICAgZmN2YWx1ZS51LmQgPSBwaXhlbFNpemU7Ci0gICAgRmNQYXR0ZXJuQWRkKHBhdHRl
cm4sIEZDX1NJWkUsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgRmNDb25maWdTdWJzdGl0dXRl
KDAsIHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKLSAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBh
dHRlcm4pOwotCi0gICAgRmNSZXN1bHQgcmVzdWx0OwotICAgIC8vIFNvbWUgdmVyc2lvbnMgb2Yg
Zm9udGNvbmZpZyBkb24ndCBhY3R1YWxseSB3cml0ZSBhIHZhbHVlIGludG8gcmVzdWx0LgotICAg
IC8vIEhvd2V2ZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20gdGhlIGRvY3VtZW50YXRpb24gaWYgcmVz
dWx0IHNob3VsZCBiZSBhCi0gICAgLy8gbm9uLTAgcG9pbnRlcjogZnV0dXJlIHZlcnNpb25zIG1p
Z2h0IGV4cGVjdCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvCi0gICAgLy8gaXQuIFNvIHdlIHBhc3Mg
aW4gYSB2YWxpZCBwb2ludGVyIGFuZCBpZ25vcmUgaXQuCi0gICAgRmNQYXR0ZXJuKiBtYXRjaCA9
IEZjRm9udE1hdGNoKDAsIHBhdHRlcm4sICZyZXN1bHQpOwotICAgIEZjUGF0dGVybkRlc3Ryb3ko
cGF0dGVybik7Ci0KLSAgICBvdXQtPnNldERlZmF1bHRzKCk7Ci0KLSAgICBpZiAoIW1hdGNoKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBGY0Jvb2wgYjsKLSAgICBpbnQgaTsKLQotICAgIGlmIChG
Y1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19BTlRJQUxJQVMsIDAsICZiKSA9PSBGY1Jlc3VsdE1h
dGNoKQotICAgICAgICBvdXQtPnVzZUFudGlBbGlhcyA9IGI7Ci0gICAgaWYgKEZjUGF0dGVybkdl
dEJvb2wobWF0Y2gsIEZDX0VNQkVEREVEX0JJVE1BUCwgMCwgJmIpID09IEZjUmVzdWx0TWF0Y2gp
Ci0gICAgICAgIG91dC0+dXNlQml0bWFwcyA9IGI7Ci0gICAgaWYgKEZjUGF0dGVybkdldEJvb2wo
bWF0Y2gsIEZDX0FVVE9ISU5ULCAwLCAmYikgPT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAgb3V0
LT51c2VBdXRvSGludCA9IGI7Ci0gICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0hJ
TlRJTkcsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQotICAgICAgICBvdXQtPnVzZUhpbnRpbmcg
PSBiOwotICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKG1hdGNoLCBGQ19ISU5UX1NUWUxFLCAw
LCAmaSkgPT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAgb3V0LT5oaW50U3R5bGUgPSBpOwotICAg
IGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKG1hdGNoLCBGQ19SR0JBLCAwLCAmaSkgPT0gRmNSZXN1
bHRNYXRjaCkgewotICAgICAgICBzd2l0Y2ggKGkpIHsKLSAgICAgICAgY2FzZSBGQ19SR0JBX05P
TkU6Ci0gICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEZDX1JHQkFfUkdCOgotICAgICAgICBjYXNlIEZDX1JHQkFfQkdSOgot
ICAgICAgICBjYXNlIEZDX1JHQkFfVlJHQjoKLSAgICAgICAgY2FzZSBGQ19SR0JBX1ZCR1I6Ci0g
ICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLy8gVGhpcyBpbmNsdWRlcyBGQ19SR0JBX1VOS05P
V04uCi0gICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRmNQYXR0ZXJuRGVzdHJveShtYXRjaCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
bGludXgvV2ViRm9udEluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5MTgyZDQ3ZWE3ZjViYWQ1NjJhMTZh
NTkxZmQwZTA1NzRkNTFmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9saW51eC9XZWJGb250SW5mby5jcHAKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRm9udEluZm8uaCIKKworI2luY2x1ZGUgIldlYkZvbnRS
ZW5kZXJTdHlsZS5oIgorCisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+CisjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViQ1N0cmluZyBXZWJGb250SW5mbzo6ZmFtaWx5Rm9yQ2hhcnMoY29uc3Qg
V2ViVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBudW1DaGFyYWN0ZXJzLCBjb25zdCBjaGFyKiBw
cmVmZXJyZWRMb2NhbGUpCit7CisgICAgRmNDaGFyU2V0KiBjc2V0ID0gRmNDaGFyU2V0Q3JlYXRl
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpIHsKKyAg
ICAgICAgaWYgKFUxNl9JU19TVVJST0dBVEUoY2hhcmFjdGVyc1tpXSkKKyAgICAgICAgICYmIFUx
Nl9JU19TVVJST0dBVEVfTEVBRChjaGFyYWN0ZXJzW2ldKQorICAgICAgICAgJiYgaSAhPSBudW1D
aGFyYWN0ZXJzIC0gMQorICAgICAgICAgJiYgVTE2X0lTX1RSQUlMKGNoYXJhY3RlcnNbaSArIDFd
KSkgeworICAgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIFUxNl9HRVRfU1VQUExF
TUVOVEFSWShjaGFyYWN0ZXJzW2ldLCBjaGFyYWN0ZXJzW2krMV0pKTsKKyAgICAgICAgICBpKys7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIGNo
YXJhY3RlcnNbaV0pOworICAgIH0KKyAgICBGY1BhdHRlcm4qIHBhdHRlcm4gPSBGY1BhdHRlcm5D
cmVhdGUoKTsKKworICAgIEZjVmFsdWUgZmN2YWx1ZTsKKyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5
cGVDaGFyU2V0OworICAgIGZjdmFsdWUudS5jID0gY3NldDsKKyAgICBGY1BhdHRlcm5BZGQocGF0
dGVybiwgRkNfQ0hBUlNFVCwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3ZhbHVlLnR5cGUg
PSBGY1R5cGVCb29sOworICAgIGZjdmFsdWUudS5iID0gRmNUcnVlOworICAgIEZjUGF0dGVybkFk
ZChwYXR0ZXJuLCBGQ19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBpZiAocHJl
ZmVycmVkTG9jYWxlKSB7CisgICAgICAgIEZjTGFuZ1NldCogbGFuZ3NldCA9IEZjTGFuZ1NldENy
ZWF0ZSgpOworICAgICAgICBGY0xhbmdTZXRBZGQobGFuZ3NldCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBGY0NoYXI4ICo+KHByZWZlcnJlZExvY2FsZSkpOworICAgICAgICBGY1BhdHRlcm5BZGRM
YW5nU2V0KHBhdHRlcm4sIEZDX0xBTkcsIGxhbmdzZXQpOworICAgICAgICBGY0xhbmdTZXREZXN0
cm95KGxhbmdzZXQpOworICAgIH0KKworICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJu
LCBGY01hdGNoUGF0dGVybik7CisgICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKKwor
ICAgIEZjUmVzdWx0IHJlc3VsdDsKKyAgICBGY0ZvbnRTZXQqIGZvbnRTZXQgPSBGY0ZvbnRTb3J0
KDAsIHBhdHRlcm4sIDAsIDAsICZyZXN1bHQpOworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVy
bik7CisgICAgRmNDaGFyU2V0RGVzdHJveShjc2V0KTsKKworICAgIGlmICghZm9udFNldCkKKyAg
ICAgICAgcmV0dXJuIFdlYkNTdHJpbmcoKTsKKworICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIGZv
bnRjb25maWcgaGF2ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNhbm5vdCBzZWxlY3QKKyAgICAvLyBvbmx5
IHNjYWxhYmxlIGZvbnRzIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgZmlsdGVyIHRoZSByZXN1bHRz
LgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9udFNldC0+bmZvbnQ7ICsraSkgeworICAgICAg
ICBGY1BhdHRlcm4qIGN1cnJlbnQgPSBmb250U2V0LT5mb250c1tpXTsKKyAgICAgICAgRmNCb29s
IGlzU2NhbGFibGU7CisKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldEJvb2woY3VycmVudCwgRkNf
U0NBTEFCTEUsIDAsICZpc1NjYWxhYmxlKSAhPSBGY1Jlc3VsdE1hdGNoCisgICAgICAgICAgICB8
fCAhaXNTY2FsYWJsZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIGZvbnRj
b25maWcgY2FuIGFsc28gcmV0dXJuIGZvbnRzIHdoaWNoIGFyZSB1bnJlYWRhYmxlCisgICAgICAg
IEZjQ2hhcjgqIGNGaWxlbmFtZTsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldFN0cmluZyhjdXJy
ZW50LCBGQ19GSUxFLCAwLCAmY0ZpbGVuYW1lKSAhPSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGFjY2VzcyhyZWludGVycHJldF9jYXN0PGNoYXIq
PihjRmlsZW5hbWUpLCBSX09LKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZj
Q2hhcjgqIGZhbWlseTsKKyAgICAgICAgV2ViQ1N0cmluZyByZXN1bHQ7CisgICAgICAgIGlmIChG
Y1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZLCAwLCAmZmFtaWx5KSA9PSBGY1Jl
c3VsdE1hdGNoKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFtaWx5ID0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdlYkNTdHJp
bmcoY2hhckZhbWlseSwgc3RybGVuKGNoYXJGYW1pbHkpKTsKKyAgICAgICAgfQorICAgICAgICBG
Y0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7CisgICAgcmV0dXJuIFdlYkNTdHJpbmco
KTsKK30KKwordm9pZCBXZWJGb250SW5mbzo6cmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3QgY2hh
ciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBXZWJGb250UmVuZGVyU3R5bGUqIG91dCkKK3sK
KyAgICBib29sIGlzQm9sZCA9IHNpemVBbmRTdHlsZSAmIDE7CisgICAgYm9vbCBpc0l0YWxpYyA9
IHNpemVBbmRTdHlsZSAmIDI7CisgICAgaW50IHBpeGVsU2l6ZSA9IHNpemVBbmRTdHlsZSA+PiAy
OworCisgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlKCk7CisgICAgRmNW
YWx1ZSBmY3ZhbHVlOworCisgICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlU3RyaW5nOworICAgIGZj
dmFsdWUudS5zID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4ICo+KGZhbWlseSk7Cisg
ICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX0ZBTUlMWSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisK
KyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVJbnRlZ2VyOworICAgIGZjdmFsdWUudS5pID0gaXNC
b2xkID8gRkNfV0VJR0hUX0JPTEQgOiBGQ19XRUlHSFRfTk9STUFMOworICAgIEZjUGF0dGVybkFk
ZChwYXR0ZXJuLCBGQ19XRUlHSFQsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgZmN2YWx1ZS50
eXBlID0gRmNUeXBlSW50ZWdlcjsKKyAgICBmY3ZhbHVlLnUuaSA9IGlzSXRhbGljID8gRkNfU0xB
TlRfSVRBTElDIDogRkNfU0xBTlRfUk9NQU47CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZD
X1NMQU5ULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUJv
b2w7CisgICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4s
IEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZj
VHlwZURvdWJsZTsKKyAgICBmY3ZhbHVlLnUuZCA9IHBpeGVsU2l6ZTsKKyAgICBGY1BhdHRlcm5B
ZGQocGF0dGVybiwgRkNfU0laRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBGY0NvbmZpZ1N1
YnN0aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0
aXR1dGUocGF0dGVybik7CisKKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgLy8gU29tZSB2ZXJz
aW9ucyBvZiBmb250Y29uZmlnIGRvbid0IGFjdHVhbGx5IHdyaXRlIGEgdmFsdWUgaW50byByZXN1
bHQuCisgICAgLy8gSG93ZXZlciwgaXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZG9jdW1lbnRhdGlv
biBpZiByZXN1bHQgc2hvdWxkIGJlIGEKKyAgICAvLyBub24tMCBwb2ludGVyOiBmdXR1cmUgdmVy
c2lvbnMgbWlnaHQgZXhwZWN0IHRvIGJlIGFibGUgdG8gd3JpdGUgdG8KKyAgICAvLyBpdC4gU28g
d2UgcGFzcyBpbiBhIHZhbGlkIHBvaW50ZXIgYW5kIGlnbm9yZSBpdC4KKyAgICBGY1BhdHRlcm4q
IG1hdGNoID0gRmNGb250TWF0Y2goMCwgcGF0dGVybiwgJnJlc3VsdCk7CisgICAgRmNQYXR0ZXJu
RGVzdHJveShwYXR0ZXJuKTsKKworICAgIG91dC0+c2V0RGVmYXVsdHMoKTsKKworICAgIGlmICgh
bWF0Y2gpCisgICAgICAgIHJldHVybjsKKworICAgIEZjQm9vbCBiOworICAgIGludCBpOworCisg
ICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0FOVElBTElBUywgMCwgJmIpID09IEZj
UmVzdWx0TWF0Y2gpCisgICAgICAgIG91dC0+dXNlQW50aUFsaWFzID0gYjsKKyAgICBpZiAoRmNQ
YXR0ZXJuR2V0Qm9vbChtYXRjaCwgRkNfRU1CRURERURfQklUTUFQLCAwLCAmYikgPT0gRmNSZXN1
bHRNYXRjaCkKKyAgICAgICAgb3V0LT51c2VCaXRtYXBzID0gYjsKKyAgICBpZiAoRmNQYXR0ZXJu
R2V0Qm9vbChtYXRjaCwgRkNfQVVUT0hJTlQsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAg
ICAgICBvdXQtPnVzZUF1dG9IaW50ID0gYjsKKyAgICBpZiAoRmNQYXR0ZXJuR2V0Qm9vbChtYXRj
aCwgRkNfSElOVElORywgMCwgJmIpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgIG91dC0+dXNl
SGludGluZyA9IGI7CisgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIobWF0Y2gsIEZDX0hJTlRf
U1RZTEUsIDAsICZpKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPmhpbnRTdHlsZSA9
IGk7CisgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIobWF0Y2gsIEZDX1JHQkEsIDAsICZpKSA9
PSBGY1Jlc3VsdE1hdGNoKSB7CisgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICBjYXNlIEZD
X1JHQkFfTk9ORToKKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4ZWwgPSAwOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRkNfUkdCQV9SR0I6CisgICAgICAgIGNhc2UgRkNfUkdC
QV9CR1I6CisgICAgICAgIGNhc2UgRkNfUkdCQV9WUkdCOgorICAgICAgICBjYXNlIEZDX1JHQkFf
VkJHUjoKKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4ZWwgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBUaGlzIGluY2x1ZGVzIEZDX1JH
QkFfVU5LTk9XTi4KKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4ZWwgPSAyOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGY1BhdHRlcm5EZXN0cm95KG1hdGNo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109673</attachid>
            <date>2011-10-04 13:33:27 -0700</date>
            <delta_ts>2011-10-04 15:42:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-69229-20111004133202.patch</filename>
            <type>text/plain</type>
            <size>44774</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2MDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMTViYzliN2QxZDQ2OTkz
YTljMjk4ODI1Y2Y2MWNjZmFkNGI4NWM1Li4xNTljOGFjMmRlNzdlM2JiZmJmYWQzMGViYWQ2YzJm
NWIxZTU5NDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTAtMDQgIEZhZHkg
U2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3Zl
ZCBmaWxlcyB0b3dhcmRzIEdUSyByZW1vdmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTIyOQorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzZXRTY3JvbGxiYXJD
b2xvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXg6OnNhdHVyYXRlQW5kQnJpZ2h0ZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6Om91dGxpbmVDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRBcnJvd0J1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGlu
dXguaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bUd0ay5oLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1UaGVtZUNo
cm9taXVtTGludXg6OnRodW1iSW5hY3RpdmVDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6dGh1bWJBY3RpdmVDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6dHJhY2tDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6UGxhdGZvcm1UaGVtZUNocm9taXVt
TGludXgpOgorCiAyMDExLTEwLTA0ICBDYXJ5IENsYXJrICA8Y2FyeWNsYXJrQGdvb2dsZS5jb20+
CiAKICAgICAgICAgQXBwbHkgY29sb3IgcHJvZmlsZSBmb3VuZCB0byBkZWNvZGVkIGJpdG1hcCAo
U2tpYSBvbiBNYWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGFiYjllMzJkZWQ1NjFmNDM3ZTRiNzYw
YzFlZDAzNWZjODI2N2I5Ni4uMGZkNjhhOWRhOWJjNGNmYTliZTE2MmI4NGI4NzQzMTYwMzI1MWEw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzE4OSw4ICszMTg5LDggQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRDaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVuQ2hyb21pdW0uY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrLmNwcCcs
Ci0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtR3Rr
LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1
bUxpbnV4LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVt
ZUNocm9taXVtTGludXguaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWlu
ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5o
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
VGhlbWVDaHJvbWl1bUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
bGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2NTI5NDgyNWUwNmIzMTgwNWY2ODgyOTg2OTU0YTY5NDZmOWI0YmI5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwyMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVRoZW1l
Q2hyb21pdW1HdGsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11bnNpZ25lZCBQbGF0Zm9y
bVRoZW1lQ2hyb21pdW1HdGs6OnNfdGh1bWJJbmFjdGl2ZUNvbG9yID0gMHhlYWVhZWE7Ci11bnNp
Z25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNfdGh1bWJBY3RpdmVDb2xvciA9IDB4ZjRm
NGY0OwotdW5zaWduZWQgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrOjpzX3RyYWNrQ29sb3IgPSAw
eGQzZDNkMzsKLQotdm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1HdGs6OnNldFNjcm9sbGJhckNv
bG9ycygKLSAgICBTa0NvbG9yIGluYWN0aXZlQ29sb3IsIFNrQ29sb3IgYWN0aXZlQ29sb3IsIFNr
Q29sb3IgdHJhY2tDb2xvcikKLXsKLSAgICBzX3RodW1iSW5hY3RpdmVDb2xvciA9IGluYWN0aXZl
Q29sb3I7Ci0gICAgc190aHVtYkFjdGl2ZUNvbG9yID0gYWN0aXZlQ29sb3I7Ci0gICAgc190cmFj
a0NvbG9yID0gdHJhY2tDb2xvcjsKLX0KLQotc3RhdGljIFNrU2NhbGFyIGNsYW1wKFNrU2NhbGFy
IHZhbHVlLCBTa1NjYWxhciBtaW4sIFNrU2NhbGFyIG1heCkKLXsKLSAgICByZXR1cm4gc3RkOjpt
aW4oc3RkOjptYXgodmFsdWUsIG1pbiksIG1heCk7Ci19Ci0KLVNrQ29sb3IgUGxhdGZvcm1UaGVt
ZUNocm9taXVtR3RrOjpzYXR1cmF0ZUFuZEJyaWdodGVuKGNvbnN0IFNrU2NhbGFyIGhzdlszXSwg
U2tTY2FsYXIgc2F0dXJhdGVBbW91bnQsIFNrU2NhbGFyIGJyaWdodGVuQW1vdW50KQotewotICAg
IFNrU2NhbGFyIGNvbG9yWzNdOwotICAgIGNvbG9yWzBdID0gaHN2WzBdOwotICAgIGNvbG9yWzFd
ID0gY2xhbXAoaHN2WzFdICsgc2F0dXJhdGVBbW91bnQsIDAuMCwgMS4wKTsKLSAgICBjb2xvclsy
XSA9IGNsYW1wKGhzdlsyXSArIGJyaWdodGVuQW1vdW50LCAwLjAsIDEuMCk7Ci0gICAgcmV0dXJu
IFNrSFNWVG9Db2xvcihjb2xvcik7Ci19Ci0KLVNrQ29sb3IgUGxhdGZvcm1UaGVtZUNocm9taXVt
R3RrOjpvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIgaHN2MVszXSwgY29uc3QgU2tTY2FsYXIg
aHN2MlszXSkKLXsKLSAgICAvLyBHVEsgVGhlbWUgZW5naW5lcyBoYXZlIHdheSB0b28gbXVjaCBj
b250cm9sIG92ZXIgdGhlIGxheW91dCBvZgotICAgIC8vIHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0
IGJlIGFibGUgdG8gbW9yZSBjbG9zZWx5IGFwcHJveGltYXRlIGl0cwotICAgIC8vIGxvb2stYW5k
LWZlZWwsIGlmIHdlIHNlbnQgd2hvbGUgaW1hZ2VzIGluc3RlYWQgb2YganVzdCBjb2xvcnMKLSAg
ICAvLyBmcm9tIHRoZSBicm93c2VyIHRvIHRoZSByZW5kZXJlci4gQnV0IGV2ZW4gdGhlbiwgc29t
ZSB0aGVtZXMKLSAgICAvLyB3b3VsZCBqdXN0IGJyZWFrLgotICAgIC8vCi0gICAgLy8gU28sIGlu
c3RlYWQsIHdlIGRvbid0IGV2ZW4gdHJ5IHRvIDEwMCUgcmVwbGljYXRlIHRoZSBsb29rIG9mCi0g
ICAgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIuIFdlIHJlbmRlciBvdXIgb3duIHZlcnNpb24sIGJ1
dCB3ZSBtYWtlCi0gICAgLy8gc3VyZSB0byBwaWNrIGNvbG9ycyB0aGF0IGJsZW5kIGluIG5pY2Vs
eSB3aXRoIHRoZSBzeXN0ZW0gR1RLCi0gICAgLy8gdGhlbWUuIEluIG1vc3QgY2FzZXMsIHdlIGNh
biBqdXN0IHNhbXBsZSBhIGNvdXBsZSBvZiBwaXhlbHMKLSAgICAvLyBmcm9tIHRoZSBzeXN0ZW0g
c2Nyb2xsYmFyIGFuZCB1c2UgdGhvc2UgY29sb3JzIHRvIGRyYXcgb3VyCi0gICAgLy8gc2Nyb2xs
YmFyLgotICAgIC8vCi0gICAgLy8gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgdHJhY2sgY29sb3Ig
YW5kIHRoZSBvdmVyYWxsIHRodW1iCi0gICAgLy8gY29sb3IuIEJ1dCBpdCBmYWlscyBzcGVjdGFj
dWxhcmx5IGZvciB0aGUgb3V0bGluZSBjb2xvciB1c2VkCi0gICAgLy8gYXJvdW5kIHRoZSB0aHVt
YiBwaWVjZS4gIE5vdCBhbGwgdGhlbWVzIGhhdmUgYSBjbGVhcmx5IGRlZmluZWQKLSAgICAvLyBv
dXRsaW5lLiBGb3Igc29tZSBvZiB0aGVtIGl0IGlzIHBhcnRpYWxseSB0cmFuc3BhcmVudCwgYW5k
IGZvcgotICAgIC8vIG90aGVycyB0aGUgdGhpY2tuZXNzIGlzIHZlcnkgdW5wcmVkaWN0YWJsZS4K
LSAgICAvLwotICAgIC8vIFNvLCBpbnN0ZWFkIG9mIHRyeWluZyB0byBhcHByb3hpbWF0ZSB0aGUg
c3lzdGVtIHRoZW1lLCB3ZQotICAgIC8vIGluc3RlYWQgdHJ5IHRvIGNvbXB1dGUgYSByZWFzb25h
YmxlIGxvb2tpbmcgY2hvaWNlIGJhc2VkIG9uIHRoZQotICAgIC8vIGtub3duIGNvbG9yIG9mIHRo
ZSB0cmFjayBhbmQgdGhlIHRodW1iIHBpZWNlLiBUaGlzIGlzIGRpZmZpY3VsdAotICAgIC8vIHdo
ZW4gdHJ5aW5nIHRvIGRlYWwgYm90aCB3aXRoIGhpZ2gtIGFuZCBsb3ctY29udHJhc3QgdGhlbWVz
LAotICAgIC8vIGFuZCBib3RoIHdpdGggcG9zaXRpdmUgYW5kIGludmVydGVkIHRoZW1lcy4KLSAg
ICAvLwotICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBoYXMgYmVlbiB0ZXN0ZWQgdG8gbG9vayBP
SyB3aXRoIGFsbCBvZiB0aGUKLSAgICAvLyBkZWZhdWx0IEdUSyB0aGVtZXMuCi0gICAgU2tTY2Fs
YXIgbWluRGlmZiA9IGNsYW1wKChoc3YxWzFdICsgaHN2MlsxXSkgKiAxLjIsIDAuMjgsIDAuNSk7
Ci0gICAgU2tTY2FsYXIgZGlmZiA9IGNsYW1wKGZhYnMoaHN2MVsyXSAtIGhzdjJbMl0pIC8gMiwg
bWluRGlmZiwgMC41KTsKLQotICAgIGlmIChoc3YxWzJdICsgaHN2MlsyXSA+IDEuMCkKLSAgICAg
ICAgZGlmZiA9IC1kaWZmOwotCi0gICAgcmV0dXJuIHNhdHVyYXRlQW5kQnJpZ2h0ZW4oaHN2Miwg
LTAuMiwgZGlmZik7Ci19Ci0KLXZvaWQgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrOjpwYWludEFy
cm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFycm93
RGlyZWN0aW9uIGRpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCi17Ci0gICAgU2tDYW52
YXMqIGNvbnN0IGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0gICAg
aW50IHdpZHRoTWlkZGxlLCBsZW5ndGhNaWRkbGU7Ci0gICAgU2tQYWludCBwYWludDsKLSAgICBp
ZiAoZGlyZWN0aW9uID09IE5vcnRoIHx8IGRpcmVjdGlvbiA9PSBTb3V0aCkgewotICAgICAgICB3
aWR0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOwotICAgICAgICBsZW5ndGhNaWRkbGUg
PSByZWN0LmhlaWdodCgpIC8gMiArIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGVuZ3RoTWlk
ZGxlID0gcmVjdC53aWR0aCgpIC8gMiArIDE7Ci0gICAgICAgIHdpZHRoTWlkZGxlID0gcmVjdC5o
ZWlnaHQoKSAvIDIgKyAxOwotICAgIH0KLQotICAgIC8vIENhbGN1bGF0ZSBidXR0b24gY29sb3Iu
Ci0gICAgU2tTY2FsYXIgdHJhY2tIU1ZbM107Ci0gICAgU2tDb2xvclRvSFNWKHRyYWNrQ29sb3Io
KSwgdHJhY2tIU1YpOwotICAgIFNrQ29sb3IgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdo
dGVuKHRyYWNrSFNWLCAwLCAwLjIpOwotICAgIFNrQ29sb3IgYmFja2dyb3VuZENvbG9yID0gYnV0
dG9uQ29sb3I7Ci0gICAgaWYgKHN0YXRlcyAmIFByZXNzZWRTdGF0ZSkgewotICAgICAgICBTa1Nj
YWxhciBidXR0b25IU1ZbM107Ci0gICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0
dG9uSFNWKTsKLSAgICAgICAgYnV0dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRv
bkhTViwgMCwgLTAuMSk7Ci0gICAgfSBlbHNlIGlmIChzdGF0ZXMgJiBIb3ZlclN0YXRlKSB7Ci0g
ICAgICAgIFNrU2NhbGFyIGJ1dHRvbkhTVlszXTsKLSAgICAgICAgU2tDb2xvclRvSFNWKGJ1dHRv
bkNvbG9yLCBidXR0b25IU1YpOwotICAgICAgICBidXR0b25Db2xvciA9IHNhdHVyYXRlQW5kQnJp
Z2h0ZW4oYnV0dG9uSFNWLCAwLCAwLjA1KTsKLSAgICB9Ci0KLSAgICBTa0lSZWN0IHNrcmVjdDsK
LSAgICBza3JlY3Quc2V0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC54KCkgKyByZWN0LndpZHRo
KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7Ci0gICAgLy8gUGFpbnQgdGhlIGJhY2tncm91
bmQgKHRoZSBhcmVhIHZpc2libGUgYmVoaW5kIHRoZSByb3VuZGVkIGNvcm5lcnMpLgotICAgIHBh
aW50LnNldENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgY2FudmFzLT5kcmF3SVJlY3Qoc2ty
ZWN0LCBwYWludCk7Ci0KLSAgICAvLyBQYWludCB0aGUgYnV0dG9uJ3Mgb3V0bGluZSBhbmQgZmls
bCB0aGUgbWlkZGxlCi0gICAgU2tQYXRoIG91dGxpbmU7Ci0gICAgc3dpdGNoIChkaXJlY3Rpb24p
IHsKLSAgICBjYXNlIE5vcnRoOgotICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAu
NSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpICsgMC41KTsKLSAgICAgICAgb3V0bGluZS5yTGlu
ZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIpKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIs
IC0yKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qud2lkdGgoKSAtIDUsIDApOwotICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbygwLCBy
ZWN0LmhlaWdodCgpIC0gMik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU291dGg6Ci0gICAg
ICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgMC41LCByZWN0LnkoKSAtIDAuNSk7Ci0gICAg
ICAgIG91dGxpbmUuckxpbmVUbygwLCByZWN0LmhlaWdodCgpIC0gMik7Ci0gICAgICAgIG91dGxp
bmUuckxpbmVUbygyLCAyKTsKLSAgICAgICAgb3V0bGluZS5yTGluZVRvKHJlY3Qud2lkdGgoKSAt
IDUsIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgLTIpOwotICAgICAgICBvdXRsaW5l
LnJMaW5lVG8oMCwgLShyZWN0LmhlaWdodCgpIC0gMikpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEVhc3Q6Ci0gICAgICAgIG91dGxpbmUubW92ZVRvKHJlY3QueCgpIC0gMC41LCByZWN0Lnko
KSArIDAuNSk7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSAyLCAwKTsK
LSAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8o
MCwgcmVjdC5oZWlnaHQoKSAtIDUpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLTIsIDIpOwot
ICAgICAgICBvdXRsaW5lLnJMaW5lVG8oLShyZWN0LndpZHRoKCkgLSAyKSwgMCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV2VzdDoKLSAgICAgICAgb3V0bGluZS5tb3ZlVG8ocmVjdC54KCkg
KyByZWN0LndpZHRoKCkgKyAwLjUsIHJlY3QueSgpICsgMC41KTsKLSAgICAgICAgb3V0bGluZS5y
TGluZVRvKC0ocmVjdC53aWR0aCgpIC0gMiksIDApOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8o
LTIsIDIpOwotICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDUpOwot
ICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7Ci0gICAgICAgIG91dGxpbmUuckxpbmVUbyhy
ZWN0LndpZHRoKCkgLSAyLCAwKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG91dGxpbmUu
Y2xvc2UoKTsKLQotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAg
ICBwYWludC5zZXRDb2xvcihidXR0b25Db2xvcik7Ci0gICAgY2FudmFzLT5kcmF3UGF0aChvdXRs
aW5lLCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRBbnRpQWxpYXModHJ1ZSk7Ci0gICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgU2tTY2FsYXIgdGh1bWJIU1Zb
M107Ci0gICAgU2tDb2xvclRvSFNWKHRodW1iSW5hY3RpdmVDb2xvcigpLCB0aHVtYkhTVik7Ci0g
ICAgcGFpbnQuc2V0Q29sb3Iob3V0bGluZUNvbG9yKHRyYWNrSFNWLCB0aHVtYkhTVikpOwotICAg
IGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOwotCi0gICAgLy8gSWYgdGhlIGJ1dHRv
biBpcyBkaXNhYmxlZCBvciByZWFkLW9ubHksIHRoZSBhcnJvdyBpcyBkcmF3biB3aXRoIHRoZSBv
dXRsaW5lIGNvbG9yLgotICAgIGlmIChzdGF0ZXMgJiBFbmFibGVkU3RhdGUgJiYgIShzdGF0ZXMg
JiBSZWFkT25seVN0YXRlKSkKLSAgICAgICAgcGFpbnQuc2V0Q29sb3IoU0tfQ29sb3JCTEFDSyk7
Ci0KLSAgICBwYWludC5zZXRBbnRpQWxpYXMoZmFsc2UpOwotICAgIHBhaW50LnNldFN0eWxlKFNr
UGFpbnQ6OmtGaWxsX1N0eWxlKTsKLQotICAgIFNrUGF0aCBwYXRoOwotICAgIC8vIFRoZSBjb25z
dGFudHMgaW4gdGhpcyBibG9jayBvZiBjb2RlIGFyZSBoYW5kLXRhaWxvcmVkIHRvIHByb2R1Y2Ug
Z29vZAotICAgIC8vIGxvb2tpbmcgYXJyb3dzIHdpdGhvdXQgYW50aS1hbGlhc2luZy4KLSAgICBz
d2l0Y2ggKGRpcmVjdGlvbikgewotICAgIGNhc2UgTm9ydGg6Ci0gICAgICAgIHBhdGgubW92ZVRv
KHJlY3QueCgpICsgd2lkdGhNaWRkbGUgLSA0LCByZWN0LnkoKSArIGxlbmd0aE1pZGRsZSArIDIp
OwotICAgICAgICBwYXRoLnJMaW5lVG8oNywgMCk7Ci0gICAgICAgIHBhdGguckxpbmVUbygtNCwg
LTQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNvdXRoOgotICAgICAgICBwYXRoLm1vdmVU
byhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVjdC55KCkgKyBsZW5ndGhNaWRkbGUgLSAz
KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwotICAgICAgICBwYXRoLnJMaW5lVG8oLTQs
IDQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEVhc3Q6Ci0gICAgICAgIHBhdGgubW92ZVRv
KHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlIC0gMywgcmVjdC55KCkgKyB3aWR0aE1pZGRsZSAtIDQp
OwotICAgICAgICBwYXRoLnJMaW5lVG8oMCwgNyk7Ci0gICAgICAgIHBhdGguckxpbmVUbyg0LCAt
NCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2VzdDoKLSAgICAgICAgcGF0aC5tb3ZlVG8o
cmVjdC54KCkgKyBsZW5ndGhNaWRkbGUgKyAxLCByZWN0LnkoKSArIHdpZHRoTWlkZGxlIC0gNSk7
Ci0gICAgICAgIHBhdGguckxpbmVUbygwLCA5KTsKLSAgICAgICAgcGF0aC5yTGluZVRvKC00LCAt
NCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBwYXRoLmNsb3NlKCk7Ci0KLSAgICBjYW52
YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1HdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bUd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGMy
NjgzZGYyZGYxNzM0N2ZiZDYxMzkxOGNlNjVlNWMyZTQ5MTAwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrX2gKLSNkZWZpbmUgUGxhdGZvcm1U
aGVtZUNocm9taXVtR3RrX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKLSNp
bmNsdWRlICJTa0NvbG9yLmgiCi0jaW5jbHVkZSAiU2tTY2FsYXIuaCIKLSNpbmNsdWRlICJUaGVt
ZVR5cGVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGxhdGZvcm1UaGVtZUNo
cm9taXVtR3RrIHsKLXB1YmxpYzoKLSAgICBlbnVtIEFycm93RGlyZWN0aW9uIHsKLSAgICAgICAg
Tm9ydGgsCi0gICAgICAgIEVhc3QsCi0gICAgICAgIFNvdXRoLAotICAgICAgICBXZXN0LAotICAg
IH07Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3Rp
dmVDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0
aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRy
YWNrQ29sb3IpOwotICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkluYWN0aXZlQ29sb3IoKSB7IHJl
dHVybiBzX3RodW1iSW5hY3RpdmVDb2xvcjsgfQotICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkFj
dGl2ZUNvbG9yKCkgeyByZXR1cm4gc190aHVtYkFjdGl2ZUNvbG9yOyB9Ci0gICAgc3RhdGljIHVu
c2lnbmVkIHRyYWNrQ29sb3IoKSB7IHJldHVybiBzX3RyYWNrQ29sb3I7IH0KLQotICAgIHN0YXRp
YyBTa0NvbG9yIHNhdHVyYXRlQW5kQnJpZ2h0ZW4oY29uc3QgU2tTY2FsYXIgaHN2WzNdLCBTa1Nj
YWxhciBzYXR1cmF0ZUFtb3VudCwgU2tTY2FsYXIgYnJpZ2h0ZW5BbW91bnQpOwotICAgIHN0YXRp
YyBTa0NvbG9yIG91dGxpbmVDb2xvcihjb25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1Nj
YWxhciBoc3YyWzNdKTsKLSAgICBzdGF0aWMgdm9pZCBwYWludEFycm93QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmLCBBcnJvd0RpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyk7
Ci0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1UaGVtZUNocm9taXVtR3RrKCkge30KLQotICAgIHN0
YXRpYyB1bnNpZ25lZCBzX3RodW1iSW5hY3RpdmVDb2xvcjsKLSAgICBzdGF0aWMgdW5zaWduZWQg
c190aHVtYkFjdGl2ZUNvbG9yOwotICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RyYWNrQ29sb3I7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hy
b21pdW1HdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNGY4
NTBhODVlMjc2YTU5YjBiOTAyMzVjMDE5MGQwYWQ1OTNkMDkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51
eC5jcHAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1UaGVtZUNocm9taXVtTGludXguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1bnNp
Z25lZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c190aHVtYkluYWN0aXZlQ29sb3IgPSAw
eGVhZWFlYTsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpzX3RodW1iQWN0
aXZlQ29sb3IgPSAweGY0ZjRmNDsKK3Vuc2lnbmVkIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4
OjpzX3RyYWNrQ29sb3IgPSAweGQzZDNkMzsKKwordm9pZCBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1M
aW51eDo6c2V0U2Nyb2xsYmFyQ29sb3JzKAorICAgIFNrQ29sb3IgaW5hY3RpdmVDb2xvciwgU2tD
b2xvciBhY3RpdmVDb2xvciwgU2tDb2xvciB0cmFja0NvbG9yKQoreworICAgIHNfdGh1bWJJbmFj
dGl2ZUNvbG9yID0gaW5hY3RpdmVDb2xvcjsKKyAgICBzX3RodW1iQWN0aXZlQ29sb3IgPSBhY3Rp
dmVDb2xvcjsKKyAgICBzX3RyYWNrQ29sb3IgPSB0cmFja0NvbG9yOworfQorCitzdGF0aWMgU2tT
Y2FsYXIgY2xhbXAoU2tTY2FsYXIgdmFsdWUsIFNrU2NhbGFyIG1pbiwgU2tTY2FsYXIgbWF4KQor
eworICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCh2YWx1ZSwgbWluKSwgbWF4KTsKK30KKwor
U2tDb2xvciBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eDo6c2F0dXJhdGVBbmRCcmlnaHRlbihj
b25zdCBTa1NjYWxhciBoc3ZbM10sIFNrU2NhbGFyIHNhdHVyYXRlQW1vdW50LCBTa1NjYWxhciBi
cmlnaHRlbkFtb3VudCkKK3sKKyAgICBTa1NjYWxhciBjb2xvclszXTsKKyAgICBjb2xvclswXSA9
IGhzdlswXTsKKyAgICBjb2xvclsxXSA9IGNsYW1wKGhzdlsxXSArIHNhdHVyYXRlQW1vdW50LCAw
LjAsIDEuMCk7CisgICAgY29sb3JbMl0gPSBjbGFtcChoc3ZbMl0gKyBicmlnaHRlbkFtb3VudCwg
MC4wLCAxLjApOworICAgIHJldHVybiBTa0hTVlRvQ29sb3IoY29sb3IpOworfQorCitTa0NvbG9y
IFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4OjpvdXRsaW5lQ29sb3IoY29uc3QgU2tTY2FsYXIg
aHN2MVszXSwgY29uc3QgU2tTY2FsYXIgaHN2MlszXSkKK3sKKyAgICAvLyBHVEsgVGhlbWUgZW5n
aW5lcyBoYXZlIHdheSB0b28gbXVjaCBjb250cm9sIG92ZXIgdGhlIGxheW91dCBvZgorICAgIC8v
IHRoZSBzY3JvbGxiYXIuIFdlIG1pZ2h0IGJlIGFibGUgdG8gbW9yZSBjbG9zZWx5IGFwcHJveGlt
YXRlIGl0cworICAgIC8vIGxvb2stYW5kLWZlZWwsIGlmIHdlIHNlbnQgd2hvbGUgaW1hZ2VzIGlu
c3RlYWQgb2YganVzdCBjb2xvcnMKKyAgICAvLyBmcm9tIHRoZSBicm93c2VyIHRvIHRoZSByZW5k
ZXJlci4gQnV0IGV2ZW4gdGhlbiwgc29tZSB0aGVtZXMKKyAgICAvLyB3b3VsZCBqdXN0IGJyZWFr
LgorICAgIC8vCisgICAgLy8gU28sIGluc3RlYWQsIHdlIGRvbid0IGV2ZW4gdHJ5IHRvIDEwMCUg
cmVwbGljYXRlIHRoZSBsb29rIG9mCisgICAgLy8gdGhlIG5hdGl2ZSBzY3JvbGxiYXIuIFdlIHJl
bmRlciBvdXIgb3duIHZlcnNpb24sIGJ1dCB3ZSBtYWtlCisgICAgLy8gc3VyZSB0byBwaWNrIGNv
bG9ycyB0aGF0IGJsZW5kIGluIG5pY2VseSB3aXRoIHRoZSBzeXN0ZW0gR1RLCisgICAgLy8gdGhl
bWUuIEluIG1vc3QgY2FzZXMsIHdlIGNhbiBqdXN0IHNhbXBsZSBhIGNvdXBsZSBvZiBwaXhlbHMK
KyAgICAvLyBmcm9tIHRoZSBzeXN0ZW0gc2Nyb2xsYmFyIGFuZCB1c2UgdGhvc2UgY29sb3JzIHRv
IGRyYXcgb3VyCisgICAgLy8gc2Nyb2xsYmFyLgorICAgIC8vCisgICAgLy8gVGhpcyB3b3JrcyBm
aW5lIGZvciB0aGUgdHJhY2sgY29sb3IgYW5kIHRoZSBvdmVyYWxsIHRodW1iCisgICAgLy8gY29s
b3IuIEJ1dCBpdCBmYWlscyBzcGVjdGFjdWxhcmx5IGZvciB0aGUgb3V0bGluZSBjb2xvciB1c2Vk
CisgICAgLy8gYXJvdW5kIHRoZSB0aHVtYiBwaWVjZS4gTm90IGFsbCB0aGVtZXMgaGF2ZSBhIGNs
ZWFybHkgZGVmaW5lZAorICAgIC8vIG91dGxpbmUuIEZvciBzb21lIG9mIHRoZW0gaXQgaXMgcGFy
dGlhbGx5IHRyYW5zcGFyZW50LCBhbmQgZm9yCisgICAgLy8gb3RoZXJzIHRoZSB0aGlja25lc3Mg
aXMgdmVyeSB1bnByZWRpY3RhYmxlLgorICAgIC8vCisgICAgLy8gU28sIGluc3RlYWQgb2YgdHJ5
aW5nIHRvIGFwcHJveGltYXRlIHRoZSBzeXN0ZW0gdGhlbWUsIHdlCisgICAgLy8gaW5zdGVhZCB0
cnkgdG8gY29tcHV0ZSBhIHJlYXNvbmFibGUgbG9va2luZyBjaG9pY2UgYmFzZWQgb24gdGhlCisg
ICAgLy8ga25vd24gY29sb3Igb2YgdGhlIHRyYWNrIGFuZCB0aGUgdGh1bWIgcGllY2UuIFRoaXMg
aXMgZGlmZmljdWx0CisgICAgLy8gd2hlbiB0cnlpbmcgdG8gZGVhbCBib3RoIHdpdGggaGlnaC0g
YW5kIGxvdy1jb250cmFzdCB0aGVtZXMsCisgICAgLy8gYW5kIGJvdGggd2l0aCBwb3NpdGl2ZSBh
bmQgaW52ZXJ0ZWQgdGhlbWVzLgorICAgIC8vCisgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGhh
cyBiZWVuIHRlc3RlZCB0byBsb29rIE9LIHdpdGggYWxsIG9mIHRoZQorICAgIC8vIGRlZmF1bHQg
R1RLIHRoZW1lcy4KKyAgICBTa1NjYWxhciBtaW5EaWZmID0gY2xhbXAoKGhzdjFbMV0gKyBoc3Yy
WzFdKSAqIDEuMiwgMC4yOCwgMC41KTsKKyAgICBTa1NjYWxhciBkaWZmID0gY2xhbXAoZmFicyho
c3YxWzJdIC0gaHN2MlsyXSkgLyAyLCBtaW5EaWZmLCAwLjUpOworCisgICAgaWYgKGhzdjFbMl0g
KyBoc3YyWzJdID4gMS4wKQorICAgICAgICBkaWZmID0gLWRpZmY7CisKKyAgICByZXR1cm4gc2F0
dXJhdGVBbmRCcmlnaHRlbihoc3YyLCAtMC4yLCBkaWZmKTsKK30KKwordm9pZCBQbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRBcnJvd0J1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBBcnJvd0RpcmVjdGlvbiBkaXJlY3Rpb24sIENvbnRyb2xTdGF0
ZXMgc3RhdGVzKQoreworICAgIFNrQ2FudmFzKiBjb25zdCBjYW52YXMgPSBnYy0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOworICAgIGludCB3aWR0aE1pZGRsZSwgbGVuZ3RoTWlkZGxlOwor
ICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBOb3J0aCB8fCBkaXJlY3Rp
b24gPT0gU291dGgpIHsKKyAgICAgICAgd2lkdGhNaWRkbGUgPSByZWN0LndpZHRoKCkgLyAyICsg
MTsKKyAgICAgICAgbGVuZ3RoTWlkZGxlID0gcmVjdC5oZWlnaHQoKSAvIDIgKyAxOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGxlbmd0aE1pZGRsZSA9IHJlY3Qud2lkdGgoKSAvIDIgKyAxOworICAg
ICAgICB3aWR0aE1pZGRsZSA9IHJlY3QuaGVpZ2h0KCkgLyAyICsgMTsKKyAgICB9CisKKyAgICAv
LyBDYWxjdWxhdGUgYnV0dG9uIGNvbG9yLgorICAgIFNrU2NhbGFyIHRyYWNrSFNWWzNdOworICAg
IFNrQ29sb3JUb0hTVih0cmFja0NvbG9yKCksIHRyYWNrSFNWKTsKKyAgICBTa0NvbG9yIGJ1dHRv
bkNvbG9yID0gc2F0dXJhdGVBbmRCcmlnaHRlbih0cmFja0hTViwgMCwgMC4yKTsKKyAgICBTa0Nv
bG9yIGJhY2tncm91bmRDb2xvciA9IGJ1dHRvbkNvbG9yOworICAgIGlmIChzdGF0ZXMgJiBQcmVz
c2VkU3RhdGUpIHsKKyAgICAgICAgU2tTY2FsYXIgYnV0dG9uSFNWWzNdOworICAgICAgICBTa0Nv
bG9yVG9IU1YoYnV0dG9uQ29sb3IsIGJ1dHRvbkhTVik7CisgICAgICAgIGJ1dHRvbkNvbG9yID0g
c2F0dXJhdGVBbmRCcmlnaHRlbihidXR0b25IU1YsIDAsIC0wLjEpOworICAgIH0gZWxzZSBpZiAo
c3RhdGVzICYgSG92ZXJTdGF0ZSkgeworICAgICAgICBTa1NjYWxhciBidXR0b25IU1ZbM107Cisg
ICAgICAgIFNrQ29sb3JUb0hTVihidXR0b25Db2xvciwgYnV0dG9uSFNWKTsKKyAgICAgICAgYnV0
dG9uQ29sb3IgPSBzYXR1cmF0ZUFuZEJyaWdodGVuKGJ1dHRvbkhTViwgMCwgMC4wNSk7CisgICAg
fQorCisgICAgU2tJUmVjdCBza3JlY3Q7CisgICAgc2tyZWN0LnNldChyZWN0LngoKSwgcmVjdC55
KCksIHJlY3QueCgpICsgcmVjdC53aWR0aCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwor
ICAgIC8vIFBhaW50IHRoZSBiYWNrZ3JvdW5kICh0aGUgYXJlYSB2aXNpYmxlIGJlaGluZCB0aGUg
cm91bmRlZCBjb3JuZXJzKS4KKyAgICBwYWludC5zZXRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwor
ICAgIGNhbnZhcy0+ZHJhd0lSZWN0KHNrcmVjdCwgcGFpbnQpOworCisgICAgLy8gUGFpbnQgdGhl
IGJ1dHRvbidzIG91dGxpbmUgYW5kIGZpbGwgdGhlIG1pZGRsZQorICAgIFNrUGF0aCBvdXRsaW5l
OworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBOb3J0aDoKKyAgICAgICAgb3V0
bGluZS5tb3ZlVG8ocmVjdC54KCkgKyAwLjUsIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSArIDAu
NSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygwLCAtKHJlY3QuaGVpZ2h0KCkgLSAyKSk7Cisg
ICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAtMik7CisgICAgICAgIG91dGxpbmUuckxpbmVUbyhy
ZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOworICAg
ICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWlnaHQoKSAtIDIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFNvdXRoOgorICAgICAgICBvdXRsaW5lLm1vdmVUbyhyZWN0LngoKSArIDAu
NSwgcmVjdC55KCkgLSAwLjUpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMCwgcmVjdC5oZWln
aHQoKSAtIDIpOworICAgICAgICBvdXRsaW5lLnJMaW5lVG8oMiwgMik7CisgICAgICAgIG91dGxp
bmUuckxpbmVUbyhyZWN0LndpZHRoKCkgLSA1LCAwKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KDIsIC0yKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIC0ocmVjdC5oZWlnaHQoKSAtIDIp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFYXN0OgorICAgICAgICBvdXRsaW5lLm1vdmVU
byhyZWN0LngoKSAtIDAuNSwgcmVjdC55KCkgKyAwLjUpOworICAgICAgICBvdXRsaW5lLnJMaW5l
VG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygyLCAyKTsK
KyAgICAgICAgb3V0bGluZS5yTGluZVRvKDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKKyAgICAgICAg
b3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0ocmVjdC53
aWR0aCgpIC0gMiksIDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlc3Q6CisgICAgICAg
IG91dGxpbmUubW92ZVRvKHJlY3QueCgpICsgcmVjdC53aWR0aCgpICsgMC41LCByZWN0LnkoKSAr
IDAuNSk7CisgICAgICAgIG91dGxpbmUuckxpbmVUbygtKHJlY3Qud2lkdGgoKSAtIDIpLCAwKTsK
KyAgICAgICAgb3V0bGluZS5yTGluZVRvKC0yLCAyKTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRv
KDAsIHJlY3QuaGVpZ2h0KCkgLSA1KTsKKyAgICAgICAgb3V0bGluZS5yTGluZVRvKDIsIDIpOwor
ICAgICAgICBvdXRsaW5lLnJMaW5lVG8ocmVjdC53aWR0aCgpIC0gMiwgMCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBvdXRsaW5lLmNsb3NlKCk7CisKKyAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGFpbnQuc2V0Q29sb3IoYnV0dG9uQ29sb3IpOwor
ICAgIGNhbnZhcy0+ZHJhd1BhdGgob3V0bGluZSwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0QW50
aUFsaWFzKHRydWUpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUp
OworICAgIFNrU2NhbGFyIHRodW1iSFNWWzNdOworICAgIFNrQ29sb3JUb0hTVih0aHVtYkluYWN0
aXZlQ29sb3IoKSwgdGh1bWJIU1YpOworICAgIHBhaW50LnNldENvbG9yKG91dGxpbmVDb2xvcih0
cmFja0hTViwgdGh1bWJIU1YpKTsKKyAgICBjYW52YXMtPmRyYXdQYXRoKG91dGxpbmUsIHBhaW50
KTsKKworICAgIC8vIElmIHRoZSBidXR0b24gaXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5LCB0aGUg
YXJyb3cgaXMgZHJhd24gd2l0aCB0aGUgb3V0bGluZSBjb2xvci4KKyAgICBpZiAoc3RhdGVzICYg
RW5hYmxlZFN0YXRlICYmICEoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkpCisgICAgICAgIHBhaW50
LnNldENvbG9yKFNLX0NvbG9yQkxBQ0spOworCisgICAgcGFpbnQuc2V0QW50aUFsaWFzKGZhbHNl
KTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisKKyAgICBTa1Bh
dGggcGF0aDsKKyAgICAvLyBUaGUgY29uc3RhbnRzIGluIHRoaXMgYmxvY2sgb2YgY29kZSBhcmUg
aGFuZC10YWlsb3JlZCB0byBwcm9kdWNlIGdvb2QKKyAgICAvLyBsb29raW5nIGFycm93cyB3aXRo
b3V0IGFudGktYWxpYXNpbmcuCisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIE5v
cnRoOgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIHdpZHRoTWlkZGxlIC0gNCwgcmVj
dC55KCkgKyBsZW5ndGhNaWRkbGUgKyAyKTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDcsIDApOwor
ICAgICAgICBwYXRoLnJMaW5lVG8oLTQsIC00KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
b3V0aDoKKyAgICAgICAgcGF0aC5tb3ZlVG8ocmVjdC54KCkgKyB3aWR0aE1pZGRsZSAtIDQsIHJl
Y3QueSgpICsgbGVuZ3RoTWlkZGxlIC0gMyk7CisgICAgICAgIHBhdGguckxpbmVUbyg3LCAwKTsK
KyAgICAgICAgcGF0aC5yTGluZVRvKC00LCA0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
YXN0OgorICAgICAgICBwYXRoLm1vdmVUbyhyZWN0LngoKSArIGxlbmd0aE1pZGRsZSAtIDMsIHJl
Y3QueSgpICsgd2lkdGhNaWRkbGUgLSA0KTsKKyAgICAgICAgcGF0aC5yTGluZVRvKDAsIDcpOwor
ICAgICAgICBwYXRoLnJMaW5lVG8oNCwgLTQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdl
c3Q6CisgICAgICAgIHBhdGgubW92ZVRvKHJlY3QueCgpICsgbGVuZ3RoTWlkZGxlICsgMSwgcmVj
dC55KCkgKyB3aWR0aE1pZGRsZSAtIDUpOworICAgICAgICBwYXRoLnJMaW5lVG8oMCwgOSk7Cisg
ICAgICAgIHBhdGguckxpbmVUbygtNCwgLTQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cGF0aC5jbG9zZSgpOworCisgICAgY2FudmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXguaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjUzYWViNjQyOWU1MjkyMWRmYzFiNGYwYjVmYmZjMzVkZDY2MWEzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVD
aHJvbWl1bUxpbnV4LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1UaGVtZUNocm9t
aXVtTGludXhfaAorI2RlZmluZSBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCisKKyNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisjaW5jbHVkZSAiU2tDb2xvci5oIgorI2luY2x1
ZGUgIlNrU2NhbGFyLmgiCisjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUxpbnV4IHsKK3B1YmxpYzoKKyAg
ICBlbnVtIEFycm93RGlyZWN0aW9uIHsKKyAgICAgICAgTm9ydGgsCisgICAgICAgIEVhc3QsCisg
ICAgICAgIFNvdXRoLAorICAgICAgICBXZXN0LAorICAgIH07CisKKyAgICBzdGF0aWMgdm9pZCBz
ZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlQ29sb3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpOworICAgIHN0YXRpYyB1
bnNpZ25lZCB0aHVtYkluYWN0aXZlQ29sb3IoKSB7IHJldHVybiBzX3RodW1iSW5hY3RpdmVDb2xv
cjsgfQorICAgIHN0YXRpYyB1bnNpZ25lZCB0aHVtYkFjdGl2ZUNvbG9yKCkgeyByZXR1cm4gc190
aHVtYkFjdGl2ZUNvbG9yOyB9CisgICAgc3RhdGljIHVuc2lnbmVkIHRyYWNrQ29sb3IoKSB7IHJl
dHVybiBzX3RyYWNrQ29sb3I7IH0KKworICAgIHN0YXRpYyBTa0NvbG9yIHNhdHVyYXRlQW5kQnJp
Z2h0ZW4oY29uc3QgU2tTY2FsYXIgaHN2WzNdLCBTa1NjYWxhciBzYXR1cmF0ZUFtb3VudCwgU2tT
Y2FsYXIgYnJpZ2h0ZW5BbW91bnQpOworICAgIHN0YXRpYyBTa0NvbG9yIG91dGxpbmVDb2xvcihj
b25zdCBTa1NjYWxhciBoc3YxWzNdLCBjb25zdCBTa1NjYWxhciBoc3YyWzNdKTsKKyAgICBzdGF0
aWMgdm9pZCBwYWludEFycm93QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
LCBBcnJvd0RpcmVjdGlvbiwgQ29udHJvbFN0YXRlcyk7CisKK3ByaXZhdGU6CisgICAgUGxhdGZv
cm1UaGVtZUNocm9taXVtTGludXgoKSB7IH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RodW1i
SW5hY3RpdmVDb2xvcjsKKyAgICBzdGF0aWMgdW5zaWduZWQgc190aHVtYkFjdGl2ZUNvbG9yOwor
ICAgIHN0YXRpYyB1bnNpZ25lZCBzX3RyYWNrQ29sb3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBQbGF0Zm9ybVRoZW1lQ2hyb21pdW1MaW51eF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDE0MDQ0ZDhjODNkNDM1YTAxOWY2ZjdjNGM4MzZhMTcyNjlm
Yzc1NGUuLjk0ZGQwMDJhZWIxOWQ1MzlmZTc2OWM4ZDk3YTA1M2VhMDQ1YjE5YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKyAgMjAxMS0xMC0wMiAgRmFkeSBT
YW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KKworICAgICAgICAgIFtDaHJvbWl1bV0gTW92
ZWQgZmlsZXMgdG93YXJkcyBHVEsgcmVtb3ZhbAorICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTIyOQorCisgICAgICAgICAgUmV2aWV3ZWQgYnkgVG9u
eSBDaGFuZy4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNjcm9sbGJhckNvbG9y
cyk6CisgICAgICAgICogc3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJGb250SW5mby5jcHAuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZSk6CisKIDIwMTEtMTAtMDQgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBXZWIg
SW5zcGVjdG9yOiBzYXZlIGluc3BlY3RvciBzdGF0ZSBpbnRvIHNpbmdsZSBzdHJpbmcgaW5zdGVh
ZCBvZiBzdHJpbmcgbWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNjYzMGIzNTEx
N2IwZDAzNjZkMzBkYzkyMGIyZmRjODZkMDJjYzU2MC4uNTI0NDAzMzg4YjE0NGRkZWI1MmM5NmJk
OGFhYjgxNmEwMmNmOTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMzcxLDcg
KzM3MSw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9HZW9sb2NhdGlvbkNsaWVudFByb3h5Lmgn
LAogICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RDaHJvbWl1bS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgnLAotICAgICAg
ICAgICAgICAgICdzcmMvZ3RrL1dlYkZvbnRJbmZvLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDYWxsYmFja3NQ
cm94eS5oJywKQEAgLTM5NSw2ICszOTQsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvSW5zcGVj
dG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvbGludXgvV2ViRm9udEluZm8uY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA4YTI2MmI4ODhkYzg2ZmNkYjhmNGM2
ODQ3NzY4ZjMwNzE4NjNkZjZjLi5kYWU0MTY4NDdlM2RiNGRiODQwNGY5MTk2MGQ1NTUyNWYxMTRl
NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC04NSw3
ICs4NSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtVGhlbWVDaHJvbWl1bUd0ay5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
VGhlbWVDaHJvbWl1bUxpbnV4LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUG9wdXBDb250YWluZXIuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIK
QEAgLTIzMDgsOSArMjMwOCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFNjcm9sbGJhckNvbG9y
cyh1bnNpZ25lZCBpbmFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGFjdGl2ZUNvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHRyYWNrQ29sb3IpIHsKICNpZiBPUyhVTklYKSAmJiAhT1MoREFS
V0lOKQotICAgIFBsYXRmb3JtVGhlbWVDaHJvbWl1bUd0azo6c2V0U2Nyb2xsYmFyQ29sb3JzKGlu
YWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aXZlQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJhY2tDb2xvcik7CisgICAgUGxhdGZvcm1UaGVtZUNocm9taXVtTGludXg6
OnNldFNjcm9sbGJhckNvbG9ycyhpbmFjdGl2ZUNvbG9yLCBhY3RpdmVDb2xvciwgdHJhY2tDb2xv
cik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Z3RrL1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJG
b250SW5mby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YWQxN2JhNjU4ZTRk
YTFhZmRkMjA2OTZjYWU2NDIxNWNhZmZmYzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dlYkZvbnRJ
bmZvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCi0jaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxl
LmgiCi0KLSNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRjb25maWcuaD4KLSNpbmNsdWRlIDxzdHJp
bmcuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3V0ZjE2Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1XZWJDU3RyaW5nIFdlYkZvbnRJbmZvOjpmYW1pbHlGb3JDaGFycyhjb25zdCBXZWJVQ2hhciog
Y2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqIHByZWZlcnJlZExv
Y2FsZSkKLXsKLSAgICBGY0NoYXJTZXQqIGNzZXQgPSBGY0NoYXJTZXRDcmVhdGUoKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnM7ICsraSkgewotICAgICAgICBpZiAo
VTE2X0lTX1NVUlJPR0FURShjaGFyYWN0ZXJzW2ldKQotICAgICAgICAgJiYgVTE2X0lTX1NVUlJP
R0FURV9MRUFEKGNoYXJhY3RlcnNbaV0pCi0gICAgICAgICAmJiBpICE9IG51bUNoYXJhY3RlcnMg
LSAxCi0gICAgICAgICAmJiBVMTZfSVNfVFJBSUwoY2hhcmFjdGVyc1tpICsgMV0pKSB7Ci0gICAg
ICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIoY3NldCwgVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGNo
YXJhY3RlcnNbaV0sIGNoYXJhY3RlcnNbaSsxXSkpOwotICAgICAgICAgIGkrKzsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgIEZjQ2hhclNldEFkZENoYXIoY3NldCwgY2hhcmFjdGVyc1tp
XSk7Ci0gICAgfQotICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSgpOwot
Ci0gICAgRmNWYWx1ZSBmY3ZhbHVlOwotICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUNoYXJTZXQ7
Ci0gICAgZmN2YWx1ZS51LmMgPSBjc2V0OwotICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19D
SEFSU0VULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUJv
b2w7Ci0gICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7Ci0gICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4s
IEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIGlmIChwcmVmZXJyZWRMb2Nh
bGUpIHsKLSAgICAgICAgRmNMYW5nU2V0KiBsYW5nc2V0ID0gRmNMYW5nU2V0Q3JlYXRlKCk7Ci0g
ICAgICAgIEZjTGFuZ1NldEFkZChsYW5nc2V0LCByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hh
cjggKj4ocHJlZmVycmVkTG9jYWxlKSk7Ci0gICAgICAgIEZjUGF0dGVybkFkZExhbmdTZXQocGF0
dGVybiwgRkNfTEFORywgbGFuZ3NldCk7Ci0gICAgICAgIEZjTGFuZ1NldERlc3Ryb3kobGFuZ3Nl
dCk7Ci0gICAgfQotCi0gICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRlcm4sIEZjTWF0Y2hQ
YXR0ZXJuKTsKLSAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRlcm4pOwotCi0gICAgRmNSZXN1
bHQgcmVzdWx0OwotICAgIEZjRm9udFNldCogZm9udFNldCA9IEZjRm9udFNvcnQoMCwgcGF0dGVy
biwgMCwgMCwgJnJlc3VsdCk7Ci0gICAgRmNQYXR0ZXJuRGVzdHJveShwYXR0ZXJuKTsKLSAgICBG
Y0NoYXJTZXREZXN0cm95KGNzZXQpOwotCi0gICAgaWYgKCFmb250U2V0KQotICAgICAgICByZXR1
cm4gV2ViQ1N0cmluZygpOwotCi0gICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBo
YXZlIGEgYnVnIHdoZXJlIHRoZXkgY2Fubm90IHNlbGVjdAotICAgIC8vIG9ubHkgc2NhbGFibGUg
Zm9udHMgc28gd2UgaGF2ZSB0byBtYW51YWxseSBmaWx0ZXIgdGhlIHJlc3VsdHMuCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBmb250U2V0LT5uZm9udDsgKytpKSB7Ci0gICAgICAgIEZjUGF0dGVy
biogY3VycmVudCA9IGZvbnRTZXQtPmZvbnRzW2ldOwotICAgICAgICBGY0Jvb2wgaXNTY2FsYWJs
ZTsKLQotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0Qm9vbChjdXJyZW50LCBGQ19TQ0FMQUJMRSwg
MCwgJmlzU2NhbGFibGUpICE9IEZjUmVzdWx0TWF0Y2gKLSAgICAgICAgICAgIHx8ICFpc1NjYWxh
YmxlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gZm9udGNvbmZpZyBjYW4g
YWxzbyByZXR1cm4gZm9udHMgd2hpY2ggYXJlIHVucmVhZGFibGUKLSAgICAgICAgRmNDaGFyOCog
Y0ZpbGVuYW1lOwotICAgICAgICBpZiAoRmNQYXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZJ
TEUsIDAsICZjRmlsZW5hbWUpICE9IEZjUmVzdWx0TWF0Y2gpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICBpZiAoYWNjZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFt
ZSksIFJfT0spKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgRmNDaGFyOCogZmFt
aWx5OwotICAgICAgICBXZWJDU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKEZjUGF0dGVybkdl
dFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHkpID09IEZjUmVzdWx0TWF0Y2gp
IHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNoYXJGYW1pbHkgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihmYW1pbHkpOwotICAgICAgICAgICAgcmVzdWx0ID0gV2ViQ1N0cmluZyhjaGFyRmFt
aWx5LCBzdHJsZW4oY2hhckZhbWlseSkpOwotICAgICAgICB9Ci0gICAgICAgIEZjRm9udFNldERl
c3Ryb3koZm9udFNldCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRmNG
b250U2V0RGVzdHJveShmb250U2V0KTsKLSAgICByZXR1cm4gV2ViQ1N0cmluZygpOwotfQotCi12
b2lkIFdlYkZvbnRJbmZvOjpyZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHks
IGludCBzaXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogb3V0KQotewotICAgIGJvb2wg
aXNCb2xkID0gc2l6ZUFuZFN0eWxlICYgMTsKLSAgICBib29sIGlzSXRhbGljID0gc2l6ZUFuZFN0
eWxlICYgMjsKLSAgICBpbnQgcGl4ZWxTaXplID0gc2l6ZUFuZFN0eWxlID4+IDI7Ci0KLSAgICBG
Y1BhdHRlcm4qIHBhdHRlcm4gPSBGY1BhdHRlcm5DcmVhdGUoKTsKLSAgICBGY1ZhbHVlIGZjdmFs
dWU7Ci0KLSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVTdHJpbmc7Ci0gICAgZmN2YWx1ZS51LnMg
PSByZWludGVycHJldF9jYXN0PGNvbnN0IEZjQ2hhcjggKj4oZmFtaWx5KTsKLSAgICBGY1BhdHRl
cm5BZGQocGF0dGVybiwgRkNfRkFNSUxZLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIGZjdmFs
dWUudHlwZSA9IEZjVHlwZUludGVnZXI7Ci0gICAgZmN2YWx1ZS51LmkgPSBpc0JvbGQgPyBGQ19X
RUlHSFRfQk9MRCA6IEZDX1dFSUdIVF9OT1JNQUw7Ci0gICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4s
IEZDX1dFSUdIVCwgZmN2YWx1ZSwgRmNGYWxzZSk7Ci0KLSAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5
cGVJbnRlZ2VyOwotICAgIGZjdmFsdWUudS5pID0gaXNJdGFsaWMgPyBGQ19TTEFOVF9JVEFMSUMg
OiBGQ19TTEFOVF9ST01BTjsKLSAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfU0xBTlQsIGZj
dmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlQm9vbDsKLSAgICBm
Y3ZhbHVlLnUuYiA9IEZjVHJ1ZTsKLSAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfU0NBTEFC
TEUsIGZjdmFsdWUsIEZjRmFsc2UpOwotCi0gICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlRG91Ymxl
OwotICAgIGZjdmFsdWUudS5kID0gcGl4ZWxTaXplOwotICAgIEZjUGF0dGVybkFkZChwYXR0ZXJu
LCBGQ19TSVpFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKLQotICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgw
LCBwYXR0ZXJuLCBGY01hdGNoUGF0dGVybik7Ci0gICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0
ZXJuKTsKLQotICAgIEZjUmVzdWx0IHJlc3VsdDsKLSAgICAvLyBTb21lIHZlcnNpb25zIG9mIGZv
bnRjb25maWcgZG9uJ3QgYWN0dWFsbHkgd3JpdGUgYSB2YWx1ZSBpbnRvIHJlc3VsdC4KLSAgICAv
LyBIb3dldmVyLCBpdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGlmIHJlc3Vs
dCBzaG91bGQgYmUgYQotICAgIC8vIG5vbi0wIHBvaW50ZXI6IGZ1dHVyZSB2ZXJzaW9ucyBtaWdo
dCBleHBlY3QgdG8gYmUgYWJsZSB0byB3cml0ZSB0bwotICAgIC8vIGl0LiBTbyB3ZSBwYXNzIGlu
IGEgdmFsaWQgcG9pbnRlciBhbmQgaWdub3JlIGl0LgotICAgIEZjUGF0dGVybiogbWF0Y2ggPSBG
Y0ZvbnRNYXRjaCgwLCBwYXR0ZXJuLCAmcmVzdWx0KTsKLSAgICBGY1BhdHRlcm5EZXN0cm95KHBh
dHRlcm4pOwotCi0gICAgb3V0LT5zZXREZWZhdWx0cygpOwotCi0gICAgaWYgKCFtYXRjaCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgRmNCb29sIGI7Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoRmNQ
YXR0ZXJuR2V0Qm9vbChtYXRjaCwgRkNfQU5USUFMSUFTLCAwLCAmYikgPT0gRmNSZXN1bHRNYXRj
aCkKLSAgICAgICAgb3V0LT51c2VBbnRpQWxpYXMgPSBiOwotICAgIGlmIChGY1BhdHRlcm5HZXRC
b29sKG1hdGNoLCBGQ19FTUJFRERFRF9CSVRNQVAsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQot
ICAgICAgICBvdXQtPnVzZUJpdG1hcHMgPSBiOwotICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKG1h
dGNoLCBGQ19BVVRPSElOVCwgMCwgJmIpID09IEZjUmVzdWx0TWF0Y2gpCi0gICAgICAgIG91dC0+
dXNlQXV0b0hpbnQgPSBiOwotICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19ISU5U
SU5HLCAwLCAmYikgPT0gRmNSZXN1bHRNYXRjaCkKLSAgICAgICAgb3V0LT51c2VIaW50aW5nID0g
YjsKLSAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihtYXRjaCwgRkNfSElOVF9TVFlMRSwgMCwg
JmkpID09IEZjUmVzdWx0TWF0Y2gpCi0gICAgICAgIG91dC0+aGludFN0eWxlID0gaTsKLSAgICBp
ZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihtYXRjaCwgRkNfUkdCQSwgMCwgJmkpID09IEZjUmVzdWx0
TWF0Y2gpIHsKLSAgICAgICAgc3dpdGNoIChpKSB7Ci0gICAgICAgIGNhc2UgRkNfUkdCQV9OT05F
OgotICAgICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDA7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBGQ19SR0JBX1JHQjoKLSAgICAgICAgY2FzZSBGQ19SR0JBX0JHUjoKLSAg
ICAgICAgY2FzZSBGQ19SR0JBX1ZSR0I6Ci0gICAgICAgIGNhc2UgRkNfUkdCQV9WQkdSOgotICAg
ICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8vIFRoaXMgaW5jbHVkZXMgRkNfUkdCQV9VTktOT1dO
LgotICAgICAgICAgICAgb3V0LT51c2VTdWJwaXhlbCA9IDI7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIEZjUGF0dGVybkRlc3Ryb3kobWF0Y2gpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL2xpbnV4L1dlYkZvbnRJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2xp
bnV4L1dlYkZvbnRJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTE4MmQ0N2VhN2Y1YmFkNTYyYTE2YTU5
MWZkMGUwNTc0ZDUxZjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvbGludXgvV2ViRm9udEluZm8uY3BwCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkZvbnRJbmZvLmgiCisKKyNpbmNsdWRlICJXZWJGb250UmVu
ZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgorI2luY2x1
ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaWNvZGUvdXRmMTYuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYkNTdHJpbmcgV2ViRm9udEluZm86OmZhbWlseUZvckNoYXJzKGNvbnN0IFdl
YlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJl
ZmVycmVkTG9jYWxlKQoreworICAgIEZjQ2hhclNldCogY3NldCA9IEZjQ2hhclNldENyZWF0ZSgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyczsgKytpKSB7CisgICAg
ICAgIGlmIChVMTZfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcnNbaV0pCisgICAgICAgICAmJiBVMTZf
SVNfU1VSUk9HQVRFX0xFQUQoY2hhcmFjdGVyc1tpXSkKKyAgICAgICAgICYmIGkgIT0gbnVtQ2hh
cmFjdGVycyAtIDEKKyAgICAgICAgICYmIFUxNl9JU19UUkFJTChjaGFyYWN0ZXJzW2kgKyAxXSkp
IHsKKyAgICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBVMTZfR0VUX1NVUFBMRU1F
TlRBUlkoY2hhcmFjdGVyc1tpXSwgY2hhcmFjdGVyc1tpKzFdKSk7CisgICAgICAgICAgaSsrOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgRmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBjaGFy
YWN0ZXJzW2ldKTsKKyAgICB9CisgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3Jl
YXRlKCk7CisKKyAgICBGY1ZhbHVlIGZjdmFsdWU7CisgICAgZmN2YWx1ZS50eXBlID0gRmNUeXBl
Q2hhclNldDsKKyAgICBmY3ZhbHVlLnUuYyA9IGNzZXQ7CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRl
cm4sIEZDX0NIQVJTRVQsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgZmN2YWx1ZS50eXBlID0g
RmNUeXBlQm9vbDsKKyAgICBmY3ZhbHVlLnUuYiA9IEZjVHJ1ZTsKKyAgICBGY1BhdHRlcm5BZGQo
cGF0dGVybiwgRkNfU0NBTEFCTEUsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgaWYgKHByZWZl
cnJlZExvY2FsZSkgeworICAgICAgICBGY0xhbmdTZXQqIGxhbmdzZXQgPSBGY0xhbmdTZXRDcmVh
dGUoKTsKKyAgICAgICAgRmNMYW5nU2V0QWRkKGxhbmdzZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgRmNDaGFyOCAqPihwcmVmZXJyZWRMb2NhbGUpKTsKKyAgICAgICAgRmNQYXR0ZXJuQWRkTGFu
Z1NldChwYXR0ZXJuLCBGQ19MQU5HLCBsYW5nc2V0KTsKKyAgICAgICAgRmNMYW5nU2V0RGVzdHJv
eShsYW5nc2V0KTsKKyAgICB9CisKKyAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0dGVybiwg
RmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7CisKKyAg
ICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgRmNGb250U2V0KiBmb250U2V0ID0gRmNGb250U29ydCgw
LCBwYXR0ZXJuLCAwLCAwLCAmcmVzdWx0KTsKKyAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4p
OworICAgIEZjQ2hhclNldERlc3Ryb3koY3NldCk7CisKKyAgICBpZiAoIWZvbnRTZXQpCisgICAg
ICAgIHJldHVybiBXZWJDU3RyaW5nKCk7CisKKyAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBmb250
Y29uZmlnIGhhdmUgYSBidWcgd2hlcmUgdGhleSBjYW5ub3Qgc2VsZWN0CisgICAgLy8gb25seSBz
Y2FsYWJsZSBmb250cyBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGZpbHRlciB0aGUgcmVzdWx0cy4K
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRTZXQtPm5mb250OyArK2kpIHsKKyAgICAgICAg
RmNQYXR0ZXJuKiBjdXJyZW50ID0gZm9udFNldC0+Zm9udHNbaV07CisgICAgICAgIEZjQm9vbCBp
c1NjYWxhYmxlOworCisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKGN1cnJlbnQsIEZDX1ND
QUxBQkxFLCAwLCAmaXNTY2FsYWJsZSkgIT0gRmNSZXN1bHRNYXRjaAorICAgICAgICAgICAgfHwg
IWlzU2NhbGFibGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBmb250Y29u
ZmlnIGNhbiBhbHNvIHJldHVybiBmb250cyB3aGljaCBhcmUgdW5yZWFkYWJsZQorICAgICAgICBG
Y0NoYXI4KiBjRmlsZW5hbWU7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVu
dCwgRkNfRklMRSwgMCwgJmNGaWxlbmFtZSkgIT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChhY2Nlc3MocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y0ZpbGVuYW1lKSwgUl9PSykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBGY0No
YXI4KiBmYW1pbHk7CisgICAgICAgIFdlYkNTdHJpbmcgcmVzdWx0OworICAgICAgICBpZiAoRmNQ
YXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZBTUlMWSwgMCwgJmZhbWlseSkgPT0gRmNSZXN1
bHRNYXRjaCkgeworICAgICAgICAgICAgY29uc3QgY2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGZhbWlseSk7CisgICAgICAgICAgICByZXN1bHQgPSBXZWJDU3RyaW5n
KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFtaWx5KSk7CisgICAgICAgIH0KKyAgICAgICAgRmNG
b250U2V0RGVzdHJveShmb250U2V0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBGY0ZvbnRTZXREZXN0cm95KGZvbnRTZXQpOworICAgIHJldHVybiBXZWJDU3RyaW5nKCk7
Cit9CisKK3ZvaWQgV2ViRm9udEluZm86OnJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIq
IGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKiBvdXQpCit7Cisg
ICAgYm9vbCBpc0JvbGQgPSBzaXplQW5kU3R5bGUgJiAxOworICAgIGJvb2wgaXNJdGFsaWMgPSBz
aXplQW5kU3R5bGUgJiAyOworICAgIGludCBwaXhlbFNpemUgPSBzaXplQW5kU3R5bGUgPj4gMjsK
KworICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSgpOworICAgIEZjVmFs
dWUgZmN2YWx1ZTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZVN0cmluZzsKKyAgICBmY3Zh
bHVlLnUucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCAqPihmYW1pbHkpOworICAg
IEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19GQU1JTFksIGZjdmFsdWUsIEZjRmFsc2UpOworCisg
ICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlSW50ZWdlcjsKKyAgICBmY3ZhbHVlLnUuaSA9IGlzQm9s
ZCA/IEZDX1dFSUdIVF9CT0xEIDogRkNfV0VJR0hUX05PUk1BTDsKKyAgICBGY1BhdHRlcm5BZGQo
cGF0dGVybiwgRkNfV0VJR0hULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFsdWUudHlw
ZSA9IEZjVHlwZUludGVnZXI7CisgICAgZmN2YWx1ZS51LmkgPSBpc0l0YWxpYyA/IEZDX1NMQU5U
X0lUQUxJQyA6IEZDX1NMQU5UX1JPTUFOOworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19T
TEFOVCwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVCb29s
OworICAgIGZjdmFsdWUudS5iID0gRmNUcnVlOworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBG
Q19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5
cGVEb3VibGU7CisgICAgZmN2YWx1ZS51LmQgPSBwaXhlbFNpemU7CisgICAgRmNQYXR0ZXJuQWRk
KHBhdHRlcm4sIEZDX1NJWkUsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgRmNDb25maWdTdWJz
dGl0dXRlKDAsIHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsKKyAgICBGY0RlZmF1bHRTdWJzdGl0
dXRlKHBhdHRlcm4pOworCisgICAgRmNSZXN1bHQgcmVzdWx0OworICAgIC8vIFNvbWUgdmVyc2lv
bnMgb2YgZm9udGNvbmZpZyBkb24ndCBhY3R1YWxseSB3cml0ZSBhIHZhbHVlIGludG8gcmVzdWx0
LgorICAgIC8vIEhvd2V2ZXIsIGl0J3Mgbm90IGNsZWFyIGZyb20gdGhlIGRvY3VtZW50YXRpb24g
aWYgcmVzdWx0IHNob3VsZCBiZSBhCisgICAgLy8gbm9uLTAgcG9pbnRlcjogZnV0dXJlIHZlcnNp
b25zIG1pZ2h0IGV4cGVjdCB0byBiZSBhYmxlIHRvIHdyaXRlIHRvCisgICAgLy8gaXQuIFNvIHdl
IHBhc3MgaW4gYSB2YWxpZCBwb2ludGVyIGFuZCBpZ25vcmUgaXQuCisgICAgRmNQYXR0ZXJuKiBt
YXRjaCA9IEZjRm9udE1hdGNoKDAsIHBhdHRlcm4sICZyZXN1bHQpOworICAgIEZjUGF0dGVybkRl
c3Ryb3kocGF0dGVybik7CisKKyAgICBvdXQtPnNldERlZmF1bHRzKCk7CisKKyAgICBpZiAoIW1h
dGNoKQorICAgICAgICByZXR1cm47CisKKyAgICBGY0Jvb2wgYjsKKyAgICBpbnQgaTsKKworICAg
IGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19BTlRJQUxJQVMsIDAsICZiKSA9PSBGY1Jl
c3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUFudGlBbGlhcyA9IGI7CisgICAgaWYgKEZjUGF0
dGVybkdldEJvb2wobWF0Y2gsIEZDX0VNQkVEREVEX0JJVE1BUCwgMCwgJmIpID09IEZjUmVzdWx0
TWF0Y2gpCisgICAgICAgIG91dC0+dXNlQml0bWFwcyA9IGI7CisgICAgaWYgKEZjUGF0dGVybkdl
dEJvb2wobWF0Y2gsIEZDX0FVVE9ISU5ULCAwLCAmYikgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAg
ICAgb3V0LT51c2VBdXRvSGludCA9IGI7CisgICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gs
IEZDX0hJTlRJTkcsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUhp
bnRpbmcgPSBiOworICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKG1hdGNoLCBGQ19ISU5UX1NU
WUxFLCAwLCAmaSkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgb3V0LT5oaW50U3R5bGUgPSBp
OworICAgIGlmIChGY1BhdHRlcm5HZXRJbnRlZ2VyKG1hdGNoLCBGQ19SR0JBLCAwLCAmaSkgPT0g
RmNSZXN1bHRNYXRjaCkgeworICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgY2FzZSBGQ19S
R0JBX05PTkU6CisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEZDX1JHQkFfUkdCOgorICAgICAgICBjYXNlIEZDX1JHQkFf
QkdSOgorICAgICAgICBjYXNlIEZDX1JHQkFfVlJHQjoKKyAgICAgICAgY2FzZSBGQ19SR0JBX1ZC
R1I6CisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gVGhpcyBpbmNsdWRlcyBGQ19SR0JB
X1VOS05PV04uCisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVsID0gMjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgRmNQYXR0ZXJuRGVzdHJveShtYXRjaCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="commit-queue"
          id="106964"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>