<?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>100627</bug_id>
          
          <creation_ts>2012-10-28 21:48:55 -0700</creation_ts>
          <short_desc>Rename Localizer.{cpp,h} to PlatformLocale.{cpp,h}</short_desc>
          <delta_ts>2012-10-29 00:02:57 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100329</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753058</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-28 21:48:55 -0700</bug_when>
    <thetext>without class name change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753062</commentid>
    <comment_count>1</comment_count>
      <attachid>171157</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-28 22:20:12 -0700</bug_when>
    <thetext>Created attachment 171157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753063</commentid>
    <comment_count>2</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-28 22:21:36 -0700</bug_when>
    <thetext>Note that this name was proposed by ap in https://bugs.webkit.org/show_bug.cgi?id=100329#c3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753064</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-28 22:25:08 -0700</bug_when>
    <thetext>Attachment 171157 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/text/PlatformLocale.h:26:  #ifndef header guard has wrong style, please use: PlatformLocale_h  [build/header_guard] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753065</commentid>
    <comment_count>4</comment_count>
      <attachid>171157</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-28 22:25:53 -0700</bug_when>
    <thetext>Comment on attachment 171157
Patch

Attachment 171157 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14613961</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753066</commentid>
    <comment_count>5</comment_count>
      <attachid>171157</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-28 22:26:51 -0700</bug_when>
    <thetext>Comment on attachment 171157
Patch

Attachment 171157 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14626030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753067</commentid>
    <comment_count>6</comment_count>
      <attachid>171158</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-28 22:30:08 -0700</bug_when>
    <thetext>Created attachment 171158
Patch 2

Build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753068</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-28 22:32:57 -0700</bug_when>
    <thetext>Attachment 171158 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/text/PlatformLocale.h:26:  #ifndef header guard has wrong style, please use: PlatformLocale_h  [build/header_guard] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753069</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-28 22:34:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Source/WebCore/platform/text/PlatformLocale.h:26:  #ifndef header guard has wrong style, please use: PlatformLocale_h  [build/header_guard] [5]

This is expected. I&apos;ll fix it in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753091</commentid>
    <comment_count>9</comment_count>
      <attachid>171158</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-28 23:58:18 -0700</bug_when>
    <thetext>Comment on attachment 171158
Patch 2

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753092</commentid>
    <comment_count>10</comment_count>
      <attachid>171158</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-10-28 23:59:27 -0700</bug_when>
    <thetext>Comment on attachment 171158
Patch 2

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        PlatformLocal.cpp and PlatformLocale.h as their file names because

PlatformLocal*e*.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753093</commentid>
    <comment_count>11</comment_count>
      <attachid>171158</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-10-29 00:00:30 -0700</bug_when>
    <thetext>Comment on attachment 171158
Patch 2

Oops, I&apos;ve overridden haraken&apos;s r+. The patch looks OK to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753095</commentid>
    <comment_count>12</comment_count>
      <attachid>171158</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 00:01:45 -0700</bug_when>
    <thetext>Comment on attachment 171158
Patch 2

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        PlatformLocal.cpp and PlatformLocale.h as their file names because
&gt; 
&gt; PlatformLocal*e*.cpp

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753097</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-29 00:02:57 -0700</bug_when>
    <thetext>Committed r132762: &lt;http://trac.webkit.org/changeset/132762&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171157</attachid>
            <date>2012-10-28 22:20:12 -0700</date>
            <delta_ts>2012-10-28 22:30:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100627-20121029141839.patch</filename>
            <type>text/plain</type>
            <size>62037</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0NTRiOGMxYzQ3NmFm
NTFlNWQ4NDFiN2NhYjZjZDkzZWU5ZTNhZC4uMDA5MDg3NmIxM2E0ZjU5N2RmOWQ1MTg5ZTFmZTJl
OTc1OTU3MmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTI4ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxpemVy
LntjcHAsaH0gdG8gUGxhdGZvcm1Mb2NhbGUue2NwcCxofQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UnZCBsaWtlIHRvIHJlbmFtZSBMb2NhbGl6ZXIg
Y2xhc3MgdG8gTG9jYWxlIGNsYXNzLiBIb3dldmVyIHdlIHVzZQorICAgICAgICBQbGF0Zm9ybUxv
Y2FsLmNwcCBhbmQgUGxhdGZvcm1Mb2NhbGUuaCBhcyB0aGVpciBmaWxlIG5hbWVzIGJlY2F1c2UK
KyAgICAgICAgPGxvY2FsZS5oPiBleGlzdHMgaW4gdGhlIEMgc3RhbmRhcmQuICBJbiB0aGlzIHBh
dGNoLCB3ZSByZW5hbWUgb25seSBmaWxlCisgICAgICAgIG5hbWVzLiBXZSdyZSBnb2luZyB0byBy
ZW5hbWUgdGhlIGNsYXNzIG5hbWUgbGF0ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IGRvZXNuJ3QgbWFrZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9QbGF0Zm9ybUxvY2FsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9j
YWxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxp
emVyLmNwcC4KKyAgICAgICAgRm9sbG93IHRoZSBMb2NhbGl6ZXIuaCAtPiBQbGF0Zm9ybUxvY2Fs
ZS5jcHAgcmVuYW1pbmcuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBGb2xsb3cg
dGhlIGZpbGUgbmFtZSByZW5hbWluZy4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0Jhc2VNdWx0aXBsZUZp
ZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlVGltZUlucHV0VHlwZS5j
cHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHA6IERp
dHRvLgorICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBodG1sL051bWJlcklucHV0VHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvVGltZUlu
cHV0VHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVs
ZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL1BhZ2VQb3B1cENvbnRyb2xs
ZXIuY3BwOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5oOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwOiBEaXR0by4KKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVdpbi5oOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMuaDogRGl0dG8uCisKIDIwMTItMTAtMjggIFNoaW55YSBLYXdh
bmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoZSBzaGFkb3cgZWxlbWVu
dCBpcyBub3QgcmVwcm9qZWN0ZWQgdG8gYSBuZXN0ZWQgU2hhZG93Um9vdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggYTAzM2JlNTMyNmNlMmI4MTVhZGI3M2JiZjUzNzk1Yzc3YjM3NzMy
NS4uNGRhMTA4NjIzMGFkOGFjYTQ4OWY1MjNhNjU0NjM5ODUxZGQ1MjRhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0yOCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIExvY2FsaXplci57Y3BwLGh9
IHRvIFBsYXRmb3JtTG9jYWxlLntjcHAsaH0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDYyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oOiBGb2xs
b3cgdGhlIGZpbGUgbmFtZSByZW5hbWluZy4KKyAgICAgICAgKiBzcmMvRGF0ZVRpbWVDaG9vc2Vy
SW1wbC5jcHA6IERpdHRvLgorCiAyMDEyLTEwLTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBGaW5kLWluLXBhZ2UgcmVwb3J0cyBtYXRjaGVz
IGluIGhpZGRlbiBpZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzOWUz
N2I2ZGVjN2MxM2JkZjU3NmQ5OTE5MWE5N2NlY2QwNGE4YTcwLi4xYTA1YTA5YzM4Nzg5MWJjN2I1
ZWVhOGNhYWMxN2Q1Mzc0MmY4NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQ4NTAsOSArNDg1MCw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsaXplci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BhcnNlclV0
aWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxl
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24uY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBiOTIwNDEzMjAzMjJlODM5ZDQyMThlZDVjZGE2MzBjY2U4MjljYTYyLi4xOTM5MGI2
ZTM2NzIyNTg3MjIzYjg2MjA4MDdhYmUxY2VlN2U4ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01
NzI1LDkgKzU3MjUsOSBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3Jp
cHRNYXBwaW5nSUNVLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4u
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVdpbi5oJywKLSAgICAgICAg
ICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L3RleHQvTG9jYWxpemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGFyc2VyVXRp
bGl0aWVzLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL3RleHQvUXVvdGVkUHJpbnRhYmxlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
dGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2Y2VkZWMyNTU1NmZiNTE1OWIyNGE5
MDc4ZWQzODBmYTdhYzM1ZmYuLjUzOGQzZjg0NGU0YmViNmM0OWNkOWNlYzc5ZGU0NzVjMjIwODVm
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTYyNjYsOCArNjI2Niw4IEBACiAJCUY1MTIyQzkwMTU0N0ZBMUIwMDI4QTkzQiAv
KiBQYWdlUG9wdXBEcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY1MTIyQzhGMTU0N0ZBMUIwMDI4QTkzQiAvKiBQYWdlUG9wdXBEcml2ZXIuaCAq
LzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTEz
QTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAqLzsgfTsK
IAkJRjUyQUQ1RTQxNTM0MjQ1RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTJBRDVFMzE1MzQyNDVGMDA1
OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCAqLzsgfTsKLQkJRjU0NEY3ODgxNUNGQjJBODAwQUYz
M0E4IC8qIExvY2FsaXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCAqLzsg
fTsKLQkJRjU0NEY3ODkxNUNGQjJBODAwQUYzM0E4IC8qIExvY2FsaXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0NEY3ODcxNUNGQjJBODAwQUYz
M0E4IC8qIExvY2FsaXplci5oICovOyB9OworCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyog
UGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU0NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmNwcCAq
LzsgfTsKKwkJRjU0NEY3ODkxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NzE1Q0ZC
MkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCAqLzsgfTsKIAkJRjU1QjNEQUQxMjUxRjEy
RDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NUIzRDc5MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNl
VGV4dElucHV0VHlwZS5jcHAgKi87IH07CiAJCUY1NUIzREFFMTI1MUYxMkQwMDNFRjI2OSAvKiBC
YXNlVGV4dElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmgg
Ki87IH07CiAJCUY1NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEN0Ix
MjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgKi87IH07CkBAIC0xMzcwMyw4
ICsxMzcwMyw4IEBACiAJCUY1MjNEMzAzMDJERTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5n
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQlGNTIzRDMwNDAyREU0NDc2MDE4NjM1Q0EgLyogUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MkFENUUz
MTUzNDI0NUYwMDU5RkJFNiAvKiBFbXB0eUNsaWVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRW1wdHlDbGllbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRjU0NEY3ODYxNUNGQjJBODAwQUYzM0E4IC8qIExvY2FsaXplci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2NhbGl6ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGNTQ0Rjc4NzE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZv
cm1Mb2NhbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZv
cm1Mb2NhbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNTQ0Rjc4NzE1Q0ZC
MkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGxhdGZvcm1Mb2NhbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjU1QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VUZXh0SW5wdXRUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJh
c2VUZXh0SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VU
ZXh0SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1NUIzRDdCMTI1
MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnV0dG9uSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwMDk1LDkgKzIwMDk1LDkgQEAKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBG
MjM2N0UgLyogTGluZUVuZGluZy5oICovLAogCQkJCTc2MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAv
KiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLywKIAkJCQk3NjMzQTcyNTEzRDhCMzNBMDA4NTAx
QjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi8sCi0JCQkJRjU0NEY3ODYx
NUNGQjJBODAwQUYzM0E4IC8qIExvY2FsaXplci5jcHAgKi8sCi0JCQkJRjU0NEY3ODcxNUNGQjJB
ODAwQUYzM0E4IC8qIExvY2FsaXplci5oICovLAogCQkJCUJDNzZBQzExMEREN0FENUMwMDQxNUYz
NCAvKiBQYXJzZXJVdGlsaXRpZXMuaCAqLywKKwkJCQlGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTgg
LyogUGxhdGZvcm1Mb2NhbGUuY3BwICovLAorCQkJCUY1NDRGNzg3MTVDRkIyQTgwMEFGMzNBOCAv
KiBQbGF0Zm9ybUxvY2FsZS5oICovLAogCQkJCTM3OUUzNzE0MTM3MzZBNjYwMEI5RTkxOSAvKiBR
dW90ZWRQcmludGFibGUuY3BwICovLAogCQkJCTM3OUUzNzE1MTM3MzZBNjYwMEI5RTkxOSAvKiBR
dW90ZWRQcmludGFibGUuaCAqLywKIAkJCQlCMkMzRDlGQzBEMDA2QzFEMDBFRjZGMjYgLyogUmVn
dWxhckV4cHJlc3Npb24uY3BwICovLApAQCAtMjQ1MDYsNyArMjQ1MDYsNiBAQAogCQkJCTc2MzNB
NzI2MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg5ODc4NTY4MTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZpbGVTeXN0ZW0uaCBp
biBIZWFkZXJzICovLAogCQkJCTkzNTIwN0JFMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRT
dHJpbmdzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyog
TG9jYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0UxQzQxQjBEOTgyOTgwMDAzQjAyRjIg
LyogTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MjM5RTAxMDlCM0NGOEEwMEI2MDY0
MSAvKiBMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTZEMzc0MTBBREJBNURFMDBBNDU1
NEQgLyogTWFpblJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0Njk3LDYgKzI0
Njk2LDcgQEAKIAkJCQk0OTE4MkI1MzE1RENFNkYwMDA1NDg0MTggLyogUGxhdGZvcm1JbnN0cnVt
ZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY4MDlBQzRENDMwMEE2QUFCNCAv
KiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTYxMTU3
M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNTQ0
Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTRGN0I0QTY2MTVGRjZENkEwMDZCNUYyMiAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMyODcxQzAwQjIwREVCNzAwNDkwMzVBIC8qIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUJGNzAxMDBGRTg2
RjYxMDA1RThERUMgLyogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCBpbiBIZWFkZXJzICov
LApAQCAtMjc4MzUsNyArMjc4MzUsNiBAQAogCQkJCTg5ODc4NTY3MTIyQ0EwNjQwMDNBQUJEQSAv
KiBMb2NhbEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA0NkUxQUMxMjA4QTlG
RTAwQkEyQ0Y3IC8qIExvY2FsaXplZFN0cmluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMy
NUI1MkExMzFDNkQzOTAwMTgwRTEwIC8qIExvY2FsaXplZFN0cmluZ3NNYWMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRjU0NEY3ODgxNUNGQjJBODAwQUYzM0E4IC8qIExvY2FsaXplci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0UxQzQxQzBEOTgyOTgxMDAzQjAyRjIgLyogTG9jYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTgyMzlFMDAwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dp
bmdNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTI3OTkzLDYgKzI3OTkyLDcgQEAKIAkJCQlCQzVD
NzYyQTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0FBNDg2RjE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk0OTE4MkI1MjE1RENFNkYwMDA1NDg0MTggLyogUGxhdGZv
cm1JbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjU0NEY3ODgxNUNGQjJB
ODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGMUQx
MUJGMTVGRjM3MjAwMDI2RTkwOCAvKiBQbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MUJGNzAwRjBGRTg2RjYxMDA1RThERUMgLyogUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU5ODkwMkUxNEU5QjBG
ODAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmYwMTFhNGRmNmM4Y2MwY2Y5OTdhM2FkYmQyNDA2Mjk5
ZmUzMTY2OS4uMzVkZmMyYmRmNWY1YmIwZTgzNGJlZjY0YTM1N2IwNmVlNjBkYTNjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDcsNyArMTA3LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JDb3VudGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk1l
ZGlhUXVlcnlMaXN0LmgiCkBAIC0xMjUsNiArMTI0LDcgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlICJQ
bHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA0NGMzYTgzZDdjOGQ5OTdiNTQ4NTQyMTg4NzI4
YTI3ZWZlNzc0MDdlLi4wOWU0Njk0YTcyNmIwODA5MzdkMzRlZDdlYjZkZThhNjk4NzVlY2MzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJM
b2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGgu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZU11bHRpcGxlRmllbGRzRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVG
aWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggZGE0ODM0YTI1ZjhhOGYyNWZiMTI4
MWEyOWI0MGNmM2VkYWU1OTRhYy4uNzFlZGQ1OWY2NmUzNDhjYmE2YTcxMTc3Zjk4YmMwNjJhYzVl
NzRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVsZHNE
YXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVs
dGlwbGVGaWVsZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTQxLDkgKzQxLDkgQEAKICNp
bmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQu
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBpY2tlckluZGljYXRvckVsZW1lbnQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5kZXggMWZmNTkzMjlhZDQ0MTZhY2VjMDJhMGYzOWM1
ZDQzYTcxYTFmZWU4Zi4uODNjZDY0Y2U1YjUzM2JkOTY2Yzg3NWIyYjE5YjczYzNjNWQ1MTE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCkBAIC0zOSw4ICszOSw4IEBACiAj
aW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5oIgogI2lu
Y2x1ZGUgIlBpY2tlckluZGljYXRvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2Fs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzRjMDQ3M2Jh
ZTNlMzdiNzhmOTVhNDc3YWE4MGFkZGYyMTdiNWMyNy4uZTk0YjlmMmFhNGNmZDc3YWY0ZTE5ZjE3
MGI0MDhmMzdlMDQwZDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGlt
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlw
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERT
X1VJKQogI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRzU3RhdGUuaCIKICNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1M
b2NhbGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4IGIwY2I5NWE4ZmQ1NjJlNzk0YmRjYTM2ZjM1
MzA0MGJiN2MzNTY1MzIuLmQ3OWMxMDMyZGEyZWUwODQ3ODMzYTM2NmM4MWRiYTQyNGNiNWQ3MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApA
QCAtNDIsNyArNDIsNyBAQAogI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCiAj
aW5jbHVkZSAiRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmlu
Z3MuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
b250aElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNw
cAppbmRleCA5YmIyZjlhZWZhYjA3YzRlOGRiMzY2OTA3NDY3MmYyZTUxMTBiNDViLi5hNmM1NmEz
NzdkYmFjNmEyZjkyYjk3OTNlM2Y3OTc3ZDZkZGMzNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01v
bnRoSW5wdXRUeXBlLmNwcApAQCAtNDUsNyArNDUsNyBAQAogI2lmIEVOQUJMRShJTlBVVF9NVUxU
SVBMRV9GSUVMRFNfVUkpCiAjaW5jbHVkZSAiRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIgogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCAzMDZiZjhm
YjY0MDljY2VkOGExZTQ3ZTA0OGIwMTliODI4MDk4Y2I3Li45MWNmYTQwOWYxMmNmYzY2ZGU0NTRk
ZDAxMDA5YTU1ODJkZDllNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJl
cklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgotI2lu
Y2x1ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDc4
OWNkM2ZlZWQ2ODRjYzc4M2MzNDMzYjU3YmYxYmZjZjNiYjIxMzcuLmU4NjMzZmViYjY2M2UxZDE5
Yjg3MmFjMmQyNjhjODM3ODYxYmE3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmNwcApAQCAtNDQsNyArNDQsNyBAQAogCiAjaWYgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxE
U19VSSkKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkc1N0YXRlLmgiCi0jaW5jbHVkZSAiTG9jYWxp
emVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9EYXRlVGltZUVkaXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwCmluZGV4IDAwZTQwZGY2OGY2ZjIyOTQyNmE3NWRiNDE2
YTlmYjcxNjFiMDczYzMuLjkyNzU4YWU1OTU1ZWFmZDYxYjdkYzZlZGNiMjdiNjBjMTJlYjUzNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1l
bnQuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUg
IkxvY2FsaXplci5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUxvY2FsZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApp
bmRleCBmODQzZmE2MzAzMGI1ZDc1MTkwOTRmMGU0YTNlM2JjYjkwMDY3N2EwLi5lOTQyYjQwNjBl
YjQ1NjYzNmVlYmE2ZjdkMDFkODZhZDA3ZjFiYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIktleWJv
YXJkRXZlbnQuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxv
Y2FsZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVBvcHVwQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1
cENvbnRyb2xsZXIuY3BwCmluZGV4IDIxMTIxYTM2YjlhYzYyMTdiNTRkNjBkMmE1YWIwZWExNzcy
Nzg0NzQuLjkxM2EyZjhiNGNkMjA4NmJlNDk2OGYzYzM1ODE4MjZhNGEwYzUyMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBvcHVwQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcApAQCAtMzIsOCArMzIsOCBA
QAogI2luY2x1ZGUgIlBhZ2VQb3B1cENvbnRyb2xsZXIuaCIKIAogI2lmIEVOQUJMRShQQUdFX1BP
UFVQKQotI2luY2x1ZGUgIkxvY2FsaXplci5oIgogI2luY2x1ZGUgIlBhZ2VQb3B1cENsaWVudC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKaW5kZXggYjU1ODUzZDE3MTUx
ZTBhNWM4MjM5Y2EwNTRmZDcyYWQwMzRlYmZjMS4uOWY0OGQ5Njc5ZTkwMzg3OWU2ZTRiNTVjNjZi
OTQ4MDg5MGM1NjM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGVJQ1UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5o
CkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIExvY2FsZUlDVV9oCiAKICNpbmNsdWRlICJEYXRl
Q29tcG9uZW50cy5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
TG9jYWxlLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAjaW5jbHVkZSA8dW5pY29kZS91
bnVtLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZU5vbmUuY3BwCmluZGV4IDgyMTcyYjI0NWFhYjU0MGViZDYxOTU2NWRlNGZj
Yjc1MmI2MTA3OTguLjU1NDViM2JjNWNkN2Q0Yzg3YThhYjIwZGVhZjk1YjU2OGY1MmIyYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtMjQsNyAr
MjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZVdpbi5oCmluZGV4IDI0MjJmYmY5ZmExMWQyY2FjNzE4MmEwZGEzOGU3ZWQwYjll
YjJmNDguLjE4ODkyOTZhYjIzYmI5YmZmNWRjOTA5N2QxZGI5ODIzYzg0MTBhOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlV2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaApAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBMb2NhbGVXaW5faAogI2RlZmluZSBMb2NhbGVXaW5faAogCi0jaW5jbHVkZSAiTG9jYWxp
emVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdjYzQyZjNiOGExMDk1NTdiNDVjYjkwZWE4M2JhODY3OWQyMzNkYzguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzYzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKLQot
I2luY2x1ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBFTkFCTEUoSU5QVVRfTVVMVElQ
TEVfRklFTERTX1VJKQotCi1jbGFzcyBEYXRlVGltZVN0cmluZ0J1aWxkZXIgOiBwcml2YXRlIERh
dGVUaW1lRm9ybWF0OjpUb2tlbkhhbmRsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERh
dGVUaW1lU3RyaW5nQnVpbGRlcik7Ci0KLXB1YmxpYzoKLSAgICAvLyBUaGUgYXJndW1lbnQgb2Jq
ZWN0cyBtdXN0IGJlIGFsaXZlIHVudGlsIHRoaXMgb2JqZWN0IGRpZXMuCi0gICAgRGF0ZVRpbWVT
dHJpbmdCdWlsZGVyKExvY2FsaXplciYsIGNvbnN0IERhdGVDb21wb25lbnRzJik7Ci0KLSAgICBi
b29sIGJ1aWxkKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyB0b1N0cmluZygpOwotCi1wcml2
YXRlOgotICAgIC8vIERhdGVUaW1lRm9ybWF0OjpUb2tlbkhhbmRsZXIgZnVuY3Rpb25zLgotICAg
IHZpcnR1YWwgdm9pZCB2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUsIGludCkg
T1ZFUlJJREUgRklOQUw7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0TGl0ZXJhbChjb25zdCBTdHJp
bmcmKSBPVkVSUklERSBGSU5BTDsKLQotICAgIFN0cmluZyB6ZXJvUGFkU3RyaW5nKGNvbnN0IFN0
cmluZyYsIHNpemVfdCB3aWR0aCk7Ci0gICAgdm9pZCBhcHBlbmROdW1iZXIoaW50IG51bWJlciwg
c2l6ZV90IHdpZHRoKTsKLQotICAgIFN0cmluZ0J1aWxkZXIgbV9idWlsZGVyOwotICAgIExvY2Fs
aXplciYgbV9sb2NhbGl6ZXI7Ci0gICAgY29uc3QgRGF0ZUNvbXBvbmVudHMmIG1fZGF0ZTsKLX07
Ci0KLURhdGVUaW1lU3RyaW5nQnVpbGRlcjo6RGF0ZVRpbWVTdHJpbmdCdWlsZGVyKExvY2FsaXpl
ciYgbG9jYWxpemVyLCBjb25zdCBEYXRlQ29tcG9uZW50cyYgZGF0ZSkKLSAgICA6IG1fbG9jYWxp
emVyKGxvY2FsaXplcikKLSAgICAsIG1fZGF0ZShkYXRlKQotewotfQotCi1ib29sIERhdGVUaW1l
U3RyaW5nQnVpbGRlcjo6YnVpbGQoY29uc3QgU3RyaW5nJiBmb3JtYXRTdHJpbmcpCi17Ci0gICAg
bV9idWlsZGVyLnJlc2VydmVDYXBhY2l0eShmb3JtYXRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHJl
dHVybiBEYXRlVGltZUZvcm1hdDo6cGFyc2UoZm9ybWF0U3RyaW5nLCAqdGhpcyk7Ci19Ci0KLVN0
cmluZyBEYXRlVGltZVN0cmluZ0J1aWxkZXI6Onplcm9QYWRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHNpemVfdCB3aWR0aCkKLXsKLSAgICBpZiAoc3RyaW5nLmxlbmd0aCgpID49IHdpZHRo
KQotICAgICAgICByZXR1cm4gc3RyaW5nOwotICAgIFN0cmluZ0J1aWxkZXIgemVyb1BhZGRlZFN0
cmluZ0J1aWxkZXI7Ci0gICAgemVyb1BhZGRlZFN0cmluZ0J1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5
KHdpZHRoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gc3RyaW5nLmxlbmd0aCgpOyBpIDwgd2lkdGg7
ICsraSkKLSAgICAgICAgemVyb1BhZGRlZFN0cmluZ0J1aWxkZXIuYXBwZW5kKCIwIik7Ci0gICAg
emVyb1BhZGRlZFN0cmluZ0J1aWxkZXIuYXBwZW5kKHN0cmluZyk7Ci0gICAgcmV0dXJuIHplcm9Q
YWRkZWRTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXZvaWQgRGF0ZVRpbWVTdHJpbmdC
dWlsZGVyOjphcHBlbmROdW1iZXIoaW50IG51bWJlciwgc2l6ZV90IHdpZHRoKQotewotICAgIFN0
cmluZyB6ZXJvUGFkZGVkTnVtYmVyU3RyaW5nID0gemVyb1BhZFN0cmluZyhTdHJpbmc6Om51bWJl
cihudW1iZXIpLCB3aWR0aCk7Ci0gICAgbV9idWlsZGVyLmFwcGVuZChtX2xvY2FsaXplci5jb252
ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoemVyb1BhZGRlZE51bWJlclN0cmluZykpOwotfQotCi12b2lk
IERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRU
eXBlIGZpZWxkVHlwZSwgaW50IG51bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpCi17Ci0gICAgc3dp
dGNoIChmaWVsZFR5cGUpIHsKLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVZZWFy
OgotICAgICAgICAvLyBBbHdheXMgdXNlIHBhZGRpbmcgd2lkdGggb2YgNCBzbyBpdCBtYXRjaGVz
IERhdGVUaW1lRWRpdEVsZW1lbnQuCi0gICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUuZnVsbFll
YXIoKSwgNCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVs
ZFR5cGVNb250aDoKLSAgICAgICAgLy8gQWx3YXlzIHVzZSBwYWRkaW5nIHdpZHRoIG9mIDIgc28g
aXQgbWF0Y2hlcyBEYXRlVGltZUVkaXRFbGVtZW50LgotICAgICAgICBhcHBlbmROdW1iZXIobV9k
YXRlLm1vbnRoKCkgKyAxLCAyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRGF0ZVRpbWVG
b3JtYXQ6OkZpZWxkVHlwZURheU9mTW9udGg6Ci0gICAgICAgIC8vIEFsd2F5cyB1c2UgcGFkZGlu
ZyB3aWR0aCBvZiAyIHNvIGl0IG1hdGNoZXMgRGF0ZVRpbWVFZGl0RWxlbWVudC4KLSAgICAgICAg
YXBwZW5kTnVtYmVyKG1fZGF0ZS5tb250aERheSgpLCAyKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVBlcmlvZDoKLSAgICAgICAgbV9idWlsZGVy
LmFwcGVuZChtX2xvY2FsaXplci50aW1lQU1QTUxhYmVscygpWyhtX2RhdGUuaG91cigpID49IDEy
ID8gMSA6IDApXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGVIb3VyMTI6IHsKLSAgICAgICAgaW50IGhvdXIxMiA9IG1fZGF0ZS5ob3VyKCkgJSAx
MjsKLSAgICAgICAgaWYgKCFob3VyMTIpCi0gICAgICAgICAgICBob3VyMTIgPSAxMjsKLSAgICAg
ICAgYXBwZW5kTnVtYmVyKGhvdXIxMiwgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycyk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91
cjIzOgotICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLmhvdXIoKSwgbnVtYmVyT2ZQYXR0ZXJu
Q2hhcmFjdGVycyk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGVIb3VyMTE6Ci0gICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUuaG91cigpICUgMTIs
IG51bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBE
YXRlVGltZUZvcm1hdDo6RmllbGRUeXBlSG91cjI0OiB7Ci0gICAgICAgIGludCBob3VyMjQgPSBt
X2RhdGUuaG91cigpOwotICAgICAgICBpZiAoIWhvdXIyNCkKLSAgICAgICAgICAgIGhvdXIyNCA9
IDI0OwotICAgICAgICBhcHBlbmROdW1iZXIoaG91cjI0LCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0
ZXJzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGVNaW51dGU6Ci0gICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUubWludXRlKCksIG51
bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBEYXRl
VGltZUZvcm1hdDo6RmllbGRUeXBlU2Vjb25kOgotICAgICAgICBpZiAoIW1fZGF0ZS5taWxsaXNl
Y29uZCgpKQotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5zZWNvbmQoKSwgbnVtYmVy
T2ZQYXR0ZXJuQ2hhcmFjdGVycyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZG91Ymxl
IHNlY29uZCA9IG1fZGF0ZS5zZWNvbmQoKSArIG1fZGF0ZS5taWxsaXNlY29uZCgpIC8gMTAwMC4w
OwotICAgICAgICAgICAgU3RyaW5nIHplcm9QYWRkZWRTZWNvbmRTdHJpbmcgPSB6ZXJvUGFkU3Ry
aW5nKFN0cmluZzo6Zm9ybWF0KCIlLjAzZiIsIHNlY29uZCksIG51bWJlck9mUGF0dGVybkNoYXJh
Y3RlcnMgKyA0KTsKLSAgICAgICAgICAgIG1fYnVpbGRlci5hcHBlbmQobV9sb2NhbGl6ZXIuY29u
dmVydFRvTG9jYWxpemVkTnVtYmVyKHplcm9QYWRkZWRTZWNvbmRTdHJpbmcpKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LX0KLQotdm9pZCBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0TGl0ZXJhbChjb25zdCBTdHJp
bmcmIHRleHQpCi17Ci0gICAgQVNTRVJUKHRleHQubGVuZ3RoKCkpOwotICAgIG1fYnVpbGRlci5h
cHBlbmQodGV4dCk7Ci19Ci0KLVN0cmluZyBEYXRlVGltZVN0cmluZ0J1aWxkZXI6OnRvU3RyaW5n
KCkKLXsKLSAgICByZXR1cm4gbV9idWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLSNlbmRpZgotCi1M
b2NhbGl6ZXI6On5Mb2NhbGl6ZXIoKQotewotfQotCi12b2lkIExvY2FsaXplcjo6c2V0TG9jYWxp
emVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiBzeW1ib2xz
LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlU3Vm
Zml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZl
U3VmZml4KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3ltYm9scy5zaXplKCk7ICsr
aSkgewotICAgICAgICBBU1NFUlQoIXN5bWJvbHNbaV0uaXNFbXB0eSgpKTsKLSAgICAgICAgbV9k
ZWNpbWFsU3ltYm9sc1tpXSA9IHN5bWJvbHNbaV07Ci0gICAgfQotICAgIG1fcG9zaXRpdmVQcmVm
aXggPSBwb3NpdGl2ZVByZWZpeDsKLSAgICBtX3Bvc2l0aXZlU3VmZml4ID0gcG9zaXRpdmVTdWZm
aXg7Ci0gICAgbV9uZWdhdGl2ZVByZWZpeCA9IG5lZ2F0aXZlUHJlZml4OwotICAgIG1fbmVnYXRp
dmVTdWZmaXggPSBuZWdhdGl2ZVN1ZmZpeDsKLSAgICBBU1NFUlQoIW1fcG9zaXRpdmVQcmVmaXgu
aXNFbXB0eSgpIHx8ICFtX3Bvc2l0aXZlU3VmZml4LmlzRW1wdHkoKSB8fCAhbV9uZWdhdGl2ZVBy
ZWZpeC5pc0VtcHR5KCkgfHwgIW1fbmVnYXRpdmVTdWZmaXguaXNFbXB0eSgpKTsKLSAgICBtX2hh
c0xvY2FsaXplckRhdGEgPSB0cnVlOwotfQotCi1TdHJpbmcgTG9jYWxpemVyOjpjb252ZXJ0VG9M
b2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJiBpbnB1dCkKLXsKLSAgICBpbml0aWFsaXplTG9j
YWxpemVyRGF0YSgpOwotICAgIGlmICghbV9oYXNMb2NhbGl6ZXJEYXRhIHx8IGlucHV0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIGlucHV0OwotCi0gICAgdW5zaWduZWQgaSA9IDA7Ci0gICAg
Ym9vbCBpc05lZ2F0aXZlID0gZmFsc2U7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsKLQotICAgIGlmIChpbnB1
dFswXSA9PSAnLScpIHsKLSAgICAgICAgKytpOwotICAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9uZWdhdGl2ZVByZWZpeCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcG9zaXRpdmVQcmVmaXgpOwotCi0gICAgZm9yICg7IGkg
PCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoaW5wdXRbaV0pIHsKLSAg
ICAgICAgY2FzZSAnMCc6Ci0gICAgICAgIGNhc2UgJzEnOgotICAgICAgICBjYXNlICcyJzoKLSAg
ICAgICAgY2FzZSAnMyc6Ci0gICAgICAgIGNhc2UgJzQnOgotICAgICAgICBjYXNlICc1JzoKLSAg
ICAgICAgY2FzZSAnNic6Ci0gICAgICAgIGNhc2UgJzcnOgotICAgICAgICBjYXNlICc4JzoKLSAg
ICAgICAgY2FzZSAnOSc6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxTeW1i
b2xzW2lucHV0W2ldIC0gJzAnXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAn
Lic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxTeW1ib2xzW0RlY2ltYWxT
ZXBhcmF0b3JJbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGJ1aWxkZXIuYXBwZW5kKGlzTmVnYXRpdmUgPyBtX25lZ2F0aXZlU3VmZml4IDogbV9wb3NpdGl2
ZVN1ZmZpeCk7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1zdGF0aWMg
Ym9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIGNvbnN0
IFN0cmluZyYgcGFydCkKLXsKLSAgICBpZiAocGFydC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChwb3NpdGlvbiArIHBhcnQubGVuZ3RoKCkgPiB0ZXh0Lmxlbmd0aCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
cnQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBpZiAodGV4dFtwb3NpdGlvbiArIGldICE9IHBh
cnRbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIExvY2FsaXplcjo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29uc3Qg
U3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVu
c2lnbmVkJiBlbmRJbmRleCkKLXsKLSAgICBzdGFydEluZGV4ID0gMDsKLSAgICBlbmRJbmRleCA9
IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmIChtX25lZ2F0aXZlUHJlZml4LmlzRW1wdHkoKSAmJiBt
X25lZ2F0aXZlU3VmZml4LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0
aChtX3Bvc2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3VmZml4KSkg
ewotICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgc3RhcnRJbmRl
eCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7Ci0gICAgICAgICAgICBlbmRJbmRleCAtPSBt
X3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGlz
TmVnYXRpdmUgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChpbnB1dC5zdGFydHNX
aXRoKG1fbmVnYXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fbmVnYXRpdmVTdWZmaXgp
KSB7Ci0gICAgICAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIHN0YXJ0SW5k
ZXggPSBtX25lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOwotICAgICAgICAgICAgZW5kSW5kZXggLT0g
bV9uZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlzTmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKG1f
cG9zaXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZmaXgpKSB7Ci0g
ICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7Ci0g
ICAgICAgICAgICAgICAgZW5kSW5kZXggLT0gbV9wb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgTG9jYWxpemVyOjptYXRj
aGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBwb3Np
dGlvbikKLXsKLSAgICBmb3IgKHVuc2lnbmVkIHN5bWJvbEluZGV4ID0gMDsgc3ltYm9sSW5kZXgg
PCBEZWNpbWFsU3ltYm9sc1NpemU7ICsrc3ltYm9sSW5kZXgpIHsKLSAgICAgICAgaWYgKG1fZGVj
aW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpICYmIG1hdGNoZXMoaW5wdXQsIHBvc2l0
aW9uLCBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XSkpIHsKLSAgICAgICAgICAgIHBvc2l0
aW9uICs9IG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpOwotICAgICAgICAg
ICAgcmV0dXJuIHN5bWJvbEluZGV4OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBEZWNp
bWFsU3ltYm9sc1NpemU7Ci19Ci0KLVN0cmluZyBMb2NhbGl6ZXI6OmNvbnZlcnRGcm9tTG9jYWxp
emVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQotewotICAgIGluaXRpYWxpemVMb2Nh
bGl6ZXJEYXRhKCk7Ci0gICAgU3RyaW5nIGlucHV0ID0gbG9jYWxpemVkLnN0cmlwV2hpdGVTcGFj
ZSgpOwotICAgIGlmICghbV9oYXNMb2NhbGl6ZXJEYXRhIHx8IGlucHV0LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGlucHV0OwotCi0gICAgYm9vbCBpc05lZ2F0aXZlOwotICAgIHVuc2lnbmVk
IHN0YXJ0SW5kZXg7Ci0gICAgdW5zaWduZWQgZW5kSW5kZXg7Ci0gICAgaWYgKCFkZXRlY3RTaWdu
QW5kR2V0RGlnaXRSYW5nZShpbnB1dCwgaXNOZWdhdGl2ZSwgc3RhcnRJbmRleCwgZW5kSW5kZXgp
KSB7Ci0gICAgICAgIC8vIElucHV0IGlzIGJyb2tlbi4gUmV0dXJuaW5nIGFuIGludmFsaWQgbnVt
YmVyIHN0cmluZy4KLSAgICAgICAgcmV0dXJuICIqIjsKLSAgICB9Ci0KLSAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoaW5wdXQubGVuZ3RoKCkp
OwotICAgIGlmIChpc05lZ2F0aXZlKQotICAgICAgICBidWlsZGVyLmFwcGVuZCgiLSIpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDspIHsKLSAgICAgICAg
dW5zaWduZWQgc3ltYm9sSW5kZXggPSBtYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGlucHV0LCBp
KTsKLSAgICAgICAgaWYgKHN5bWJvbEluZGV4ID49IERlY2ltYWxTeW1ib2xzU2l6ZSkKLSAgICAg
ICAgICAgIHJldHVybiAiKiI7Ci0gICAgICAgIGlmIChzeW1ib2xJbmRleCA9PSBEZWNpbWFsU2Vw
YXJhdG9ySW5kZXgpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLicpOwotICAgICAgICBl
bHNlIGlmIChzeW1ib2xJbmRleCA9PSBHcm91cFNlcGFyYXRvckluZGV4KSB7Ci0gICAgICAgICAg
ICAvLyBJZ25vcmUgZ3JvdXAgc2VwYXJhdG9ycy4KLQotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPignMCcgKyBzeW1ib2xJbmRleCkp
OwotICAgIH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi0jaWYgRU5BQkxF
KElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKLVN0cmluZyBMb2NhbGl6ZXI6OmxvY2FsaXplZERl
Y2ltYWxTZXBhcmF0b3IoKQotewotICAgIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCk7Ci0gICAg
cmV0dXJuIG1fZGVjaW1hbFN5bWJvbHNbRGVjaW1hbFNlcGFyYXRvckluZGV4XTsKLX0KLQotU3Ry
aW5nIExvY2FsaXplcjo6ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpCi17Ci0gICAgaWYgKCFt
X2RhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBtX2Rh
dGVUaW1lRm9ybWF0V2l0aFNlY29uZHM7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXRyaWV2
ZSB0aGUgc2VwYXJhdG9yIGFuZCB0aGUgb3JkZXIgZnJvbSB0aGUgc3lzdGVtLgotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChkYXRlRm9ybWF0KCkpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQodGltZUZvcm1hdCgpKTsK
LSAgICBtX2RhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMgPSBidWlsZGVyLnRvU3RyaW5nKCk7Ci0g
ICAgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kczsKLX0KLQotU3RyaW5nIExvY2Fs
aXplcjo6ZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpCi17Ci0gICAgaWYgKCFtX2RhdGVU
aW1lRm9ybWF0V2l0aG91dFNlY29uZHMuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBtX2RhdGVU
aW1lRm9ybWF0V2l0aG91dFNlY29uZHM7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXRyaWV2
ZSB0aGUgc2VwYXJhdG9yIGFuZCB0aGUgb3JkZXIgZnJvbSB0aGUgc3lzdGVtLgotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChkYXRlRm9ybWF0KCkpOwotICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgYnVpbGRlci5hcHBlbmQoc2hvcnRUaW1lRm9ybWF0
KCkpOwotICAgIG1fZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcyA9IGJ1aWxkZXIudG9TdHJp
bmcoKTsKLSAgICByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzOwotfQotI2Vu
ZGlmCi0KLVN0cmluZyBMb2NhbGl6ZXI6OmZvcm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25l
bnRzJiBkYXRlLCBGb3JtYXRUeXBlIGZvcm1hdFR5cGUpCi17Ci0jaWYgRU5BQkxFKElOUFVUX01V
TFRJUExFX0ZJRUxEU19VSSkKLSAgICBpZiAoZGF0ZS50eXBlKCkgIT0gRGF0ZUNvbXBvbmVudHM6
OlRpbWUgJiYgZGF0ZS50eXBlKCkgIT0gRGF0ZUNvbXBvbmVudHM6OkRhdGUpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICBEYXRlVGltZVN0cmluZ0J1aWxkZXIgYnVpbGRlcigqdGhpcywg
ZGF0ZSk7Ci0gICAgaWYgKGRhdGUudHlwZSgpID09IERhdGVDb21wb25lbnRzOjpUaW1lKQotICAg
ICAgICBidWlsZGVyLmJ1aWxkKGZvcm1hdFR5cGUgPT0gRm9ybWF0VHlwZVNob3J0ID8gc2hvcnRU
aW1lRm9ybWF0KCkgOiB0aW1lRm9ybWF0KCkpOwotICAgIGVsc2UgaWYgKGRhdGUudHlwZSgpID09
IERhdGVDb21wb25lbnRzOjpEYXRlKQotICAgICAgICBidWlsZGVyLmJ1aWxkKGRhdGVGb3JtYXQo
KSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGRhdGUpOwotICAgIFVOVVNFRF9QQVJBTShmb3JtYXRUeXBlKTsKLSAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0jZW5kaWYKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxp
emVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWYwMWYxYTcxNTI0MzBiMmM3
NmE1MTU3ZDMyZDkzMmEyYjAxZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICog
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotICogTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQotICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICi0gKiBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBM
b2NhbGl6ZXJfaAotI2RlZmluZSBMb2NhbGl6ZXJfaAotCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVu
dHMuaCIKLSNpbmNsdWRlICJMYW5ndWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTG9jYWxpemVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbGl6ZXIp
OwotCi1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxpemVyPiBjcmVhdGUoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgUGFzc093blB0
cjxMb2NhbGl6ZXI+IGNyZWF0ZURlZmF1bHQoKTsKLQotICAgIC8vIENvbnZlcnRzIHRoZSBzcGVj
aWZpZWQgbnVtYmVyIHN0cmluZyB0byBhbm90aGVyIG51bWJlciBzdHJpbmcgbG9jYWxpemVkCi0g
ICAgLy8gZm9yIHRoaXMgTG9jYWxpemVyIGxvY2FsZS4gVGhlIGlucHV0IHN0cmluZyBtdXN0IGNv
bmZvcm0gdG8gSFRNTAotICAgIC8vIGZsb2F0aW5nLXBvaW50IG51bWJlcnMsIGFuZCBpcyBub3Qg
ZW1wdHkuCi0gICAgU3RyaW5nIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcm
KTsKLQotICAgIC8vIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgbG9jYWxpemVkIG51bWJlciBzdHJp
bmcgdG8gYSBudW1iZXIgc3RyaW5nIGluIHRoZQotICAgIC8vIEhUTUwgZmxvYXRpbmctcG9pbnQg
bnVtYmVyIGZvcm1hdC4gVGhlIGlucHV0IHN0cmluZyBpcyBwcm92aWRlZCBieSBhIGVuZAotICAg
IC8vIHVzZXIsIGFuZCBtaWdodCBub3QgYmUgYSBudW1iZXIgc3RyaW5nLiBJdCdzIG9rIHRoYXQg
dGhlIGZ1bmN0aW9uIHJldHVybnMKLSAgICAvLyBhIHN0cmluZyB3aGljaCBpcyBub3QgY29uZm9y
bXMgdG8gdGhlIEhUTUwgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGZvcm1hdCwKLSAgICAvLyBjYWxs
ZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIHJlc3BvbnNpYmxlIHRvIGNoZWNrIHRoZSBmb3JtYXQg
b2YgdGhlCi0gICAgLy8gcmVzdWx0YW50IHN0cmluZy4KLSAgICBTdHJpbmcgY29udmVydEZyb21M
b2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJik7Ci0KLSNpZiBFTkFCTEUoSU5QVVRfTVVMVElQ
TEVfRklFTERTX1VJKQotICAgIC8vIFJldHVybnMgbG9jYWxpemVkIGRlY2ltYWwgc2VwYXJhdG9y
LCBlLmcuICIuIiBmb3IgRW5nbGlzaCwgIiwiIGZvciBGcmVuY2guCi0gICAgU3RyaW5nIGxvY2Fs
aXplZERlY2ltYWxTZXBhcmF0b3IoKTsKLQotICAgIC8vIFJldHVybnMgZGF0ZSBmb3JtYXQgaW4g
VW5pY29kZSBUUjM1IExETUxbMV0gY29udGFpbmluZyBkYXkgb2YgbW9udGgsCi0gICAgLy8gbW9u
dGgsIGFuZCB5ZWFyLCBlLmcuICJkZC9tbS95eXl5IgotICAgIC8vIFsxXSBMRE1MIGh0dHA6Ly91
bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvI0RhdGVfRm9ybWF0X1BhdHRlcm5zCi0gICAgdmlydHVh
bCBTdHJpbmcgZGF0ZUZvcm1hdCgpID0gMDsKLQotICAgIC8vIFJldHVybnMgYSB5ZWFyLW1vbnRo
IGZvcm1hdCBpbiBVbmljb2RlIFRSMzUgTERNTC4KLSAgICB2aXJ0dWFsIFN0cmluZyBtb250aEZv
cm1hdCgpID0gMDsKLQotICAgIC8vIFJldHVybnMgdGltZSBmb3JtYXQgaW4gVW5pY29kZSBUUjM1
IExETUxbMV0gY29udGFpbmluZyBob3VyLCBtaW51dGUsIGFuZAotICAgIC8vIHNlY29uZCB3aXRo
IG9wdGlvbmFsIHBlcmlvZChBTS9QTSksIGUuZy4gImg6bW06c3MgYSIKLSAgICAvLyBbMV0gTERN
TCBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1LyNEYXRlX0Zvcm1hdF9QYXR0ZXJucwot
ICAgIHZpcnR1YWwgU3RyaW5nIHRpbWVGb3JtYXQoKSA9IDA7Ci0KLSAgICAvLyBSZXR1cm5zIHRp
bWUgZm9ybWF0IGluIFVuaWNvZGUgVFIzNSBMRE1MIGNvbnRhaW5pbmcgaG91ciwgYW5kIG1pbnV0
ZQotICAgIC8vIHdpdGggb3B0aW9uYWwgcGVyaW9kKEFNL1BNKSwgZS5nLiAiaDptbSBhIgotICAg
IC8vIE5vdGU6IFNvbWUgcGxhdGZvcm1zIHJldHVybiBzYW1lIHZhbHVlIGFzIHRpbWVGb3JtYXQo
KS4KLSAgICB2aXJ0dWFsIFN0cmluZyBzaG9ydFRpbWVGb3JtYXQoKSA9IDA7Ci0KLSAgICAvLyBS
ZXR1cm5zIGEgZGF0ZS10aW1lIGZvcm1hdCBpbiBVbmljb2RlIFRSMzUgTERNTC4gSXQgc2hvdWxk
IGhhdmUgYSBzZWNvbmRzCi0gICAgLy8gZmllbGQuCi0gICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0
V2l0aFNlY29uZHMoKTsKLQotICAgIC8vIFJldHVybnMgYSBkYXRlLXRpbWUgZm9ybWF0IGluIFVu
aWNvZGUgVFIzNSBMRE1MLiBJdCBzaG91bGQgaGF2ZSBubyBzZWNvbmRzCi0gICAgLy8gZmllbGQu
Ci0gICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKLQotICAgIC8vIFJl
dHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nIG9mIHdoaWNoIHNpemUgaXMgMTIuIFRoZSBmaXJzdCBp
dGVtIGlzIGEKLSAgICAvLyBsb2NhbGl6ZWQgc3RyaW5nIG9mIEphbiBhbmQgdGhlIGxhc3QgaXRl
bSBpcyBhIGxvY2FsaXplZCBzdHJpbmcgb2YKLSAgICAvLyBEZWMuIFRoZXNlIHN0cmluZ3Mgc2hv
dWxkIGJlIHNob3J0LgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNob3J0TW9u
dGhMYWJlbHMoKSA9IDA7Ci0KLSAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZyBvZiB3
aGljaCBzaXplIGlzIDEyLiBUaGUgZmlyc3QgaXRlbSBpcyBhCi0gICAgLy8gc3RhbmQtYWxvbmUg
bG9jYWxpemVkIHN0cmluZyBvZiBKYW51YXJ5IGFuZCB0aGUgbGFzdCBpdGVtIGlzIGEKLSAgICAv
LyBzdGFuZC1hbG9uZSBsb2NhbGl6ZWQgc3RyaW5nIG9mIERlY2VtYmVyLiBUaGVzZSBzdHJpbmdz
IHNob3VsZCBub3QgYmUKLSAgICAvLyBhYmJyZXZpYXRpb25zLgotICAgIHZpcnR1YWwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHN0YW5kQWxvbmVNb250aExhYmVscygpID0gMDsKLQotICAgIC8vIFN0
YW5kLWFsb25lIG1vbnRoIHZlcnNpb24gb2Ygc2hvcnRNb250aExhYmVscy4KLSAgICB2aXJ0dWFs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpID0gMDsK
LQotICAgIC8vIFJldHVybnMgbG9jYWxpemVkIHBlcmlvZCBmaWVsZChBTS9QTSkgc3RyaW5ncy4K
LSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0aW1lQU1QTUxhYmVscygpID0gMDsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxFKElOUFVUX01V
TFRJUExFX0ZJRUxEU19VSSkKLSAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZyBvZiB3
aGljaCBzaXplIGlzIDEyLiBUaGUgZmlyc3QgaXRlbSBpcyBhCi0gICAgLy8gbG9jYWxpemVkIHN0
cmluZyBvZiBKYW51YXJ5LCBhbmQgdGhlIGxhc3QgaXRlbSBpcyBhIGxvY2FsaXplZCBzdHJpbmcg
b2YKLSAgICAvLyBEZWNlbWJlci4gVGhlc2Ugc3RyaW5ncyBzaG91bGQgbm90IGJlIGFiYnJldmlh
dGlvbnMuCi0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSA9
IDA7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCi0gICAgLy8gUmV0dXJu
cyBhIHZlY3RvciBvZiBzdHJpbmcgb2Ygd2hpY2ggc2l6ZSBpcyA3LiBUaGUgZmlyc3QgaXRlbSBp
cyBhCi0gICAgLy8gbG9jYWxpemVkIHNob3J0IHN0cmluZyBvZiBNb25kYXksIGFuZCB0aGUgbGFz
dCBpdGVtIGlzIGEgbG9jYWxpemVkCi0gICAgLy8gc2hvcnQgc3RyaW5nIG9mIFNhdHVyZGF5LiBU
aGVzZSBzdHJpbmdzIHNob3VsZCBiZSBzaG9ydC4KLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB3ZWVrRGF5U2hvcnRMYWJlbHMoKSA9IDA7Ci0KLSAgICAvLyBUaGUgZmlyc3QgZGF5
IG9mIGEgd2Vlay4gMCBpcyBTdW5kYXksIGFuZCA2IGlzIFNhdHVyZGF5LgotICAgIHZpcnR1YWwg
dW5zaWduZWQgZmlyc3REYXlPZldlZWsoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBkYXRl
Rm9ybWF0VGV4dCgpID0gMDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwZW9wbGUgdXNlIHJp
Z2h0LXRvLWxlZnQgd3JpdGluZyBpbiB0aGUgbG9jYWxlIGZvciB0aGlzCi0gICAgLy8gb2JqZWN0
LgotICAgIHZpcnR1YWwgYm9vbCBpc1JUTCgpID0gMDsKLSNlbmRpZgotCi0gICAgLy8gUGFyc2Vz
IGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF0ZS90aW1lIHN0cmluZyBsb2NhbGl6ZWQK
LSAgICAvLyBmb3IgdGhpcyBMb2NhbGl6ZXIgbG9jYWxlLiBJZiB0aGUgaW5wdXQgc3RyaW5nIGlz
IG5vdCB2YWxpZCBvcgotICAgIC8vIGFuIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBs
b2NhbGl6ZWQgZGF0ZXMsIHRoaXMKLSAgICAvLyBmdW5jdGlvbiByZXR1cm5zIE5hTi4gSWYgdGhl
IGlucHV0IHN0cmluZyBpcyB2YWxpZCB0aGlzCi0gICAgLy8gZnVuY3Rpb24gcmV0dXJucyB0aGUg
bnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxCi0gICAgLy8gMDA6MDA6MDAu
MDAwIFVUQy4KLSAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZURhdGVUaW1lKGNvbnN0IFN0cmluZyYs
IERhdGVDb21wb25lbnRzOjpUeXBlKSA9IDA7Ci0KLSAgICBlbnVtIEZvcm1hdFR5cGUgeyBGb3Jt
YXRUeXBlVW5zcGVjaWZpZWQsIEZvcm1hdFR5cGVTaG9ydCwgRm9ybWF0VHlwZU1lZGl1bSB9Owot
Ci0gICAgLy8gU2VyaWFsaXplcyB0aGUgc3BlY2lmaWVkIGRhdGUgaW50byBhIGZvcm1hdHRlZCBk
YXRlIHN0cmluZyB0bwotICAgIC8vIGRpc3BsYXkgdG8gdGhlIHVzZXIuIElmIGFuIGltcGxlbWVu
dGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydAotICAgIC8vIGxvY2FsaXplZCBkYXRlcyB0aGUgZnVuY3Rp
b24gc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nIGZvcm1hdERhdGVU
aW1lKGNvbnN0IERhdGVDb21wb25lbnRzJiwgRm9ybWF0VHlwZSA9IEZvcm1hdFR5cGVVbnNwZWNp
ZmllZCk7Ci0KLSAgICB2aXJ0dWFsIH5Mb2NhbGl6ZXIoKTsKLQotcHJvdGVjdGVkOgotICAgIGVu
dW0gewotICAgICAgICAvLyAwLTkgZm9yIGRpZ2l0cy4KLSAgICAgICAgRGVjaW1hbFNlcGFyYXRv
ckluZGV4ID0gMTAsCi0gICAgICAgIEdyb3VwU2VwYXJhdG9ySW5kZXggPSAxMSwKLSAgICAgICAg
RGVjaW1hbFN5bWJvbHNTaXplCi0gICAgfTsKLQotI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9G
SUVMRFNfVUkpCi0gICAgU3RyaW5nIG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kczsKLSAgICBT
dHJpbmcgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzOwotI2VuZGlmCi0KLSAgICBMb2Nh
bGl6ZXIoKSA6IG1faGFzTG9jYWxpemVyRGF0YShmYWxzZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCkgPSAwOwotICAgIHZvaWQgc2V0TG9jYWxpemVyRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiwgY29uc3QgU3RyaW5n
JiBwb3NpdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwgY29uc3QgU3Ry
aW5nJiBuZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZpeCk7Ci0KLXBy
aXZhdGU6Ci0gICAgYm9vbCBkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcm
IGlucHV0LCBib29sJiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwgdW5zaWduZWQm
IGVuZEluZGV4KTsKLSAgICB1bnNpZ25lZCBtYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0
IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBwb3NpdGlvbik7Ci0KLSAgICBTdHJpbmcgbV9kZWNp
bWFsU3ltYm9sc1tEZWNpbWFsU3ltYm9sc1NpemVdOwotICAgIFN0cmluZyBtX3Bvc2l0aXZlUHJl
Zml4OwotICAgIFN0cmluZyBtX3Bvc2l0aXZlU3VmZml4OwotICAgIFN0cmluZyBtX25lZ2F0aXZl
UHJlZml4OwotICAgIFN0cmluZyBtX25lZ2F0aXZlU3VmZml4OwotICAgIGJvb2wgbV9oYXNMb2Nh
bGl6ZXJEYXRhOwotfTsKLQotaW5saW5lIFBhc3NPd25QdHI8TG9jYWxpemVyPiBMb2NhbGl6ZXI6
OmNyZWF0ZURlZmF1bHQoKQotewotICAgIHJldHVybiBMb2NhbGl6ZXI6OmNyZWF0ZShkZWZhdWx0
TGFuZ3VhZ2UoKSk7Ci19Ci0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDk0NWMzN2QwYTk3Mjc5NjVl
Y2FmOGJiYWIyYjBmNWIyNGRlZDdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgorCisjaW5jbHVk
ZSAiRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9GSUVM
RFNfVUkpCisKK2NsYXNzIERhdGVUaW1lU3RyaW5nQnVpbGRlciA6IHByaXZhdGUgRGF0ZVRpbWVG
b3JtYXQ6OlRva2VuSGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0ZVRpbWVT
dHJpbmdCdWlsZGVyKTsKKworcHVibGljOgorICAgIC8vIFRoZSBhcmd1bWVudCBvYmplY3RzIG11
c3QgYmUgYWxpdmUgdW50aWwgdGhpcyBvYmplY3QgZGllcy4KKyAgICBEYXRlVGltZVN0cmluZ0J1
aWxkZXIoTG9jYWxpemVyJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKKworICAgIGJvb2wgYnVp
bGQoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIHRvU3RyaW5nKCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciBmdW5jdGlvbnMuCisgICAgdmlydHVh
bCB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KSBPVkVSUklE
RSBGSU5BTDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFIEZJTkFMOworCisgICAgU3RyaW5nIHplcm9QYWRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
c2l6ZV90IHdpZHRoKTsKKyAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qg
d2lkdGgpOworCisgICAgU3RyaW5nQnVpbGRlciBtX2J1aWxkZXI7CisgICAgTG9jYWxpemVyJiBt
X2xvY2FsaXplcjsKKyAgICBjb25zdCBEYXRlQ29tcG9uZW50cyYgbV9kYXRlOworfTsKKworRGF0
ZVRpbWVTdHJpbmdCdWlsZGVyOjpEYXRlVGltZVN0cmluZ0J1aWxkZXIoTG9jYWxpemVyJiBsb2Nh
bGl6ZXIsIGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKQorICAgIDogbV9sb2NhbGl6ZXIobG9j
YWxpemVyKQorICAgICwgbV9kYXRlKGRhdGUpCit7Cit9CisKK2Jvb2wgRGF0ZVRpbWVTdHJpbmdC
dWlsZGVyOjpidWlsZChjb25zdCBTdHJpbmcmIGZvcm1hdFN0cmluZykKK3sKKyAgICBtX2J1aWxk
ZXIucmVzZXJ2ZUNhcGFjaXR5KGZvcm1hdFN0cmluZy5sZW5ndGgoKSk7CisgICAgcmV0dXJuIERh
dGVUaW1lRm9ybWF0OjpwYXJzZShmb3JtYXRTdHJpbmcsICp0aGlzKTsKK30KKworU3RyaW5nIERh
dGVUaW1lU3RyaW5nQnVpbGRlcjo6emVyb1BhZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
c2l6ZV90IHdpZHRoKQoreworICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPj0gd2lkdGgpCisgICAg
ICAgIHJldHVybiBzdHJpbmc7CisgICAgU3RyaW5nQnVpbGRlciB6ZXJvUGFkZGVkU3RyaW5nQnVp
bGRlcjsKKyAgICB6ZXJvUGFkZGVkU3RyaW5nQnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkod2lkdGgp
OworICAgIGZvciAoc2l6ZV90IGkgPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCB3aWR0aDsgKytpKQor
ICAgICAgICB6ZXJvUGFkZGVkU3RyaW5nQnVpbGRlci5hcHBlbmQoIjAiKTsKKyAgICB6ZXJvUGFk
ZGVkU3RyaW5nQnVpbGRlci5hcHBlbmQoc3RyaW5nKTsKKyAgICByZXR1cm4gemVyb1BhZGRlZFN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKK30KKwordm9pZCBEYXRlVGltZVN0cmluZ0J1aWxkZXI6
OmFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qgd2lkdGgpCit7CisgICAgU3RyaW5nIHpl
cm9QYWRkZWROdW1iZXJTdHJpbmcgPSB6ZXJvUGFkU3RyaW5nKFN0cmluZzo6bnVtYmVyKG51bWJl
ciksIHdpZHRoKTsKKyAgICBtX2J1aWxkZXIuYXBwZW5kKG1fbG9jYWxpemVyLmNvbnZlcnRUb0xv
Y2FsaXplZE51bWJlcih6ZXJvUGFkZGVkTnVtYmVyU3RyaW5nKSk7Cit9CisKK3ZvaWQgRGF0ZVRp
bWVTdHJpbmdCdWlsZGVyOjp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGUgZmll
bGRUeXBlLCBpbnQgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycykKK3sKKyAgICBzd2l0Y2ggKGZp
ZWxkVHlwZSkgeworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZVllYXI6CisgICAg
ICAgIC8vIEFsd2F5cyB1c2UgcGFkZGluZyB3aWR0aCBvZiA0IHNvIGl0IG1hdGNoZXMgRGF0ZVRp
bWVFZGl0RWxlbWVudC4KKyAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5mdWxsWWVhcigpLCA0
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZU1v
bnRoOgorICAgICAgICAvLyBBbHdheXMgdXNlIHBhZGRpbmcgd2lkdGggb2YgMiBzbyBpdCBtYXRj
aGVzIERhdGVUaW1lRWRpdEVsZW1lbnQuCisgICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUubW9u
dGgoKSArIDEsIDIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6
RmllbGRUeXBlRGF5T2ZNb250aDoKKyAgICAgICAgLy8gQWx3YXlzIHVzZSBwYWRkaW5nIHdpZHRo
IG9mIDIgc28gaXQgbWF0Y2hlcyBEYXRlVGltZUVkaXRFbGVtZW50LgorICAgICAgICBhcHBlbmRO
dW1iZXIobV9kYXRlLm1vbnRoRGF5KCksIDIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBE
YXRlVGltZUZvcm1hdDo6RmllbGRUeXBlUGVyaW9kOgorICAgICAgICBtX2J1aWxkZXIuYXBwZW5k
KG1fbG9jYWxpemVyLnRpbWVBTVBNTGFiZWxzKClbKG1fZGF0ZS5ob3VyKCkgPj0gMTIgPyAxIDog
MCldKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZUhvdXIxMjogeworICAgICAgICBpbnQgaG91cjEyID0gbV9kYXRlLmhvdXIoKSAlIDEyOworICAg
ICAgICBpZiAoIWhvdXIxMikKKyAgICAgICAgICAgIGhvdXIxMiA9IDEyOworICAgICAgICBhcHBl
bmROdW1iZXIoaG91cjEyLCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3VyMjM6Cisg
ICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUuaG91cigpLCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0
ZXJzKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZUhvdXIxMToKKyAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5ob3VyKCkgJSAxMiwgbnVtYmVy
T2ZQYXR0ZXJuQ2hhcmFjdGVycyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERhdGVUaW1l
Rm9ybWF0OjpGaWVsZFR5cGVIb3VyMjQ6IHsKKyAgICAgICAgaW50IGhvdXIyNCA9IG1fZGF0ZS5o
b3VyKCk7CisgICAgICAgIGlmICghaG91cjI0KQorICAgICAgICAgICAgaG91cjI0ID0gMjQ7Cisg
ICAgICAgIGFwcGVuZE51bWJlcihob3VyMjQsIG51bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZU1pbnV0ZToKKyAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5taW51dGUoKSwgbnVtYmVyT2ZQ
YXR0ZXJuQ2hhcmFjdGVycyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERhdGVUaW1lRm9y
bWF0OjpGaWVsZFR5cGVTZWNvbmQ6CisgICAgICAgIGlmICghbV9kYXRlLm1pbGxpc2Vjb25kKCkp
CisgICAgICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLnNlY29uZCgpLCBudW1iZXJPZlBhdHRl
cm5DaGFyYWN0ZXJzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkb3VibGUgc2Vjb25k
ID0gbV9kYXRlLnNlY29uZCgpICsgbV9kYXRlLm1pbGxpc2Vjb25kKCkgLyAxMDAwLjA7CisgICAg
ICAgICAgICBTdHJpbmcgemVyb1BhZGRlZFNlY29uZFN0cmluZyA9IHplcm9QYWRTdHJpbmcoU3Ry
aW5nOjpmb3JtYXQoIiUuMDNmIiwgc2Vjb25kKSwgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycyAr
IDQpOworICAgICAgICAgICAgbV9idWlsZGVyLmFwcGVuZChtX2xvY2FsaXplci5jb252ZXJ0VG9M
b2NhbGl6ZWROdW1iZXIoemVyb1BhZGRlZFNlY29uZFN0cmluZykpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorfQorCit2
b2lkIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYgdGV4
dCkKK3sKKyAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7CisgICAgbV9idWlsZGVyLmFwcGVuZCh0
ZXh0KTsKK30KKworU3RyaW5nIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dG9TdHJpbmcoKQorewor
ICAgIHJldHVybiBtX2J1aWxkZXIudG9TdHJpbmcoKTsKK30KKworI2VuZGlmCisKK0xvY2FsaXpl
cjo6fkxvY2FsaXplcigpCit7Cit9CisKK3ZvaWQgTG9jYWxpemVyOjpzZXRMb2NhbGl6ZXJEYXRh
KGNvbnN0IFZlY3RvcjxTdHJpbmcsIERlY2ltYWxTeW1ib2xzU2l6ZT4mIHN5bWJvbHMsIGNvbnN0
IFN0cmluZyYgcG9zaXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgcG9zaXRpdmVTdWZmaXgsIGNv
bnN0IFN0cmluZyYgbmVnYXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgbmVnYXRpdmVTdWZmaXgp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzeW1ib2xzLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIEFTU0VSVCghc3ltYm9sc1tpXS5pc0VtcHR5KCkpOworICAgICAgICBtX2RlY2ltYWxT
eW1ib2xzW2ldID0gc3ltYm9sc1tpXTsKKyAgICB9CisgICAgbV9wb3NpdGl2ZVByZWZpeCA9IHBv
c2l0aXZlUHJlZml4OworICAgIG1fcG9zaXRpdmVTdWZmaXggPSBwb3NpdGl2ZVN1ZmZpeDsKKyAg
ICBtX25lZ2F0aXZlUHJlZml4ID0gbmVnYXRpdmVQcmVmaXg7CisgICAgbV9uZWdhdGl2ZVN1ZmZp
eCA9IG5lZ2F0aXZlU3VmZml4OworICAgIEFTU0VSVCghbV9wb3NpdGl2ZVByZWZpeC5pc0VtcHR5
KCkgfHwgIW1fcG9zaXRpdmVTdWZmaXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0aXZlUHJlZml4Lmlz
RW1wdHkoKSB8fCAhbV9uZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5KCkpOworICAgIG1faGFzTG9jYWxp
emVyRGF0YSA9IHRydWU7Cit9CisKK1N0cmluZyBMb2NhbGl6ZXI6OmNvbnZlcnRUb0xvY2FsaXpl
ZE51bWJlcihjb25zdCBTdHJpbmcmIGlucHV0KQoreworICAgIGluaXRpYWxpemVMb2NhbGl6ZXJE
YXRhKCk7CisgICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gaW5wdXQ7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBib29sIGlz
TmVnYXRpdmUgPSBmYWxzZTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5yZXNlcnZlQ2FwYWNpdHkoaW5wdXQubGVuZ3RoKCkpOworCisgICAgaWYgKGlucHV0WzBdID09
ICctJykgeworICAgICAgICArK2k7CisgICAgICAgIGlzTmVnYXRpdmUgPSB0cnVlOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChtX25lZ2F0aXZlUHJlZml4KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQobV9wb3NpdGl2ZVByZWZpeCk7CisKKyAgICBmb3IgKDsgaSA8IGlucHV0
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgc3dpdGNoIChpbnB1dFtpXSkgeworICAgICAgICBj
YXNlICcwJzoKKyAgICAgICAgY2FzZSAnMSc6CisgICAgICAgIGNhc2UgJzInOgorICAgICAgICBj
YXNlICczJzoKKyAgICAgICAgY2FzZSAnNCc6CisgICAgICAgIGNhc2UgJzUnOgorICAgICAgICBj
YXNlICc2JzoKKyAgICAgICAgY2FzZSAnNyc6CisgICAgICAgIGNhc2UgJzgnOgorICAgICAgICBj
YXNlICc5JzoKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZGVjaW1hbFN5bWJvbHNbaW5w
dXRbaV0gLSAnMCddKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICcuJzoKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZGVjaW1hbFN5bWJvbHNbRGVjaW1hbFNlcGFyYXRv
ckluZGV4XSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgYnVpbGRl
ci5hcHBlbmQoaXNOZWdhdGl2ZSA/IG1fbmVnYXRpdmVTdWZmaXggOiBtX3Bvc2l0aXZlU3VmZml4
KTsKKworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBib29sIG1h
dGNoZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBwb3NpdGlvbiwgY29uc3QgU3RyaW5n
JiBwYXJ0KQoreworICAgIGlmIChwYXJ0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKHBvc2l0aW9uICsgcGFydC5sZW5ndGgoKSA+IHRleHQubGVuZ3RoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFydC5sZW5n
dGgoKTsgKytpKSB7CisgICAgICAgIGlmICh0ZXh0W3Bvc2l0aW9uICsgaV0gIT0gcGFydFtpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgTG9jYWxpemVyOjpkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25zdCBTdHJpbmcm
IGlucHV0LCBib29sJiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwgdW5zaWduZWQm
IGVuZEluZGV4KQoreworICAgIHN0YXJ0SW5kZXggPSAwOworICAgIGVuZEluZGV4ID0gaW5wdXQu
bGVuZ3RoKCk7CisgICAgaWYgKG1fbmVnYXRpdmVQcmVmaXguaXNFbXB0eSgpICYmIG1fbmVnYXRp
dmVTdWZmaXguaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKG1fcG9z
aXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZmaXgpKSB7CisgICAg
ICAgICAgICBpc05lZ2F0aXZlID0gZmFsc2U7CisgICAgICAgICAgICBzdGFydEluZGV4ID0gbV9w
b3NpdGl2ZVByZWZpeC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGVuZEluZGV4IC09IG1fcG9zaXRp
dmVTdWZmaXgubGVuZ3RoKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaXNOZWdhdGl2
ZSA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgobV9u
ZWdhdGl2ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9uZWdhdGl2ZVN1ZmZpeCkpIHsKKyAg
ICAgICAgICAgIGlzTmVnYXRpdmUgPSB0cnVlOworICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1f
bmVnYXRpdmVQcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICBlbmRJbmRleCAtPSBtX25lZ2F0
aXZlU3VmZml4Lmxlbmd0aCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaXNOZWdh
dGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgobV9wb3NpdGl2
ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9wb3NpdGl2ZVN1ZmZpeCkpIHsKKyAgICAgICAg
ICAgICAgICBzdGFydEluZGV4ID0gbV9wb3NpdGl2ZVByZWZpeC5sZW5ndGgoKTsKKyAgICAgICAg
ICAgICAgICBlbmRJbmRleCAtPSBtX3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBMb2NhbGl6ZXI6Om1hdGNoZWREZWNp
bWFsU3ltYm9sSW5kZXgoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHBvc2l0aW9uKQor
eworICAgIGZvciAodW5zaWduZWQgc3ltYm9sSW5kZXggPSAwOyBzeW1ib2xJbmRleCA8IERlY2lt
YWxTeW1ib2xzU2l6ZTsgKytzeW1ib2xJbmRleCkgeworICAgICAgICBpZiAobV9kZWNpbWFsU3lt
Ym9sc1tzeW1ib2xJbmRleF0ubGVuZ3RoKCkgJiYgbWF0Y2hlcyhpbnB1dCwgcG9zaXRpb24sIG1f
ZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdKSkgeworICAgICAgICAgICAgcG9zaXRpb24gKz0g
bV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRleF0ubGVuZ3RoKCk7CisgICAgICAgICAgICByZXR1
cm4gc3ltYm9sSW5kZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIERlY2ltYWxTeW1i
b2xzU2l6ZTsKK30KKworU3RyaW5nIExvY2FsaXplcjo6Y29udmVydEZyb21Mb2NhbGl6ZWROdW1i
ZXIoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWQpCit7CisgICAgaW5pdGlhbGl6ZUxvY2FsaXplckRh
dGEoKTsKKyAgICBTdHJpbmcgaW5wdXQgPSBsb2NhbGl6ZWQuc3RyaXBXaGl0ZVNwYWNlKCk7Cisg
ICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gaW5wdXQ7CisKKyAgICBib29sIGlzTmVnYXRpdmU7CisgICAgdW5zaWduZWQgc3RhcnRJ
bmRleDsKKyAgICB1bnNpZ25lZCBlbmRJbmRleDsKKyAgICBpZiAoIWRldGVjdFNpZ25BbmRHZXRE
aWdpdFJhbmdlKGlucHV0LCBpc05lZ2F0aXZlLCBzdGFydEluZGV4LCBlbmRJbmRleCkpIHsKKyAg
ICAgICAgLy8gSW5wdXQgaXMgYnJva2VuLiBSZXR1cm5pbmcgYW4gaW52YWxpZCBudW1iZXIgc3Ry
aW5nLgorICAgICAgICByZXR1cm4gIioiOworICAgIH0KKworICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5ndGgoKSk7CisgICAg
aWYgKGlzTmVnYXRpdmUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OykgeworICAgICAgICB1bnNpZ25l
ZCBzeW1ib2xJbmRleCA9IG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoaW5wdXQsIGkpOworICAg
ICAgICBpZiAoc3ltYm9sSW5kZXggPj0gRGVjaW1hbFN5bWJvbHNTaXplKQorICAgICAgICAgICAg
cmV0dXJuICIqIjsKKyAgICAgICAgaWYgKHN5bWJvbEluZGV4ID09IERlY2ltYWxTZXBhcmF0b3JJ
bmRleCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgIGVsc2UgaWYg
KHN5bWJvbEluZGV4ID09IEdyb3VwU2VwYXJhdG9ySW5kZXgpIHsKKyAgICAgICAgICAgIC8vIEln
bm9yZSBncm91cCBzZXBhcmF0b3JzLgorCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KCcwJyArIHN5bWJvbEluZGV4KSk7CisgICAg
fQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKKyNpZiBFTkFCTEUoSU5QVVRf
TVVMVElQTEVfRklFTERTX1VJKQorU3RyaW5nIExvY2FsaXplcjo6bG9jYWxpemVkRGVjaW1hbFNl
cGFyYXRvcigpCit7CisgICAgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKTsKKyAgICByZXR1cm4g
bV9kZWNpbWFsU3ltYm9sc1tEZWNpbWFsU2VwYXJhdG9ySW5kZXhdOworfQorCitTdHJpbmcgTG9j
YWxpemVyOjpkYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCkKK3sKKyAgICBpZiAoIW1fZGF0ZVRp
bWVGb3JtYXRXaXRoU2Vjb25kcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZGF0ZVRpbWVG
b3JtYXRXaXRoU2Vjb25kczsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJldHJpZXZlIHRoZSBz
ZXBhcmF0b3IgYW5kIHRoZSBvcmRlciBmcm9tIHRoZSBzeXN0ZW0uCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGRhdGVGb3JtYXQoKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0aW1lRm9ybWF0KCkpOworICAgIG1f
ZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcyA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICByZXR1
cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzOworfQorCitTdHJpbmcgTG9jYWxpemVyOjpk
YXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkKK3sKKyAgICBpZiAoIW1fZGF0ZVRpbWVGb3Jt
YXRXaXRob3V0U2Vjb25kcy5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fZGF0ZVRpbWVGb3Jt
YXRXaXRob3V0U2Vjb25kczsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJldHJpZXZlIHRoZSBz
ZXBhcmF0b3IgYW5kIHRoZSBvcmRlciBmcm9tIHRoZSBzeXN0ZW0uCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKGRhdGVGb3JtYXQoKSk7CisgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKKyAgICBidWlsZGVyLmFwcGVuZChzaG9ydFRpbWVGb3JtYXQoKSk7Cisg
ICAgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzID0gYnVpbGRlci50b1N0cmluZygpOwor
ICAgIHJldHVybiBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHM7Cit9CisjZW5kaWYKKwor
U3RyaW5nIExvY2FsaXplcjo6Zm9ybWF0RGF0ZVRpbWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRh
dGUsIEZvcm1hdFR5cGUgZm9ybWF0VHlwZSkKK3sKKyNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVf
RklFTERTX1VJKQorICAgIGlmIChkYXRlLnR5cGUoKSAhPSBEYXRlQ29tcG9uZW50czo6VGltZSAm
JiBkYXRlLnR5cGUoKSAhPSBEYXRlQ29tcG9uZW50czo6RGF0ZSkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworICAgIERhdGVUaW1lU3RyaW5nQnVpbGRlciBidWlsZGVyKCp0aGlzLCBkYXRlKTsK
KyAgICBpZiAoZGF0ZS50eXBlKCkgPT0gRGF0ZUNvbXBvbmVudHM6OlRpbWUpCisgICAgICAgIGJ1
aWxkZXIuYnVpbGQoZm9ybWF0VHlwZSA9PSBGb3JtYXRUeXBlU2hvcnQgPyBzaG9ydFRpbWVGb3Jt
YXQoKSA6IHRpbWVGb3JtYXQoKSk7CisgICAgZWxzZSBpZiAoZGF0ZS50eXBlKCkgPT0gRGF0ZUNv
bXBvbmVudHM6OkRhdGUpCisgICAgICAgIGJ1aWxkZXIuYnVpbGQoZGF0ZUZvcm1hdCgpKTsKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZGF0
ZSk7CisgICAgVU5VU0VEX1BBUkFNKGZvcm1hdFR5cGUpOworICAgIHJldHVybiBTdHJpbmcoKTsK
KyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1BsYXRmb3JtTG9jYWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1ZjAxZjFhNzE1MjQzMGIyYzc2YTUxNTdkMzJkOTMyYTJi
MDFlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxh
dGZvcm1Mb2NhbGUuaApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
KyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpZm5k
ZWYgTG9jYWxpemVyX2gKKyNkZWZpbmUgTG9jYWxpemVyX2gKKworI2luY2x1ZGUgIkRhdGVDb21w
b25lbnRzLmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIExvY2FsaXplciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxp
emVyKTsKKworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPExvY2FsaXplcj4gY3JlYXRl
KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFBhc3NP
d25QdHI8TG9jYWxpemVyPiBjcmVhdGVEZWZhdWx0KCk7CisKKyAgICAvLyBDb252ZXJ0cyB0aGUg
c3BlY2lmaWVkIG51bWJlciBzdHJpbmcgdG8gYW5vdGhlciBudW1iZXIgc3RyaW5nIGxvY2FsaXpl
ZAorICAgIC8vIGZvciB0aGlzIExvY2FsaXplciBsb2NhbGUuIFRoZSBpbnB1dCBzdHJpbmcgbXVz
dCBjb25mb3JtIHRvIEhUTUwKKyAgICAvLyBmbG9hdGluZy1wb2ludCBudW1iZXJzLCBhbmQgaXMg
bm90IGVtcHR5LgorICAgIFN0cmluZyBjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3Ry
aW5nJik7CisKKyAgICAvLyBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIGxvY2FsaXplZCBudW1iZXIg
c3RyaW5nIHRvIGEgbnVtYmVyIHN0cmluZyBpbiB0aGUKKyAgICAvLyBIVE1MIGZsb2F0aW5nLXBv
aW50IG51bWJlciBmb3JtYXQuIFRoZSBpbnB1dCBzdHJpbmcgaXMgcHJvdmlkZWQgYnkgYSBlbmQK
KyAgICAvLyB1c2VyLCBhbmQgbWlnaHQgbm90IGJlIGEgbnVtYmVyIHN0cmluZy4gSXQncyBvayB0
aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zCisgICAgLy8gYSBzdHJpbmcgd2hpY2ggaXMgbm90IGNv
bmZvcm1zIHRvIHRoZSBIVE1MIGZsb2F0aW5nLXBvaW50IG51bWJlciBmb3JtYXQsCisgICAgLy8g
Y2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSByZXNwb25zaWJsZSB0byBjaGVjayB0aGUgZm9y
bWF0IG9mIHRoZQorICAgIC8vIHJlc3VsdGFudCBzdHJpbmcuCisgICAgU3RyaW5nIGNvbnZlcnRG
cm9tTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYpOworCisjaWYgRU5BQkxFKElOUFVUX01V
TFRJUExFX0ZJRUxEU19VSSkKKyAgICAvLyBSZXR1cm5zIGxvY2FsaXplZCBkZWNpbWFsIHNlcGFy
YXRvciwgZS5nLiAiLiIgZm9yIEVuZ2xpc2gsICIsIiBmb3IgRnJlbmNoLgorICAgIFN0cmluZyBs
b2NhbGl6ZWREZWNpbWFsU2VwYXJhdG9yKCk7CisKKyAgICAvLyBSZXR1cm5zIGRhdGUgZm9ybWF0
IGluIFVuaWNvZGUgVFIzNSBMRE1MWzFdIGNvbnRhaW5pbmcgZGF5IG9mIG1vbnRoLAorICAgIC8v
IG1vbnRoLCBhbmQgeWVhciwgZS5nLiAiZGQvbW0veXl5eSIKKyAgICAvLyBbMV0gTERNTCBodHRw
Oi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1LyNEYXRlX0Zvcm1hdF9QYXR0ZXJucworICAgIHZp
cnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIGEgeWVhci1t
b250aCBmb3JtYXQgaW4gVW5pY29kZSBUUjM1IExETUwuCisgICAgdmlydHVhbCBTdHJpbmcgbW9u
dGhGb3JtYXQoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRpbWUgZm9ybWF0IGluIFVuaWNvZGUg
VFIzNSBMRE1MWzFdIGNvbnRhaW5pbmcgaG91ciwgbWludXRlLCBhbmQKKyAgICAvLyBzZWNvbmQg
d2l0aCBvcHRpb25hbCBwZXJpb2QoQU0vUE0pLCBlLmcuICJoOm1tOnNzIGEiCisgICAgLy8gWzFd
IExETUwgaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS8jRGF0ZV9Gb3JtYXRfUGF0dGVy
bnMKKyAgICB2aXJ0dWFsIFN0cmluZyB0aW1lRm9ybWF0KCkgPSAwOworCisgICAgLy8gUmV0dXJu
cyB0aW1lIGZvcm1hdCBpbiBVbmljb2RlIFRSMzUgTERNTCBjb250YWluaW5nIGhvdXIsIGFuZCBt
aW51dGUKKyAgICAvLyB3aXRoIG9wdGlvbmFsIHBlcmlvZChBTS9QTSksIGUuZy4gImg6bW0gYSIK
KyAgICAvLyBOb3RlOiBTb21lIHBsYXRmb3JtcyByZXR1cm4gc2FtZSB2YWx1ZSBhcyB0aW1lRm9y
bWF0KCkuCisgICAgdmlydHVhbCBTdHJpbmcgc2hvcnRUaW1lRm9ybWF0KCkgPSAwOworCisgICAg
Ly8gUmV0dXJucyBhIGRhdGUtdGltZSBmb3JtYXQgaW4gVW5pY29kZSBUUjM1IExETUwuIEl0IHNo
b3VsZCBoYXZlIGEgc2Vjb25kcworICAgIC8vIGZpZWxkLgorICAgIFN0cmluZyBkYXRlVGltZUZv
cm1hdFdpdGhTZWNvbmRzKCk7CisKKyAgICAvLyBSZXR1cm5zIGEgZGF0ZS10aW1lIGZvcm1hdCBp
biBVbmljb2RlIFRSMzUgTERNTC4gSXQgc2hvdWxkIGhhdmUgbm8gc2Vjb25kcworICAgIC8vIGZp
ZWxkLgorICAgIFN0cmluZyBkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCk7CisKKyAgICAv
LyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZyBvZiB3aGljaCBzaXplIGlzIDEyLiBUaGUgZmly
c3QgaXRlbSBpcyBhCisgICAgLy8gbG9jYWxpemVkIHN0cmluZyBvZiBKYW4gYW5kIHRoZSBsYXN0
IGl0ZW0gaXMgYSBsb2NhbGl6ZWQgc3RyaW5nIG9mCisgICAgLy8gRGVjLiBUaGVzZSBzdHJpbmdz
IHNob3VsZCBiZSBzaG9ydC4KKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9y
dE1vbnRoTGFiZWxzKCkgPSAwOworCisgICAgLy8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmcg
b2Ygd2hpY2ggc2l6ZSBpcyAxMi4gVGhlIGZpcnN0IGl0ZW0gaXMgYQorICAgIC8vIHN0YW5kLWFs
b25lIGxvY2FsaXplZCBzdHJpbmcgb2YgSmFudWFyeSBhbmQgdGhlIGxhc3QgaXRlbSBpcyBhCisg
ICAgLy8gc3RhbmQtYWxvbmUgbG9jYWxpemVkIHN0cmluZyBvZiBEZWNlbWJlci4gVGhlc2Ugc3Ry
aW5ncyBzaG91bGQgbm90IGJlCisgICAgLy8gYWJicmV2aWF0aW9ucy4KKyAgICB2aXJ0dWFsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMoKSA9IDA7CisKKyAgICAv
LyBTdGFuZC1hbG9uZSBtb250aCB2ZXJzaW9uIG9mIHNob3J0TW9udGhMYWJlbHMuCisgICAgdmly
dHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRTdGFuZEFsb25lTW9udGhMYWJlbHMoKSA9
IDA7CisKKyAgICAvLyBSZXR1cm5zIGxvY2FsaXplZCBwZXJpb2QgZmllbGQoQU0vUE0pIHN0cmlu
Z3MuCisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGltZUFNUE1MYWJlbHMoKSA9
IDA7CisjZW5kaWYKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpIHx8IEVOQUJMRShJTlBV
VF9NVUxUSVBMRV9GSUVMRFNfVUkpCisgICAgLy8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmcg
b2Ygd2hpY2ggc2l6ZSBpcyAxMi4gVGhlIGZpcnN0IGl0ZW0gaXMgYQorICAgIC8vIGxvY2FsaXpl
ZCBzdHJpbmcgb2YgSmFudWFyeSwgYW5kIHRoZSBsYXN0IGl0ZW0gaXMgYSBsb2NhbGl6ZWQgc3Ry
aW5nIG9mCisgICAgLy8gRGVjZW1iZXIuIFRoZXNlIHN0cmluZ3Mgc2hvdWxkIG5vdCBiZSBhYmJy
ZXZpYXRpb25zLgorICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1vbnRoTGFiZWxz
KCkgPSAwOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIC8vIFJl
dHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nIG9mIHdoaWNoIHNpemUgaXMgNy4gVGhlIGZpcnN0IGl0
ZW0gaXMgYQorICAgIC8vIGxvY2FsaXplZCBzaG9ydCBzdHJpbmcgb2YgTW9uZGF5LCBhbmQgdGhl
IGxhc3QgaXRlbSBpcyBhIGxvY2FsaXplZAorICAgIC8vIHNob3J0IHN0cmluZyBvZiBTYXR1cmRh
eS4gVGhlc2Ugc3RyaW5ncyBzaG91bGQgYmUgc2hvcnQuCisgICAgdmlydHVhbCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgd2Vla0RheVNob3J0TGFiZWxzKCkgPSAwOworCisgICAgLy8gVGhlIGZpcnN0
IGRheSBvZiBhIHdlZWsuIDAgaXMgU3VuZGF5LCBhbmQgNiBpcyBTYXR1cmRheS4KKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGZpcnN0RGF5T2ZXZWVrKCkgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcg
ZGF0ZUZvcm1hdFRleHQoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgcGVvcGxlIHVz
ZSByaWdodC10by1sZWZ0IHdyaXRpbmcgaW4gdGhlIGxvY2FsZSBmb3IgdGhpcworICAgIC8vIG9i
amVjdC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNSVEwoKSA9IDA7CisjZW5kaWYKKworICAgIC8vIFBh
cnNlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGRhdGUvdGltZSBzdHJpbmcgbG9jYWxp
emVkCisgICAgLy8gZm9yIHRoaXMgTG9jYWxpemVyIGxvY2FsZS4gSWYgdGhlIGlucHV0IHN0cmlu
ZyBpcyBub3QgdmFsaWQgb3IKKyAgICAvLyBhbiBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBv
cnQgbG9jYWxpemVkIGRhdGVzLCB0aGlzCisgICAgLy8gZnVuY3Rpb24gcmV0dXJucyBOYU4uIElm
IHRoZSBpbnB1dCBzdHJpbmcgaXMgdmFsaWQgdGhpcworICAgIC8vIGZ1bmN0aW9uIHJldHVybnMg
dGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MC0wMS0wMQorICAgIC8vIDAwOjAw
OjAwLjAwMCBVVEMuCisgICAgdmlydHVhbCBkb3VibGUgcGFyc2VEYXRlVGltZShjb25zdCBTdHJp
bmcmLCBEYXRlQ29tcG9uZW50czo6VHlwZSkgPSAwOworCisgICAgZW51bSBGb3JtYXRUeXBlIHsg
Rm9ybWF0VHlwZVVuc3BlY2lmaWVkLCBGb3JtYXRUeXBlU2hvcnQsIEZvcm1hdFR5cGVNZWRpdW0g
fTsKKworICAgIC8vIFNlcmlhbGl6ZXMgdGhlIHNwZWNpZmllZCBkYXRlIGludG8gYSBmb3JtYXR0
ZWQgZGF0ZSBzdHJpbmcgdG8KKyAgICAvLyBkaXNwbGF5IHRvIHRoZSB1c2VyLiBJZiBhbiBpbXBs
ZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQKKyAgICAvLyBsb2NhbGl6ZWQgZGF0ZXMgdGhlIGZ1
bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgorICAgIFN0cmluZyBmb3JtYXRE
YXRlVGltZShjb25zdCBEYXRlQ29tcG9uZW50cyYsIEZvcm1hdFR5cGUgPSBGb3JtYXRUeXBlVW5z
cGVjaWZpZWQpOworCisgICAgdmlydHVhbCB+TG9jYWxpemVyKCk7CisKK3Byb3RlY3RlZDoKKyAg
ICBlbnVtIHsKKyAgICAgICAgLy8gMC05IGZvciBkaWdpdHMuCisgICAgICAgIERlY2ltYWxTZXBh
cmF0b3JJbmRleCA9IDEwLAorICAgICAgICBHcm91cFNlcGFyYXRvckluZGV4ID0gMTEsCisgICAg
ICAgIERlY2ltYWxTeW1ib2xzU2l6ZQorICAgIH07CisKKyNpZiBFTkFCTEUoSU5QVVRfTVVMVElQ
TEVfRklFTERTX1VJKQorICAgIFN0cmluZyBtX2RhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHM7Cisg
ICAgU3RyaW5nIG1fZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kczsKKyNlbmRpZgorCisgICAg
TG9jYWxpemVyKCkgOiBtX2hhc0xvY2FsaXplckRhdGEoZmFsc2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplTG9jYWxpemVyRGF0YSgpID0gMDsKKyAgICB2b2lkIHNldExvY2FsaXpl
ckRhdGEoY29uc3QgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiYsIGNvbnN0IFN0
cmluZyYgcG9zaXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgcG9zaXRpdmVTdWZmaXgsIGNvbnN0
IFN0cmluZyYgbmVnYXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgbmVnYXRpdmVTdWZmaXgpOwor
Citwcml2YXRlOgorICAgIGJvb2wgZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29uc3QgU3Ry
aW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkJiBlbmRJbmRleCk7CisgICAgdW5zaWduZWQgbWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChj
b25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgcG9zaXRpb24pOworCisgICAgU3RyaW5nIG1f
ZGVjaW1hbFN5bWJvbHNbRGVjaW1hbFN5bWJvbHNTaXplXTsKKyAgICBTdHJpbmcgbV9wb3NpdGl2
ZVByZWZpeDsKKyAgICBTdHJpbmcgbV9wb3NpdGl2ZVN1ZmZpeDsKKyAgICBTdHJpbmcgbV9uZWdh
dGl2ZVByZWZpeDsKKyAgICBTdHJpbmcgbV9uZWdhdGl2ZVN1ZmZpeDsKKyAgICBib29sIG1faGFz
TG9jYWxpemVyRGF0YTsKK307CisKK2lubGluZSBQYXNzT3duUHRyPExvY2FsaXplcj4gTG9jYWxp
emVyOjpjcmVhdGVEZWZhdWx0KCkKK3sKKyAgICByZXR1cm4gTG9jYWxpemVyOjpjcmVhdGUoZGVm
YXVsdExhbmd1YWdlKCkpOworfQorCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKaW5kZXggMzA3MmRkNTJjYzQ3YTNiMTllYzJhODlhZDBi
ZTRkYzQ1ZGJjYmU3My4uZDhkYzdlOGEzMWMxOGY5MjAwZjhhZDI3YzFiZTQ0YmE2MTFiZDk4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKQEAgLTMx
LDcgKzMxLDcgQEAKICNpZm5kZWYgTG9jYWxlTWFjX2gKICNkZWZpbmUgTG9jYWxlTWFjX2gKIAot
I2luY2x1ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9D
b2xvckNob29zZXJVSUNvbnRyb2xsZXIuaAppbmRleCA0MGM4NzhiOGVjMDAxNmFmNmE3NWVmMGJk
NmI0ZGRjOGUzYjRkM2JiLi44OWNkMWE2YjdiNDEwNzFmZGFhYzc3NWM0NGI0ODRkNDA4YzU1ZGU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJVSUNv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db2xvckNob29zZXJV
SUNvbnRyb2xsZXIuaApAQCAtMjksOCArMjksOCBAQAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogCiAjaW5jbHVkZSAiQ29sb3JDaG9vc2VyLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgi
CiAjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUu
aCIKICNpbmNsdWRlICJXZWJDb2xvckNob29zZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAKaW5kZXggMjAwNDRhZGQ4YjQz
YTJmZmZkNjNiMjkxOGJhZTE0NTM5OTAxMTJiMy4uMTNiYTYyZWI0NTM3OTQwNGJjNmYwMzI2ZWI2
MDQ4ZDAzODk4ODc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0
ZVRpbWVDaG9vc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0
ZVRpbWVDaG9vc2VySW1wbC5jcHAKQEAgLTQwLDkgKzQwLDkgQEAKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgi
Ci0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJQaWNrZXJDb21tb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKICNpbmNsdWRl
IDxwdWJsaWMvUGxhdGZvcm0uaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171158</attachid>
            <date>2012-10-28 22:30:08 -0700</date>
            <delta_ts>2012-10-29 00:01:45 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-100627-20121029142835.patch</filename>
            <type>text/plain</type>
            <size>64094</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I0NTRiOGMxYzQ3NmFm
NTFlNWQ4NDFiN2NhYjZjZDkzZWU5ZTNhZC4uNzI5NDNjZWRhM2QwZGY2MWU0ZmE0OGYyZTQzNWEz
ZGJjNWU3ODE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEwLTI4ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxpemVy
LntjcHAsaH0gdG8gUGxhdGZvcm1Mb2NhbGUue2NwcCxofQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UnZCBsaWtlIHRvIHJlbmFtZSBMb2NhbGl6ZXIg
Y2xhc3MgdG8gTG9jYWxlIGNsYXNzLiBIb3dldmVyIHdlIHVzZQorICAgICAgICBQbGF0Zm9ybUxv
Y2FsLmNwcCBhbmQgUGxhdGZvcm1Mb2NhbGUuaCBhcyB0aGVpciBmaWxlIG5hbWVzIGJlY2F1c2UK
KyAgICAgICAgPGxvY2FsZS5oPiBleGlzdHMgaW4gdGhlIEMgc3RhbmRhcmQuICBJbiB0aGlzIHBh
dGNoLCB3ZSByZW5hbWUgb25seSBmaWxlCisgICAgICAgIG5hbWVzLiBXZSdyZSBnb2luZyB0byBy
ZW5hbWUgdGhlIGNsYXNzIG5hbWUgbGF0ZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlz
IGRvZXNuJ3QgbWFrZSBhbnkgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9QbGF0Zm9ybUxvY2FsZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Mb2NhbGl6ZXIuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9j
YWxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxp
emVyLmNwcC4KKyAgICAgICAgRm9sbG93IHRoZSBMb2NhbGl6ZXIuaCAtPiBQbGF0Zm9ybUxvY2Fs
ZS5jcHAgcmVuYW1pbmcuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogRm9sbG93IHRoZSBm
aWxlIG5hbWUgcmVuYW1pbmcuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8u
CisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5jcHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvQmFzZU11bHRpcGxlRmll
bGRzRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0RhdGVJ
bnB1dFR5cGUuY3BwOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNw
cDogRGl0dG8uCisgICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDogRGl0
dG8uCisgICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6IERpdHRvLgorICAgICAgICAq
IGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcDogRGl0dG8uCisgICAgICAgICogaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0RWxl
bWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0Zp
ZWxkRWxlbWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHBhZ2UvUGFnZVBvcHVwQ29udHJvbGxl
ci5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmg6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHA6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvTG9jYWxlV2luLmg6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvbWFjL0xvY2FsZU1hYy5oOiBEaXR0by4KKwogMjAxMi0xMC0yOCAgU2hpbnlhIEthd2Fu
YWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGhlIHNoYWRvdyBlbGVtZW50
IGlzIG5vdCByZXByb2plY3RlZCB0byBhIG5lc3RlZCBTaGFkb3dSb290LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBhMDMzYmU1MzI2Y2UyYjgxNWFkYjczYmJmNTM3OTVjNzdiMzc3MzI1
Li40ZGExMDg2MjMwYWQ4YWNhNDg5ZjUyM2E2NTQ2Mzk4NTFkZDUyNGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTI4ICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgTG9jYWxpemVyLntjcHAsaH0g
dG8gUGxhdGZvcm1Mb2NhbGUue2NwcCxofQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzcmMvQ29sb3JDaG9vc2VyVUlDb250cm9sbGVyLmg6IEZvbGxv
dyB0aGUgZmlsZSBuYW1lIHJlbmFtaW5nLgorICAgICAgICAqIHNyYy9EYXRlVGltZUNob29zZXJJ
bXBsLmNwcDogRGl0dG8uCisKIDIwMTItMTAtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpbmQtaW4tcGFnZSByZXBvcnRzIG1hdGNoZXMg
aW4gaGlkZGVuIGlmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODdmN2NhZDU1ZjczZGI2
OGIwYjNiZWM5MTA4Y2I0M2VhYjQ4Zjk0NC4uOTFiOWVkZDU4YmFlMDE1NGY1ZWNhNGQ1MjZhMWNh
MmQ1ZGZkNzdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMjAsNyArMjAyMCw3IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwCiAgICAg
cGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcAogICAgIHBsYXRmb3JtL3RleHQvTG9jYWxlVG9T
Y3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAKLSAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAK
KyAgICBwbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQv
UXVvdGVkUHJpbnRhYmxlLmNwcAogICAgIHBsYXRmb3JtL3RleHQvUmVndWxhckV4cHJlc3Npb24u
Y3BwCiAgICAgcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCAzOWUzN2I2ZGVjN2MxM2JkZjU3NmQ5OTE5MWE5N2NlY2QwNGE4
YTcwLi4xYTA1YTA5YzM4Nzg5MWJjN2I1ZWVhOGNhYWMxN2Q1Mzc0MmY4NTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ4NTAsOSArNDg1MCw5IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1BhcnNlclV0aWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9QbGF0Zm9ybUxvY2FsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1F1
b3RlZFByaW50YWJsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUXVvdGVk
UHJpbnRhYmxlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUmVndWxhckV4cHJl
c3Npb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDRjZThmMTFjNjIwYWRhZDg1NTIyZmJkYmJiYzk5
YjZiNjk1MjAzYWEuLjJhZTUwMjI5NjJiNjUzYTE1YTI3NjhjYWM0OGQ3M2RhMjc4YTMyOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQpAQCAtOTMzLDcgKzkzMyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3Jt
L3RleHQvSHlwaGVuYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3Bw
IFwKICAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIFwK
LSAgICBwbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAgXAorICAgIHBsYXRmb3JtL3RleHQvUGxh
dGZvcm1Mb2NhbGUuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1F1b3RlZFByaW50YWJsZS5jcHAg
XAogICAgIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIFwKICAgICBwbGF0Zm9ybS9DbG9j
ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGI5MjA0MTMyMDMyMmU4MzlkNDIxOGVkNWNkYTYz
MGNjZTgyOWNhNjIuLjE5MzkwYjZlMzY3MjI1ODcyMjNiODYyMDgwN2FiZTFjZWU3ZThkNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTU3MjUsOSArNTcyNSw5IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmdJQ1UuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS90ZXh0L0xvY2FsZVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9j
YWxlV2luLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZXIuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vdGV4dC9QYXJzZXJVdGlsaXRpZXMuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybUxvY2FsZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvUGxhdGZv
cm1Mb2NhbGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9RdW90ZWRQcmludGFibGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZhOGRiZmE5NjIy
MmU3Y2MxODY3YWI1YzFmYjQzZTJhNjliNGYyMDcuLjlhYmM0OTA1NDFhMjk1MTM4MjY2Zjc2ZGE5
NTE3ZGY3MTY1OGZjMjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0zMzcxMCwxNSArMzM3MTAsMTUgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcTG9jYWxpemVy
LmNwcCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFBhcnNlclV0aWxpdGll
cy5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cdGV4dFxMb2NhbGl6ZXIuaCIKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVx0ZXh0XFBsYXRmb3JtTG9jYWxlLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcUGFyc2VyVXRpbGl0aWVz
LmgiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxQbGF0Zm9ybUxvY2FsZS5o
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTZjZWRlYzI1NTU2ZmI1MTU5
YjI0YTkwNzhlZDM4MGZhN2FjMzVmZi4uNTM4ZDNmODQ0ZTRiZWI2YzQ5Y2Q5Y2VjNzlkZTQ3NWMy
MjA4NWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjI2Niw4ICs2MjY2LDggQEAKIAkJRjUxMjJDOTAxNTQ3RkExQjAwMjhB
OTNCIC8qIFBhZ2VQb3B1cERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjUxMjJDOEYxNTQ3RkExQjAwMjhBOTNCIC8qIFBhZ2VQb3B1cERyaXZl
ci5oICovOyB9OwogCQlGNTEzQTNFQTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oICov
OyB9OwogCQlGNTJBRDVFNDE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGllbnRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MkFENUUzMTUzNDI0
NUYwMDU5RkJFNiAvKiBFbXB0eUNsaWVudHMuY3BwICovOyB9OwotCQlGNTQ0Rjc4ODE1Q0ZCMkE4
MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY1NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBMb2NhbGl6ZXIuY3Bw
ICovOyB9OwotCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NzE1Q0ZCMkE4
MDBBRjMzQTggLyogTG9jYWxpemVyLmggKi87IH07CisJCUY1NDRGNzg4MTVDRkIyQTgwMEFGMzNB
OCAvKiBQbGF0Zm9ybUxvY2FsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUu
Y3BwICovOyB9OworCQlGNTQ0Rjc4OTE1Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1NDRGNzg3
MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oICovOyB9OwogCQlGNTVCM0RBRDEy
NTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8q
IEJhc2VUZXh0SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJRjU1QjNEQUUxMjUxRjEyRDAwM0VGMjY5
IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTVCM0Q3QTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5
cGUuaCAqLzsgfTsKIAkJRjU1QjNEQUYxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTVC
M0Q3QjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCAqLzsgfTsKQEAgLTEz
NzAzLDggKzEzNzAzLDggQEAKIAkJRjUyM0QzMDMwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCUY1MjNEMzA0MDJERTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYW5nZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUy
QUQ1RTMxNTM0MjQ1RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbXB0eUNsaWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGNTQ0Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvY2FsaXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY1NDRGNzg3MTVDRkIyQTgwMEFGMzNBOCAvKiBMb2Nh
bGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxpemVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBQ
bGF0Zm9ybUxvY2FsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
bGF0Zm9ybUxvY2FsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY1NDRGNzg3
MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUxvY2FsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNTVCM0Q3OTEyNTFGMTJEMDAzRUYyNjkgLyogQmFzZVRleHRJbnB1dFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZVRleHRJbnB1dFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTVCM0Q3QTEyNTFGMTJEMDAzRUYyNjkg
LyogQmFzZVRleHRJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmFzZVRleHRJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU1QjNE
N0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdXR0b25JbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjAwOTUsOSArMjAwOTUsOSBAQAogCQkJCTg5QjVFQUEwMTFFODAw
M0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8sCiAJCQkJNzYzM0E3MjQxM0Q4QjMzQTAwODUw
MUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovLAogCQkJCTc2MzNBNzI1MTNEOEIzM0Ew
MDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmdEZWZhdWx0LmNwcCAqLywKLQkJCQlGNTQ0
Rjc4NjE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNwcCAqLywKLQkJCQlGNTQ0Rjc4NzE1
Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmggKi8sCiAJCQkJQkM3NkFDMTEwREQ3QUQ1QzAw
NDE1RjM0IC8qIFBhcnNlclV0aWxpdGllcy5oICovLAorCQkJCUY1NDRGNzg2MTVDRkIyQTgwMEFG
MzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5jcHAgKi8sCisJCQkJRjU0NEY3ODcxNUNGQjJBODAwQUYz
M0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggKi8sCiAJCQkJMzc5RTM3MTQxMzczNkE2NjAwQjlFOTE5
IC8qIFF1b3RlZFByaW50YWJsZS5jcHAgKi8sCiAJCQkJMzc5RTM3MTUxMzczNkE2NjAwQjlFOTE5
IC8qIFF1b3RlZFByaW50YWJsZS5oICovLAogCQkJCUIyQzNEOUZDMEQwMDZDMUQwMEVGNkYyNiAv
KiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgKi8sCkBAIC0yNDUwNiw3ICsyNDUwNiw2IEBACiAJCQkJ
NzYzM0E3MjYxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODk4Nzg1NjgxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3Rl
bS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1MjA3QkUwOUJENDEwQTAwRjIwMzhEIC8qIExvY2Fs
aXplZFN0cmluZ3MuaCBpbiBIZWFkZXJzICovLAotCQkJCUY1NDRGNzg5MTVDRkIyQTgwMEFGMzNB
OCAvKiBMb2NhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTFDNDFCMEQ5ODI5ODAwMDNC
MDJGMiAvKiBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgyMzlFMDEwOUIzQ0Y4QTAw
QjYwNjQxIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzQxMEFEQkE1REUw
MEE0NTU0RCAvKiBNYWluUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ2OTcs
NiArMjQ2OTYsNyBAQAogCQkJCTQ5MTgyQjUzMTVEQ0U2RjAwMDU0ODQxOCAvKiBQbGF0Zm9ybUlu
c3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZB
QUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5
NjExNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY1NDRGNzg5MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEY3QjRBNjYxNUZGNkQ2QTAwNkI1RjIyIC8qIFBsYXRmb3JtTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzI4NzFDMDBCMjBERUI3MDA0OTAzNUEg
LyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkY3MDEw
MEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzgzNSw3ICsyNzgzNSw2IEBACiAJCQkJODk4Nzg1NjcxMjJDQTA2NDAwM0FB
QkRBIC8qIExvY2FsRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDQ2RTFBQzEy
MDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzI1QjUyQTEzMUM2RDM5MDAxODBFMTAgLyogTG9jYWxpemVkU3RyaW5nc01hYy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlGNTQ0Rjc4ODE1Q0ZCMkE4MDBBRjMzQTggLyogTG9jYWxpemVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTFDNDFDMEQ5ODI5ODEwMDNCMDJGMiAvKiBMb2NhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODIzOUUwMDA5QjNDRjhBMDBCNjA2NDEgLyogTG9n
Z2luZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAyNjQ1RTBBRkRDMTlCMDA1OTE5RTIgLyog
TG9nZ2luZ01hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjc5OTMsNiArMjc5OTIsNyBAQAogCQkJ
CUJDNUM3NjJBMTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50RmFjdG9y
eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5MTgyQjUyMTVEQ0U2RjAwMDU0ODQxOCAvKiBQ
bGF0Zm9ybUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTQ0Rjc4ODE1
Q0ZCMkE4MDBBRjMzQTggLyogUGxhdGZvcm1Mb2NhbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEYxRDExQkYxNUZGMzcyMDAwMjZFOTA4IC8qIFBsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxQkY3MDBGMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTk4OTAyRTE0
RTlCMEY4MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyZjAxMWE0ZGY2YzhjYzBjZjk5N2EzYWRiZDI0
MDYyOTlmZTMxNjY5Li4zNWRmYzJiZGY1ZjViYjBlODM0YmVmNjRhMzU3YjA2ZWU2MGRhM2MyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQAogI2luY2x1ZGUgIklu
c3BlY3RvckNvdW50ZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFRdWVyeUxpc3QuaCIKQEAgLTEyNSw2ICsxMjQsNyBAQAogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1
ZGUgIlBsdWdpbkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDQ0YzNhODNkN2M4ZDk5N2I1NDg1NDIx
ODg3MjhhMjdlZmU3NzQwN2UuLjA5ZTQ2OTRhNzI2YjA4MDkzN2QzNGVkN2ViNmRlOGE2OTg3NWVj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1
ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9EYXRl
TWF0aC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlTXVsdGlwbGVGaWVs
ZHNEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0
aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBkYTQ4MzRhMjVmOGE4ZjI1
ZmIxMjgxYTI5YjQwY2YzZWRhZTU5NGFjLi43MWVkZDU5ZjY2ZTM0OGNiYTZhNzExNzdmOThiYzA2
MmFjNWU3NGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VNdWx0aXBsZUZp
ZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VNdWx0aXBsZUZpZWxkc0RhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtNDEsOSArNDEsOSBA
QAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxl
bWVudC5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGlja2VySW5kaWNhdG9yRWxlbWVudC5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCAxZmY1OTMyOWFkNDQxNmFjZWMwMmEw
ZjM5YzVkNDNhNzFhMWZlZThmLi44M2NkNjRjZTViNTMzYmQ5NjZjODc1YjJiMTliNzNjM2M1ZDUx
MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTM5LDggKzM5LDgg
QEAKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgi
CiAjaW5jbHVkZSAiUGlja2VySW5kaWNhdG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
TG9jYWxlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBjNGMw
NDczYmFlM2UzN2I3OGY5NWE0NzdhYTgwYWRkZjIxN2I1YzI3Li5lOTRiOWYyYWE0Y2ZkNzdhZjRl
MTlmMTcwYjQwOGYzN2UwNDBkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2lmIEVOQUJMRShJTlBVVF9NVUxUSVBMRV9G
SUVMRFNfVUkpCiAjaW5jbHVkZSAiRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oIgogI2luY2x1ZGUgIkxv
Y2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggYjBjYjk1YThmZDU2MmU3OTRiZGNh
MzZmMzUzMDQwYmI3YzM1NjUzMi4uZDc5YzEwMzJkYTJlZTA4NDc4MzNhMzY2YzgxZGJhNDI0Y2I1
ZDcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUu
Y3BwCkBAIC00Miw3ICs0Miw3IEBACiAjaWYgRU5BQkxFKElOUFVUX01VTFRJUExFX0ZJRUxEU19V
SSkKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkc1N0YXRlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9j
YWxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01vbnRoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5
cGUuY3BwCmluZGV4IDliYjJmOWFlZmFiMDdjNGU4ZGIzNjY5MDc0NjcyZjJlNTExMGI0NWIuLmE2
YzU2YTM3N2RiYWM2YTJmOTJiOTc5M2UzZjc5NzdkNmRkYzM1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTW9udGhJbnB1dFR5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaWYgRU5BQkxFKElOUFVU
X01VTFRJUExFX0ZJRUxEU19VSSkKICNpbmNsdWRlICJEYXRlVGltZUZpZWxkc1N0YXRlLmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDMw
NmJmOGZiNjQwOWNjZWQ4YTFlNDdlMDQ4YjAxOWI4MjgwOThjYjcuLjkxY2ZhNDA5ZjEyY2ZjNjZk
ZTQ1NGRkMDEwMDlhNTU4MmRkOWU2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
Ci0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDx3dGYvQVNDSUlDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5k
ZXggNzg5Y2QzZmVlZDY4NGNjNzgzYzM0MzNiNTdiZjFiZmNmM2JiMjEzNy4uZTg2MzNmZWJiNjYz
ZTFkMTliODcyYWMyZDI2OGM4Mzc4NjFiYTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1
dFR5cGUuY3BwCkBAIC00NCw3ICs0NCw3IEBACiAKICNpZiBFTkFCTEUoSU5QVVRfTVVMVElQTEVf
RklFTERTX1VJKQogI2luY2x1ZGUgIkRhdGVUaW1lRmllbGRzU3RhdGUuaCIKLSNpbmNsdWRlICJM
b2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRWRpdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvRGF0ZVRpbWVFZGl0RWxlbWVudC5jcHAKaW5kZXggMDBlNDBkZjY4ZjZmMjI5NDI2YTc1
ZGI0MTZhOWZiNzE2MWIwNzNjMy4uOTI3NThhZTU5NTVlYWZkNjFiN2RjNmVkY2IyN2I2MGMxMmVi
NTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVFZGl0
RWxlbWVudC5jcHAKQEAgLTM1LDggKzM1LDggQEAKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCi0jaW5j
bHVkZSAiTG9jYWxpemVyLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0
aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQu
Y3BwCmluZGV4IGY4NDNmYTYzMDMwYjVkNzUxOTA5NGYwZTRhM2UzYmNiOTAwNjc3YTAuLmU5NDJi
NDA2MGViNDU2NjM2ZWViYTZmN2QwMWQ4NmFkMDdmMWJjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNw
cApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtTG9jYWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVBvcHVwQ29udHJvbGxlci5jcHAKaW5kZXggMjExMjFhMzZiOWFjNjIxN2I1NGQ2MGQyYTVhYjBl
YTE3NzI3ODQ3NC4uOTEzYTJmOGI0Y2QyMDg2YmU0OTY4ZjNjMzU4MTgyNmE0YTBjNTIyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUG9wdXBDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQb3B1cENvbnRyb2xsZXIuY3BwCkBAIC0zMiw4ICsz
Miw4IEBACiAjaW5jbHVkZSAiUGFnZVBvcHVwQ29udHJvbGxlci5oIgogCiAjaWYgRU5BQkxFKFBB
R0VfUE9QVVApCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCiAjaW5jbHVkZSAiUGFnZVBvcHVwQ2xp
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaAppbmRleCBiNTU4NTNk
MTcxNTFlMGE1YzgyMzljYTA1NGZkNzJhZDAzNGViZmMxLi45ZjQ4ZDk2NzllOTAzODc5ZTZlNGI1
NWM2NmI5NDgwODkwYzU2MzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0xvY2FsZUlDVS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxl
SUNVLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgTG9jYWxlSUNVX2gKIAogI2luY2x1ZGUg
IkRhdGVDb21wb25lbnRzLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNpbmNsdWRlIDx1bmlj
b2RlL3VudW0uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKaW5kZXggODIxNzJiMjQ1YWFiNTQwZWJkNjE5NTY1
ZGU0ZmNiNzUyYjYxMDc5OC4uNTU0NWIzYmM1Y2Q3ZDRjODdhOGFiMjBkZWFmOTViNTY4ZjUyYjJi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2Fs
aXplci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGVN
YXRoLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvTG9jYWxlV2luLmgKaW5kZXggMjQyMmZiZjlmYTExZDJjYWM3MTgyYTBkYTM4ZTdl
ZDBiOWViMmY0OC4uMTg4OTI5NmFiMjNiYjliZmY1ZGM5MDk3ZDFkYjk4MjNjODQxMGE5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVXaW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVdpbi5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIExvY2FsZVdpbl9oCiAjZGVmaW5lIExvY2FsZVdpbl9oCiAKLSNpbmNsdWRlICJM
b2NhbGl6ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHdpbmRv
d3MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2NjNDJmM2I4YTEwOTU1N2I0NWNiOTBlYTgzYmE4Njc5ZDIzM2Rj
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwz
NjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwyMDEyIEdvb2dsZSBJbmMuIEFs
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
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkxvY2FsaXplci5o
IgotCi0jaW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotI2lmIEVOQUJMRShJTlBVVF9N
VUxUSVBMRV9GSUVMRFNfVUkpCi0KLWNsYXNzIERhdGVUaW1lU3RyaW5nQnVpbGRlciA6IHByaXZh
dGUgRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGF0ZVRpbWVTdHJpbmdCdWlsZGVyKTsKLQotcHVibGljOgotICAgIC8vIFRoZSBhcmd1bWVu
dCBvYmplY3RzIG11c3QgYmUgYWxpdmUgdW50aWwgdGhpcyBvYmplY3QgZGllcy4KLSAgICBEYXRl
VGltZVN0cmluZ0J1aWxkZXIoTG9jYWxpemVyJiwgY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKLQot
ICAgIGJvb2wgYnVpbGQoY29uc3QgU3RyaW5nJik7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKCk7Ci0K
LXByaXZhdGU6Ci0gICAgLy8gRGF0ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciBmdW5jdGlvbnMu
Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwg
aW50KSBPVkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFIEZJTkFMOwotCi0gICAgU3RyaW5nIHplcm9QYWRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgc2l6ZV90IHdpZHRoKTsKLSAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVt
YmVyLCBzaXplX3Qgd2lkdGgpOwotCi0gICAgU3RyaW5nQnVpbGRlciBtX2J1aWxkZXI7Ci0gICAg
TG9jYWxpemVyJiBtX2xvY2FsaXplcjsKLSAgICBjb25zdCBEYXRlQ29tcG9uZW50cyYgbV9kYXRl
OwotfTsKLQotRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjpEYXRlVGltZVN0cmluZ0J1aWxkZXIoTG9j
YWxpemVyJiBsb2NhbGl6ZXIsIGNvbnN0IERhdGVDb21wb25lbnRzJiBkYXRlKQotICAgIDogbV9s
b2NhbGl6ZXIobG9jYWxpemVyKQotICAgICwgbV9kYXRlKGRhdGUpCi17Ci19Ci0KLWJvb2wgRGF0
ZVRpbWVTdHJpbmdCdWlsZGVyOjpidWlsZChjb25zdCBTdHJpbmcmIGZvcm1hdFN0cmluZykKLXsK
LSAgICBtX2J1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGZvcm1hdFN0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIERhdGVUaW1lRm9ybWF0OjpwYXJzZShmb3JtYXRTdHJpbmcsICp0aGlzKTsKLX0K
LQotU3RyaW5nIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6emVyb1BhZFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgc2l6ZV90IHdpZHRoKQotewotICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPj0g
d2lkdGgpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgU3RyaW5nQnVpbGRlciB6ZXJvUGFk
ZGVkU3RyaW5nQnVpbGRlcjsKLSAgICB6ZXJvUGFkZGVkU3RyaW5nQnVpbGRlci5yZXNlcnZlQ2Fw
YWNpdHkod2lkdGgpOwotICAgIGZvciAoc2l6ZV90IGkgPSBzdHJpbmcubGVuZ3RoKCk7IGkgPCB3
aWR0aDsgKytpKQotICAgICAgICB6ZXJvUGFkZGVkU3RyaW5nQnVpbGRlci5hcHBlbmQoIjAiKTsK
LSAgICB6ZXJvUGFkZGVkU3RyaW5nQnVpbGRlci5hcHBlbmQoc3RyaW5nKTsKLSAgICByZXR1cm4g
emVyb1BhZGRlZFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotdm9pZCBEYXRlVGltZVN0
cmluZ0J1aWxkZXI6OmFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qgd2lkdGgpCi17Ci0g
ICAgU3RyaW5nIHplcm9QYWRkZWROdW1iZXJTdHJpbmcgPSB6ZXJvUGFkU3RyaW5nKFN0cmluZzo6
bnVtYmVyKG51bWJlciksIHdpZHRoKTsKLSAgICBtX2J1aWxkZXIuYXBwZW5kKG1fbG9jYWxpemVy
LmNvbnZlcnRUb0xvY2FsaXplZE51bWJlcih6ZXJvUGFkZGVkTnVtYmVyU3RyaW5nKSk7Ci19Ci0K
LXZvaWQgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp2aXNpdEZpZWxkKERhdGVUaW1lRm9ybWF0OjpG
aWVsZFR5cGUgZmllbGRUeXBlLCBpbnQgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycykKLXsKLSAg
ICBzd2l0Y2ggKGZpZWxkVHlwZSkgewotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZVllYXI6Ci0gICAgICAgIC8vIEFsd2F5cyB1c2UgcGFkZGluZyB3aWR0aCBvZiA0IHNvIGl0IG1h
dGNoZXMgRGF0ZVRpbWVFZGl0RWxlbWVudC4KLSAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5m
dWxsWWVhcigpLCA0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6
OkZpZWxkVHlwZU1vbnRoOgotICAgICAgICAvLyBBbHdheXMgdXNlIHBhZGRpbmcgd2lkdGggb2Yg
MiBzbyBpdCBtYXRjaGVzIERhdGVUaW1lRWRpdEVsZW1lbnQuCi0gICAgICAgIGFwcGVuZE51bWJl
cihtX2RhdGUubW9udGgoKSArIDEsIDIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBEYXRl
VGltZUZvcm1hdDo6RmllbGRUeXBlRGF5T2ZNb250aDoKLSAgICAgICAgLy8gQWx3YXlzIHVzZSBw
YWRkaW5nIHdpZHRoIG9mIDIgc28gaXQgbWF0Y2hlcyBEYXRlVGltZUVkaXRFbGVtZW50LgotICAg
ICAgICBhcHBlbmROdW1iZXIobV9kYXRlLm1vbnRoRGF5KCksIDIpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlUGVyaW9kOgotICAgICAgICBtX2J1
aWxkZXIuYXBwZW5kKG1fbG9jYWxpemVyLnRpbWVBTVBNTGFiZWxzKClbKG1fZGF0ZS5ob3VyKCkg
Pj0gMTIgPyAxIDogMCldKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRGF0ZVRpbWVGb3Jt
YXQ6OkZpZWxkVHlwZUhvdXIxMjogewotICAgICAgICBpbnQgaG91cjEyID0gbV9kYXRlLmhvdXIo
KSAlIDEyOwotICAgICAgICBpZiAoIWhvdXIxMikKLSAgICAgICAgICAgIGhvdXIxMiA9IDEyOwot
ICAgICAgICBhcHBlbmROdW1iZXIoaG91cjEyLCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5
cGVIb3VyMjM6Ci0gICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUuaG91cigpLCBudW1iZXJPZlBh
dHRlcm5DaGFyYWN0ZXJzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgRGF0ZVRpbWVGb3Jt
YXQ6OkZpZWxkVHlwZUhvdXIxMToKLSAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5ob3VyKCkg
JSAxMiwgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycyk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVIb3VyMjQ6IHsKLSAgICAgICAgaW50IGhvdXIy
NCA9IG1fZGF0ZS5ob3VyKCk7Ci0gICAgICAgIGlmICghaG91cjI0KQotICAgICAgICAgICAgaG91
cjI0ID0gMjQ7Ci0gICAgICAgIGFwcGVuZE51bWJlcihob3VyMjQsIG51bWJlck9mUGF0dGVybkNo
YXJhY3RlcnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgRGF0ZVRpbWVGb3Jt
YXQ6OkZpZWxkVHlwZU1pbnV0ZToKLSAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5taW51dGUo
KSwgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVycyk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVTZWNvbmQ6Ci0gICAgICAgIGlmICghbV9kYXRlLm1p
bGxpc2Vjb25kKCkpCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLnNlY29uZCgpLCBu
dW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBk
b3VibGUgc2Vjb25kID0gbV9kYXRlLnNlY29uZCgpICsgbV9kYXRlLm1pbGxpc2Vjb25kKCkgLyAx
MDAwLjA7Ci0gICAgICAgICAgICBTdHJpbmcgemVyb1BhZGRlZFNlY29uZFN0cmluZyA9IHplcm9Q
YWRTdHJpbmcoU3RyaW5nOjpmb3JtYXQoIiUuMDNmIiwgc2Vjb25kKSwgbnVtYmVyT2ZQYXR0ZXJu
Q2hhcmFjdGVycyArIDQpOwotICAgICAgICAgICAgbV9idWlsZGVyLmFwcGVuZChtX2xvY2FsaXpl
ci5jb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoemVyb1BhZGRlZFNlY29uZFN0cmluZykpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dmlzaXRMaXRlcmFsKGNvbnN0
IFN0cmluZyYgdGV4dCkKLXsKLSAgICBBU1NFUlQodGV4dC5sZW5ndGgoKSk7Ci0gICAgbV9idWls
ZGVyLmFwcGVuZCh0ZXh0KTsKLX0KLQotU3RyaW5nIERhdGVUaW1lU3RyaW5nQnVpbGRlcjo6dG9T
dHJpbmcoKQotewotICAgIHJldHVybiBtX2J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotI2VuZGlm
Ci0KLUxvY2FsaXplcjo6fkxvY2FsaXplcigpCi17Ci19Ci0KLXZvaWQgTG9jYWxpemVyOjpzZXRM
b2NhbGl6ZXJEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmcsIERlY2ltYWxTeW1ib2xzU2l6ZT4mIHN5
bWJvbHMsIGNvbnN0IFN0cmluZyYgcG9zaXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgcG9zaXRp
dmVTdWZmaXgsIGNvbnN0IFN0cmluZyYgbmVnYXRpdmVQcmVmaXgsIGNvbnN0IFN0cmluZyYgbmVn
YXRpdmVTdWZmaXgpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzeW1ib2xzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIEFTU0VSVCghc3ltYm9sc1tpXS5pc0VtcHR5KCkpOwotICAgICAg
ICBtX2RlY2ltYWxTeW1ib2xzW2ldID0gc3ltYm9sc1tpXTsKLSAgICB9Ci0gICAgbV9wb3NpdGl2
ZVByZWZpeCA9IHBvc2l0aXZlUHJlZml4OwotICAgIG1fcG9zaXRpdmVTdWZmaXggPSBwb3NpdGl2
ZVN1ZmZpeDsKLSAgICBtX25lZ2F0aXZlUHJlZml4ID0gbmVnYXRpdmVQcmVmaXg7Ci0gICAgbV9u
ZWdhdGl2ZVN1ZmZpeCA9IG5lZ2F0aXZlU3VmZml4OwotICAgIEFTU0VSVCghbV9wb3NpdGl2ZVBy
ZWZpeC5pc0VtcHR5KCkgfHwgIW1fcG9zaXRpdmVTdWZmaXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0
aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9uZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5KCkpOwotICAg
IG1faGFzTG9jYWxpemVyRGF0YSA9IHRydWU7Ci19Ci0KLVN0cmluZyBMb2NhbGl6ZXI6OmNvbnZl
cnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmIGlucHV0KQotewotICAgIGluaXRpYWxp
emVMb2NhbGl6ZXJEYXRhKCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsK
LSAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
Ci0gICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoaW5wdXQubGVuZ3RoKCkpOwotCi0gICAgaWYg
KGlucHV0WzBdID09ICctJykgewotICAgICAgICArK2k7Ci0gICAgICAgIGlzTmVnYXRpdmUgPSB0
cnVlOwotICAgICAgICBidWlsZGVyLmFwcGVuZChtX25lZ2F0aXZlUHJlZml4KTsKLSAgICB9IGVs
c2UKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9wb3NpdGl2ZVByZWZpeCk7Ci0KLSAgICBmb3Ig
KDsgaSA8IGlucHV0Lmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgc3dpdGNoIChpbnB1dFtpXSkg
ewotICAgICAgICBjYXNlICcwJzoKLSAgICAgICAgY2FzZSAnMSc6Ci0gICAgICAgIGNhc2UgJzIn
OgotICAgICAgICBjYXNlICczJzoKLSAgICAgICAgY2FzZSAnNCc6Ci0gICAgICAgIGNhc2UgJzUn
OgotICAgICAgICBjYXNlICc2JzoKLSAgICAgICAgY2FzZSAnNyc6Ci0gICAgICAgIGNhc2UgJzgn
OgotICAgICAgICBjYXNlICc5JzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZGVjaW1h
bFN5bWJvbHNbaW5wdXRbaV0gLSAnMCddKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlICcuJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fZGVjaW1hbFN5bWJvbHNbRGVj
aW1hbFNlcGFyYXRvckluZGV4XSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgYnVpbGRlci5hcHBlbmQoaXNOZWdhdGl2ZSA/IG1fbmVnYXRpdmVTdWZmaXggOiBtX3Bv
c2l0aXZlU3VmZml4KTsKLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0
YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBwb3NpdGlvbiwg
Y29uc3QgU3RyaW5nJiBwYXJ0KQotewotICAgIGlmIChwYXJ0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHBvc2l0aW9uICsgcGFydC5sZW5ndGgoKSA+IHRleHQubGVu
Z3RoKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcGFydC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIGlmICh0ZXh0W3Bvc2l0aW9uICsgaV0g
IT0gcGFydFtpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgTG9jYWxpemVyOjpkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShj
b25zdCBTdHJpbmcmIGlucHV0LCBib29sJiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRl
eCwgdW5zaWduZWQmIGVuZEluZGV4KQotewotICAgIHN0YXJ0SW5kZXggPSAwOwotICAgIGVuZElu
ZGV4ID0gaW5wdXQubGVuZ3RoKCk7Ci0gICAgaWYgKG1fbmVnYXRpdmVQcmVmaXguaXNFbXB0eSgp
ICYmIG1fbmVnYXRpdmVTdWZmaXguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChpbnB1dC5zdGFy
dHNXaXRoKG1fcG9zaXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZm
aXgpKSB7Ci0gICAgICAgICAgICBpc05lZ2F0aXZlID0gZmFsc2U7Ci0gICAgICAgICAgICBzdGFy
dEluZGV4ID0gbV9wb3NpdGl2ZVByZWZpeC5sZW5ndGgoKTsKLSAgICAgICAgICAgIGVuZEluZGV4
IC09IG1fcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgaXNOZWdhdGl2ZSA9IHRydWU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGlucHV0LnN0
YXJ0c1dpdGgobV9uZWdhdGl2ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9uZWdhdGl2ZVN1
ZmZpeCkpIHsKLSAgICAgICAgICAgIGlzTmVnYXRpdmUgPSB0cnVlOwotICAgICAgICAgICAgc3Rh
cnRJbmRleCA9IG1fbmVnYXRpdmVQcmVmaXgubGVuZ3RoKCk7Ci0gICAgICAgICAgICBlbmRJbmRl
eCAtPSBtX25lZ2F0aXZlU3VmZml4Lmxlbmd0aCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dp
dGgobV9wb3NpdGl2ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9wb3NpdGl2ZVN1ZmZpeCkp
IHsKLSAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gbV9wb3NpdGl2ZVByZWZpeC5sZW5ndGgo
KTsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCAtPSBtX3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi11bnNpZ25lZCBMb2NhbGl6ZXI6
Om1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoY29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQm
IHBvc2l0aW9uKQotewotICAgIGZvciAodW5zaWduZWQgc3ltYm9sSW5kZXggPSAwOyBzeW1ib2xJ
bmRleCA8IERlY2ltYWxTeW1ib2xzU2l6ZTsgKytzeW1ib2xJbmRleCkgewotICAgICAgICBpZiAo
bV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRleF0ubGVuZ3RoKCkgJiYgbWF0Y2hlcyhpbnB1dCwg
cG9zaXRpb24sIG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdKSkgewotICAgICAgICAgICAg
cG9zaXRpb24gKz0gbV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRleF0ubGVuZ3RoKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gc3ltYm9sSW5kZXg7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IERlY2ltYWxTeW1ib2xzU2l6ZTsKLX0KLQotU3RyaW5nIExvY2FsaXplcjo6Y29udmVydEZyb21M
b2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWQpCi17Ci0gICAgaW5pdGlhbGl6
ZUxvY2FsaXplckRhdGEoKTsKLSAgICBTdHJpbmcgaW5wdXQgPSBsb2NhbGl6ZWQuc3RyaXBXaGl0
ZVNwYWNlKCk7Ci0gICAgaWYgKCFtX2hhc0xvY2FsaXplckRhdGEgfHwgaW5wdXQuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0KLSAgICBib29sIGlzTmVnYXRpdmU7Ci0gICAgdW5z
aWduZWQgc3RhcnRJbmRleDsKLSAgICB1bnNpZ25lZCBlbmRJbmRleDsKLSAgICBpZiAoIWRldGVj
dFNpZ25BbmRHZXREaWdpdFJhbmdlKGlucHV0LCBpc05lZ2F0aXZlLCBzdGFydEluZGV4LCBlbmRJ
bmRleCkpIHsKLSAgICAgICAgLy8gSW5wdXQgaXMgYnJva2VuLiBSZXR1cm5pbmcgYW4gaW52YWxp
ZCBudW1iZXIgc3RyaW5nLgotICAgICAgICByZXR1cm4gIioiOwotICAgIH0KLQotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5n
dGgoKSk7Ci0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OykgewotICAg
ICAgICB1bnNpZ25lZCBzeW1ib2xJbmRleCA9IG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoaW5w
dXQsIGkpOwotICAgICAgICBpZiAoc3ltYm9sSW5kZXggPj0gRGVjaW1hbFN5bWJvbHNTaXplKQot
ICAgICAgICAgICAgcmV0dXJuICIqIjsKLSAgICAgICAgaWYgKHN5bWJvbEluZGV4ID09IERlY2lt
YWxTZXBhcmF0b3JJbmRleCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7Ci0gICAg
ICAgIGVsc2UgaWYgKHN5bWJvbEluZGV4ID09IEdyb3VwU2VwYXJhdG9ySW5kZXgpIHsKLSAgICAg
ICAgICAgIC8vIElnbm9yZSBncm91cCBzZXBhcmF0b3JzLgotCi0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KCcwJyArIHN5bWJvbElu
ZGV4KSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLSNpZiBF
TkFCTEUoSU5QVVRfTVVMVElQTEVfRklFTERTX1VJKQotU3RyaW5nIExvY2FsaXplcjo6bG9jYWxp
emVkRGVjaW1hbFNlcGFyYXRvcigpCi17Ci0gICAgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKTsK
LSAgICByZXR1cm4gbV9kZWNpbWFsU3ltYm9sc1tEZWNpbWFsU2VwYXJhdG9ySW5kZXhdOwotfQot
Ci1TdHJpbmcgTG9jYWxpemVyOjpkYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCkKLXsKLSAgICBp
ZiAoIW1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kczsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
dHJpZXZlIHRoZSBzZXBhcmF0b3IgYW5kIHRoZSBvcmRlciBmcm9tIHRoZSBzeXN0ZW0uCi0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGRhdGVGb3JtYXQoKSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZCh0aW1lRm9ybWF0
KCkpOwotICAgIG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcyA9IGJ1aWxkZXIudG9TdHJpbmco
KTsKLSAgICByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzOwotfQotCi1TdHJpbmcg
TG9jYWxpemVyOjpkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkKLXsKLSAgICBpZiAoIW1f
ZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG1f
ZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kczsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
dHJpZXZlIHRoZSBzZXBhcmF0b3IgYW5kIHRoZSBvcmRlciBmcm9tIHRoZSBzeXN0ZW0uCi0gICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKGRhdGVGb3JtYXQoKSk7
Ci0gICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICBidWlsZGVyLmFwcGVuZChzaG9ydFRpbWVG
b3JtYXQoKSk7Ci0gICAgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzID0gYnVpbGRlci50
b1N0cmluZygpOwotICAgIHJldHVybiBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHM7Ci19
Ci0jZW5kaWYKLQotU3RyaW5nIExvY2FsaXplcjo6Zm9ybWF0RGF0ZVRpbWUoY29uc3QgRGF0ZUNv
bXBvbmVudHMmIGRhdGUsIEZvcm1hdFR5cGUgZm9ybWF0VHlwZSkKLXsKLSNpZiBFTkFCTEUoSU5Q
VVRfTVVMVElQTEVfRklFTERTX1VJKQotICAgIGlmIChkYXRlLnR5cGUoKSAhPSBEYXRlQ29tcG9u
ZW50czo6VGltZSAmJiBkYXRlLnR5cGUoKSAhPSBEYXRlQ29tcG9uZW50czo6RGF0ZSkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgIERhdGVUaW1lU3RyaW5nQnVpbGRlciBidWlsZGVyKCp0
aGlzLCBkYXRlKTsKLSAgICBpZiAoZGF0ZS50eXBlKCkgPT0gRGF0ZUNvbXBvbmVudHM6OlRpbWUp
Ci0gICAgICAgIGJ1aWxkZXIuYnVpbGQoZm9ybWF0VHlwZSA9PSBGb3JtYXRUeXBlU2hvcnQgPyBz
aG9ydFRpbWVGb3JtYXQoKSA6IHRpbWVGb3JtYXQoKSk7Ci0gICAgZWxzZSBpZiAoZGF0ZS50eXBl
KCkgPT0gRGF0ZUNvbXBvbmVudHM6OkRhdGUpCi0gICAgICAgIGJ1aWxkZXIuYnVpbGQoZGF0ZUZv
cm1hdCgpKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGZvcm1hdFR5cGUpOwotICAgIHJldHVy
biBTdHJpbmcoKTsKLSNlbmRpZgotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0xvY2FsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
b2NhbGl6ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM1ZjAxZjFhNzE1MjQz
MGIyYzc2YTUxNTdkMzJkOTMyYTJiMDFlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplci5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
Ci0gKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLSAqIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIExvY2FsaXplcl9oCi0jZGVmaW5lIExvY2FsaXplcl9oCi0KLSNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgotI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBMb2NhbGl6ZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2Fs
aXplcik7Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxMb2NhbGl6ZXI+IGNyZWF0
ZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpOwotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExvY2FsaXplcj4gY3JlYXRlRGVmYXVsdCgpOwotCi0gICAgLy8gQ29udmVydHMgdGhl
IHNwZWNpZmllZCBudW1iZXIgc3RyaW5nIHRvIGFub3RoZXIgbnVtYmVyIHN0cmluZyBsb2NhbGl6
ZWQKLSAgICAvLyBmb3IgdGhpcyBMb2NhbGl6ZXIgbG9jYWxlLiBUaGUgaW5wdXQgc3RyaW5nIG11
c3QgY29uZm9ybSB0byBIVE1MCi0gICAgLy8gZmxvYXRpbmctcG9pbnQgbnVtYmVycywgYW5kIGlz
IG5vdCBlbXB0eS4KLSAgICBTdHJpbmcgY29udmVydFRvTG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBsb2NhbGl6ZWQgbnVtYmVy
IHN0cmluZyB0byBhIG51bWJlciBzdHJpbmcgaW4gdGhlCi0gICAgLy8gSFRNTCBmbG9hdGluZy1w
b2ludCBudW1iZXIgZm9ybWF0LiBUaGUgaW5wdXQgc3RyaW5nIGlzIHByb3ZpZGVkIGJ5IGEgZW5k
Ci0gICAgLy8gdXNlciwgYW5kIG1pZ2h0IG5vdCBiZSBhIG51bWJlciBzdHJpbmcuIEl0J3Mgb2sg
dGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucwotICAgIC8vIGEgc3RyaW5nIHdoaWNoIGlzIG5vdCBj
b25mb3JtcyB0byB0aGUgSFRNTCBmbG9hdGluZy1wb2ludCBudW1iZXIgZm9ybWF0LAotICAgIC8v
IGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgcmVzcG9uc2libGUgdG8gY2hlY2sgdGhlIGZv
cm1hdCBvZiB0aGUKLSAgICAvLyByZXN1bHRhbnQgc3RyaW5nLgotICAgIFN0cmluZyBjb252ZXJ0
RnJvbUxvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmKTsKLQotI2lmIEVOQUJMRShJTlBVVF9N
VUxUSVBMRV9GSUVMRFNfVUkpCi0gICAgLy8gUmV0dXJucyBsb2NhbGl6ZWQgZGVjaW1hbCBzZXBh
cmF0b3IsIGUuZy4gIi4iIGZvciBFbmdsaXNoLCAiLCIgZm9yIEZyZW5jaC4KLSAgICBTdHJpbmcg
bG9jYWxpemVkRGVjaW1hbFNlcGFyYXRvcigpOwotCi0gICAgLy8gUmV0dXJucyBkYXRlIGZvcm1h
dCBpbiBVbmljb2RlIFRSMzUgTERNTFsxXSBjb250YWluaW5nIGRheSBvZiBtb250aCwKLSAgICAv
LyBtb250aCwgYW5kIHllYXIsIGUuZy4gImRkL21tL3l5eXkiCi0gICAgLy8gWzFdIExETUwgaHR0
cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS8jRGF0ZV9Gb3JtYXRfUGF0dGVybnMKLSAgICB2
aXJ0dWFsIFN0cmluZyBkYXRlRm9ybWF0KCkgPSAwOwotCi0gICAgLy8gUmV0dXJucyBhIHllYXIt
bW9udGggZm9ybWF0IGluIFVuaWNvZGUgVFIzNSBMRE1MLgotICAgIHZpcnR1YWwgU3RyaW5nIG1v
bnRoRm9ybWF0KCkgPSAwOwotCi0gICAgLy8gUmV0dXJucyB0aW1lIGZvcm1hdCBpbiBVbmljb2Rl
IFRSMzUgTERNTFsxXSBjb250YWluaW5nIGhvdXIsIG1pbnV0ZSwgYW5kCi0gICAgLy8gc2Vjb25k
IHdpdGggb3B0aW9uYWwgcGVyaW9kKEFNL1BNKSwgZS5nLiAiaDptbTpzcyBhIgotICAgIC8vIFsx
XSBMRE1MIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvI0RhdGVfRm9ybWF0X1BhdHRl
cm5zCi0gICAgdmlydHVhbCBTdHJpbmcgdGltZUZvcm1hdCgpID0gMDsKLQotICAgIC8vIFJldHVy
bnMgdGltZSBmb3JtYXQgaW4gVW5pY29kZSBUUjM1IExETUwgY29udGFpbmluZyBob3VyLCBhbmQg
bWludXRlCi0gICAgLy8gd2l0aCBvcHRpb25hbCBwZXJpb2QoQU0vUE0pLCBlLmcuICJoOm1tIGEi
Ci0gICAgLy8gTm90ZTogU29tZSBwbGF0Zm9ybXMgcmV0dXJuIHNhbWUgdmFsdWUgYXMgdGltZUZv
cm1hdCgpLgotICAgIHZpcnR1YWwgU3RyaW5nIHNob3J0VGltZUZvcm1hdCgpID0gMDsKLQotICAg
IC8vIFJldHVybnMgYSBkYXRlLXRpbWUgZm9ybWF0IGluIFVuaWNvZGUgVFIzNSBMRE1MLiBJdCBz
aG91bGQgaGF2ZSBhIHNlY29uZHMKLSAgICAvLyBmaWVsZC4KLSAgICBTdHJpbmcgZGF0ZVRpbWVG
b3JtYXRXaXRoU2Vjb25kcygpOwotCi0gICAgLy8gUmV0dXJucyBhIGRhdGUtdGltZSBmb3JtYXQg
aW4gVW5pY29kZSBUUjM1IExETUwuIEl0IHNob3VsZCBoYXZlIG5vIHNlY29uZHMKLSAgICAvLyBm
aWVsZC4KLSAgICBTdHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpOwotCi0gICAg
Ly8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmcgb2Ygd2hpY2ggc2l6ZSBpcyAxMi4gVGhlIGZp
cnN0IGl0ZW0gaXMgYQotICAgIC8vIGxvY2FsaXplZCBzdHJpbmcgb2YgSmFuIGFuZCB0aGUgbGFz
dCBpdGVtIGlzIGEgbG9jYWxpemVkIHN0cmluZyBvZgotICAgIC8vIERlYy4gVGhlc2Ugc3RyaW5n
cyBzaG91bGQgYmUgc2hvcnQuCi0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hv
cnRNb250aExhYmVscygpID0gMDsKLQotICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5n
IG9mIHdoaWNoIHNpemUgaXMgMTIuIFRoZSBmaXJzdCBpdGVtIGlzIGEKLSAgICAvLyBzdGFuZC1h
bG9uZSBsb2NhbGl6ZWQgc3RyaW5nIG9mIEphbnVhcnkgYW5kIHRoZSBsYXN0IGl0ZW0gaXMgYQot
ICAgIC8vIHN0YW5kLWFsb25lIGxvY2FsaXplZCBzdHJpbmcgb2YgRGVjZW1iZXIuIFRoZXNlIHN0
cmluZ3Mgc2hvdWxkIG5vdCBiZQotICAgIC8vIGFiYnJldmlhdGlvbnMuCi0gICAgdmlydHVhbCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgPSAwOwotCi0gICAg
Ly8gU3RhbmQtYWxvbmUgbW9udGggdmVyc2lvbiBvZiBzaG9ydE1vbnRoTGFiZWxzLgotICAgIHZp
cnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkg
PSAwOwotCi0gICAgLy8gUmV0dXJucyBsb2NhbGl6ZWQgcGVyaW9kIGZpZWxkKEFNL1BNKSBzdHJp
bmdzLgotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRpbWVBTVBNTGFiZWxzKCkg
PSAwOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKSB8fCBFTkFCTEUoSU5Q
VVRfTVVMVElQTEVfRklFTERTX1VJKQotICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5n
IG9mIHdoaWNoIHNpemUgaXMgMTIuIFRoZSBmaXJzdCBpdGVtIGlzIGEKLSAgICAvLyBsb2NhbGl6
ZWQgc3RyaW5nIG9mIEphbnVhcnksIGFuZCB0aGUgbGFzdCBpdGVtIGlzIGEgbG9jYWxpemVkIHN0
cmluZyBvZgotICAgIC8vIERlY2VtYmVyLiBUaGVzZSBzdHJpbmdzIHNob3VsZCBub3QgYmUgYWJi
cmV2aWF0aW9ucy4KLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtb250aExhYmVs
cygpID0gMDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKLSAgICAvLyBS
ZXR1cm5zIGEgdmVjdG9yIG9mIHN0cmluZyBvZiB3aGljaCBzaXplIGlzIDcuIFRoZSBmaXJzdCBp
dGVtIGlzIGEKLSAgICAvLyBsb2NhbGl6ZWQgc2hvcnQgc3RyaW5nIG9mIE1vbmRheSwgYW5kIHRo
ZSBsYXN0IGl0ZW0gaXMgYSBsb2NhbGl6ZWQKLSAgICAvLyBzaG9ydCBzdHJpbmcgb2YgU2F0dXJk
YXkuIFRoZXNlIHN0cmluZ3Mgc2hvdWxkIGJlIHNob3J0LgotICAgIHZpcnR1YWwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHdlZWtEYXlTaG9ydExhYmVscygpID0gMDsKLQotICAgIC8vIFRoZSBmaXJz
dCBkYXkgb2YgYSB3ZWVrLiAwIGlzIFN1bmRheSwgYW5kIDYgaXMgU2F0dXJkYXkuCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBmaXJzdERheU9mV2VlaygpID0gMDsKLQotICAgIHZpcnR1YWwgU3RyaW5n
IGRhdGVGb3JtYXRUZXh0KCkgPSAwOwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHBlb3BsZSB1
c2UgcmlnaHQtdG8tbGVmdCB3cml0aW5nIGluIHRoZSBsb2NhbGUgZm9yIHRoaXMKLSAgICAvLyBv
YmplY3QuCi0gICAgdmlydHVhbCBib29sIGlzUlRMKCkgPSAwOwotI2VuZGlmCi0KLSAgICAvLyBQ
YXJzZXMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBkYXRlL3RpbWUgc3RyaW5nIGxvY2Fs
aXplZAotICAgIC8vIGZvciB0aGlzIExvY2FsaXplciBsb2NhbGUuIElmIHRoZSBpbnB1dCBzdHJp
bmcgaXMgbm90IHZhbGlkIG9yCi0gICAgLy8gYW4gaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBw
b3J0IGxvY2FsaXplZCBkYXRlcywgdGhpcwotICAgIC8vIGZ1bmN0aW9uIHJldHVybnMgTmFOLiBJ
ZiB0aGUgaW5wdXQgc3RyaW5nIGlzIHZhbGlkIHRoaXMKLSAgICAvLyBmdW5jdGlvbiByZXR1cm5z
IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEKLSAgICAvLyAwMDow
MDowMC4wMDAgVVRDLgotICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlRGF0ZVRpbWUoY29uc3QgU3Ry
aW5nJiwgRGF0ZUNvbXBvbmVudHM6OlR5cGUpID0gMDsKLQotICAgIGVudW0gRm9ybWF0VHlwZSB7
IEZvcm1hdFR5cGVVbnNwZWNpZmllZCwgRm9ybWF0VHlwZVNob3J0LCBGb3JtYXRUeXBlTWVkaXVt
IH07Ci0KLSAgICAvLyBTZXJpYWxpemVzIHRoZSBzcGVjaWZpZWQgZGF0ZSBpbnRvIGEgZm9ybWF0
dGVkIGRhdGUgc3RyaW5nIHRvCi0gICAgLy8gZGlzcGxheSB0byB0aGUgdXNlci4gSWYgYW4gaW1w
bGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0Ci0gICAgLy8gbG9jYWxpemVkIGRhdGVzIHRoZSBm
dW5jdGlvbiBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KLSAgICBTdHJpbmcgZm9ybWF0
RGF0ZVRpbWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlwZVVu
c3BlY2lmaWVkKTsKLQotICAgIHZpcnR1YWwgfkxvY2FsaXplcigpOwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgZW51bSB7Ci0gICAgICAgIC8vIDAtOSBmb3IgZGlnaXRzLgotICAgICAgICBEZWNpbWFsU2Vw
YXJhdG9ySW5kZXggPSAxMCwKLSAgICAgICAgR3JvdXBTZXBhcmF0b3JJbmRleCA9IDExLAotICAg
ICAgICBEZWNpbWFsU3ltYm9sc1NpemUKLSAgICB9OwotCi0jaWYgRU5BQkxFKElOUFVUX01VTFRJ
UExFX0ZJRUxEU19VSSkKLSAgICBTdHJpbmcgbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzOwot
ICAgIFN0cmluZyBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHM7Ci0jZW5kaWYKLQotICAg
IExvY2FsaXplcigpIDogbV9oYXNMb2NhbGl6ZXJEYXRhKGZhbHNlKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplckRhdGEoKSA9IDA7Ci0gICAgdm9pZCBzZXRMb2NhbGl6
ZXJEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmcsIERlY2ltYWxTeW1ib2xzU2l6ZT4mLCBjb25zdCBT
dHJpbmcmIHBvc2l0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIHBvc2l0aXZlU3VmZml4LCBjb25z
dCBTdHJpbmcmIG5lZ2F0aXZlUHJlZml4LCBjb25zdCBTdHJpbmcmIG5lZ2F0aXZlU3VmZml4KTsK
LQotcHJpdmF0ZToKLSAgICBib29sIGRldGVjdFNpZ25BbmRHZXREaWdpdFJhbmdlKGNvbnN0IFN0
cmluZyYgaW5wdXQsIGJvb2wmIGlzTmVnYXRpdmUsIHVuc2lnbmVkJiBzdGFydEluZGV4LCB1bnNp
Z25lZCYgZW5kSW5kZXgpOwotICAgIHVuc2lnbmVkIG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgo
Y29uc3QgU3RyaW5nJiBpbnB1dCwgdW5zaWduZWQmIHBvc2l0aW9uKTsKLQotICAgIFN0cmluZyBt
X2RlY2ltYWxTeW1ib2xzW0RlY2ltYWxTeW1ib2xzU2l6ZV07Ci0gICAgU3RyaW5nIG1fcG9zaXRp
dmVQcmVmaXg7Ci0gICAgU3RyaW5nIG1fcG9zaXRpdmVTdWZmaXg7Ci0gICAgU3RyaW5nIG1fbmVn
YXRpdmVQcmVmaXg7Ci0gICAgU3RyaW5nIG1fbmVnYXRpdmVTdWZmaXg7Ci0gICAgYm9vbCBtX2hh
c0xvY2FsaXplckRhdGE7Ci19OwotCi1pbmxpbmUgUGFzc093blB0cjxMb2NhbGl6ZXI+IExvY2Fs
aXplcjo6Y3JlYXRlRGVmYXVsdCgpCi17Ci0gICAgcmV0dXJuIExvY2FsaXplcjo6Y3JlYXRlKGRl
ZmF1bHRMYW5ndWFnZSgpKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkOTQ1YzM3ZDBhOTcy
Nzk2NWVjYWY4YmJhYjJiMGY1YjI0ZGVkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcApAQCAtMCwwICsxLDM2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgiCisKKyNp
bmNsdWRlICJEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKElOUFVUX01VTFRJUExF
X0ZJRUxEU19VSSkKKworY2xhc3MgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyIDogcHJpdmF0ZSBEYXRl
VGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRl
VGltZVN0cmluZ0J1aWxkZXIpOworCitwdWJsaWM6CisgICAgLy8gVGhlIGFyZ3VtZW50IG9iamVj
dHMgbXVzdCBiZSBhbGl2ZSB1bnRpbCB0aGlzIG9iamVjdCBkaWVzLgorICAgIERhdGVUaW1lU3Ry
aW5nQnVpbGRlcihMb2NhbGl6ZXImLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpOworCisgICAgYm9v
bCBidWlsZChjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgdG9TdHJpbmcoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBEYXRlVGltZUZvcm1hdDo6VG9rZW5IYW5kbGVyIGZ1bmN0aW9ucy4KKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlLCBpbnQpIE9W
RVJSSURFIEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREUgRklOQUw7CisKKyAgICBTdHJpbmcgemVyb1BhZFN0cmluZyhjb25zdCBTdHJp
bmcmLCBzaXplX3Qgd2lkdGgpOworICAgIHZvaWQgYXBwZW5kTnVtYmVyKGludCBudW1iZXIsIHNp
emVfdCB3aWR0aCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIG1fYnVpbGRlcjsKKyAgICBMb2NhbGl6
ZXImIG1fbG9jYWxpemVyOworICAgIGNvbnN0IERhdGVDb21wb25lbnRzJiBtX2RhdGU7Cit9Owor
CitEYXRlVGltZVN0cmluZ0J1aWxkZXI6OkRhdGVUaW1lU3RyaW5nQnVpbGRlcihMb2NhbGl6ZXIm
IGxvY2FsaXplciwgY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGUpCisgICAgOiBtX2xvY2FsaXpl
cihsb2NhbGl6ZXIpCisgICAgLCBtX2RhdGUoZGF0ZSkKK3sKK30KKworYm9vbCBEYXRlVGltZVN0
cmluZ0J1aWxkZXI6OmJ1aWxkKGNvbnN0IFN0cmluZyYgZm9ybWF0U3RyaW5nKQoreworICAgIG1f
YnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkoZm9ybWF0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4gRGF0ZVRpbWVGb3JtYXQ6OnBhcnNlKGZvcm1hdFN0cmluZywgKnRoaXMpOworfQorCitTdHJp
bmcgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp6ZXJvUGFkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBzaXplX3Qgd2lkdGgpCit7CisgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+PSB3aWR0aCkK
KyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICBTdHJpbmdCdWlsZGVyIHplcm9QYWRkZWRTdHJp
bmdCdWlsZGVyOworICAgIHplcm9QYWRkZWRTdHJpbmdCdWlsZGVyLnJlc2VydmVDYXBhY2l0eSh3
aWR0aCk7CisgICAgZm9yIChzaXplX3QgaSA9IHN0cmluZy5sZW5ndGgoKTsgaSA8IHdpZHRoOyAr
K2kpCisgICAgICAgIHplcm9QYWRkZWRTdHJpbmdCdWlsZGVyLmFwcGVuZCgiMCIpOworICAgIHpl
cm9QYWRkZWRTdHJpbmdCdWlsZGVyLmFwcGVuZChzdHJpbmcpOworICAgIHJldHVybiB6ZXJvUGFk
ZGVkU3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCit2b2lkIERhdGVUaW1lU3RyaW5nQnVp
bGRlcjo6YXBwZW5kTnVtYmVyKGludCBudW1iZXIsIHNpemVfdCB3aWR0aCkKK3sKKyAgICBTdHJp
bmcgemVyb1BhZGRlZE51bWJlclN0cmluZyA9IHplcm9QYWRTdHJpbmcoU3RyaW5nOjpudW1iZXIo
bnVtYmVyKSwgd2lkdGgpOworICAgIG1fYnVpbGRlci5hcHBlbmQobV9sb2NhbGl6ZXIuY29udmVy
dFRvTG9jYWxpemVkTnVtYmVyKHplcm9QYWRkZWROdW1iZXJTdHJpbmcpKTsKK30KKwordm9pZCBE
YXRlVGltZVN0cmluZ0J1aWxkZXI6OnZpc2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlw
ZSBmaWVsZFR5cGUsIGludCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKQoreworICAgIHN3aXRj
aCAoZmllbGRUeXBlKSB7CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlWWVhcjoK
KyAgICAgICAgLy8gQWx3YXlzIHVzZSBwYWRkaW5nIHdpZHRoIG9mIDQgc28gaXQgbWF0Y2hlcyBE
YXRlVGltZUVkaXRFbGVtZW50LgorICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLmZ1bGxZZWFy
KCksIDQpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6RmllbGRU
eXBlTW9udGg6CisgICAgICAgIC8vIEFsd2F5cyB1c2UgcGFkZGluZyB3aWR0aCBvZiAyIHNvIGl0
IG1hdGNoZXMgRGF0ZVRpbWVFZGl0RWxlbWVudC4KKyAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0
ZS5tb250aCgpICsgMSwgMik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERhdGVUaW1lRm9y
bWF0OjpGaWVsZFR5cGVEYXlPZk1vbnRoOgorICAgICAgICAvLyBBbHdheXMgdXNlIHBhZGRpbmcg
d2lkdGggb2YgMiBzbyBpdCBtYXRjaGVzIERhdGVUaW1lRWRpdEVsZW1lbnQuCisgICAgICAgIGFw
cGVuZE51bWJlcihtX2RhdGUubW9udGhEYXkoKSwgMik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIERhdGVUaW1lRm9ybWF0OjpGaWVsZFR5cGVQZXJpb2Q6CisgICAgICAgIG1fYnVpbGRlci5h
cHBlbmQobV9sb2NhbGl6ZXIudGltZUFNUE1MYWJlbHMoKVsobV9kYXRlLmhvdXIoKSA+PSAxMiA/
IDEgOiAwKV0pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6Rmll
bGRUeXBlSG91cjEyOiB7CisgICAgICAgIGludCBob3VyMTIgPSBtX2RhdGUuaG91cigpICUgMTI7
CisgICAgICAgIGlmICghaG91cjEyKQorICAgICAgICAgICAgaG91cjEyID0gMTI7CisgICAgICAg
IGFwcGVuZE51bWJlcihob3VyMTIsIG51bWJlck9mUGF0dGVybkNoYXJhY3RlcnMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNhc2UgRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIy
MzoKKyAgICAgICAgYXBwZW5kTnVtYmVyKG1fZGF0ZS5ob3VyKCksIG51bWJlck9mUGF0dGVybkNo
YXJhY3RlcnMpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6Rmll
bGRUeXBlSG91cjExOgorICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLmhvdXIoKSAlIDEyLCBu
dW1iZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0
ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZUhvdXIyNDogeworICAgICAgICBpbnQgaG91cjI0ID0gbV9k
YXRlLmhvdXIoKTsKKyAgICAgICAgaWYgKCFob3VyMjQpCisgICAgICAgICAgICBob3VyMjQgPSAy
NDsKKyAgICAgICAgYXBwZW5kTnVtYmVyKGhvdXIyNCwgbnVtYmVyT2ZQYXR0ZXJuQ2hhcmFjdGVy
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBEYXRlVGltZUZvcm1hdDo6Rmll
bGRUeXBlTWludXRlOgorICAgICAgICBhcHBlbmROdW1iZXIobV9kYXRlLm1pbnV0ZSgpLCBudW1i
ZXJPZlBhdHRlcm5DaGFyYWN0ZXJzKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVRp
bWVGb3JtYXQ6OkZpZWxkVHlwZVNlY29uZDoKKyAgICAgICAgaWYgKCFtX2RhdGUubWlsbGlzZWNv
bmQoKSkKKyAgICAgICAgICAgIGFwcGVuZE51bWJlcihtX2RhdGUuc2Vjb25kKCksIG51bWJlck9m
UGF0dGVybkNoYXJhY3RlcnMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRvdWJsZSBz
ZWNvbmQgPSBtX2RhdGUuc2Vjb25kKCkgKyBtX2RhdGUubWlsbGlzZWNvbmQoKSAvIDEwMDAuMDsK
KyAgICAgICAgICAgIFN0cmluZyB6ZXJvUGFkZGVkU2Vjb25kU3RyaW5nID0gemVyb1BhZFN0cmlu
ZyhTdHJpbmc6OmZvcm1hdCgiJS4wM2YiLCBzZWNvbmQpLCBudW1iZXJPZlBhdHRlcm5DaGFyYWN0
ZXJzICsgNCk7CisgICAgICAgICAgICBtX2J1aWxkZXIuYXBwZW5kKG1fbG9jYWxpemVyLmNvbnZl
cnRUb0xvY2FsaXplZE51bWJlcih6ZXJvUGFkZGVkU2Vjb25kU3RyaW5nKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9
CisKK3ZvaWQgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp2aXNpdExpdGVyYWwoY29uc3QgU3RyaW5n
JiB0ZXh0KQoreworICAgIEFTU0VSVCh0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2J1aWxkZXIuYXBw
ZW5kKHRleHQpOworfQorCitTdHJpbmcgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyOjp0b1N0cmluZygp
Cit7CisgICAgcmV0dXJuIG1fYnVpbGRlci50b1N0cmluZygpOworfQorCisjZW5kaWYKKworTG9j
YWxpemVyOjp+TG9jYWxpemVyKCkKK3sKK30KKwordm9pZCBMb2NhbGl6ZXI6OnNldExvY2FsaXpl
ckRhdGEoY29uc3QgVmVjdG9yPFN0cmluZywgRGVjaW1hbFN5bWJvbHNTaXplPiYgc3ltYm9scywg
Y29uc3QgU3RyaW5nJiBwb3NpdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZp
eCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1
ZmZpeCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN5bWJvbHMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgQVNTRVJUKCFzeW1ib2xzW2ldLmlzRW1wdHkoKSk7CisgICAgICAgIG1fZGVj
aW1hbFN5bWJvbHNbaV0gPSBzeW1ib2xzW2ldOworICAgIH0KKyAgICBtX3Bvc2l0aXZlUHJlZml4
ID0gcG9zaXRpdmVQcmVmaXg7CisgICAgbV9wb3NpdGl2ZVN1ZmZpeCA9IHBvc2l0aXZlU3VmZml4
OworICAgIG1fbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVByZWZpeDsKKyAgICBtX25lZ2F0aXZl
U3VmZml4ID0gbmVnYXRpdmVTdWZmaXg7CisgICAgQVNTRVJUKCFtX3Bvc2l0aXZlUHJlZml4Lmlz
RW1wdHkoKSB8fCAhbV9wb3NpdGl2ZVN1ZmZpeC5pc0VtcHR5KCkgfHwgIW1fbmVnYXRpdmVQcmVm
aXguaXNFbXB0eSgpIHx8ICFtX25lZ2F0aXZlU3VmZml4LmlzRW1wdHkoKSk7CisgICAgbV9oYXNM
b2NhbGl6ZXJEYXRhID0gdHJ1ZTsKK30KKworU3RyaW5nIExvY2FsaXplcjo6Y29udmVydFRvTG9j
YWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgaW5wdXQpCit7CisgICAgaW5pdGlhbGl6ZUxvY2Fs
aXplckRhdGEoKTsKKyAgICBpZiAoIW1faGFzTG9jYWxpemVyRGF0YSB8fCBpbnB1dC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBpbnB1dDsKKworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGJv
b2wgaXNOZWdhdGl2ZSA9IGZhbHNlOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5ndGgoKSk7CisKKyAgICBpZiAoaW5wdXRb
MF0gPT0gJy0nKSB7CisgICAgICAgICsraTsKKyAgICAgICAgaXNOZWdhdGl2ZSA9IHRydWU7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fbmVnYXRpdmVQcmVmaXgpOworICAgIH0gZWxzZQorICAg
ICAgICBidWlsZGVyLmFwcGVuZChtX3Bvc2l0aXZlUHJlZml4KTsKKworICAgIGZvciAoOyBpIDwg
aW5wdXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBzd2l0Y2ggKGlucHV0W2ldKSB7CisgICAg
ICAgIGNhc2UgJzAnOgorICAgICAgICBjYXNlICcxJzoKKyAgICAgICAgY2FzZSAnMic6CisgICAg
ICAgIGNhc2UgJzMnOgorICAgICAgICBjYXNlICc0JzoKKyAgICAgICAgY2FzZSAnNSc6CisgICAg
ICAgIGNhc2UgJzYnOgorICAgICAgICBjYXNlICc3JzoKKyAgICAgICAgY2FzZSAnOCc6CisgICAg
ICAgIGNhc2UgJzknOgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9kZWNpbWFsU3ltYm9s
c1tpbnB1dFtpXSAtICcwJ10pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJy4n
OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobV9kZWNpbWFsU3ltYm9sc1tEZWNpbWFsU2Vw
YXJhdG9ySW5kZXhdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBi
dWlsZGVyLmFwcGVuZChpc05lZ2F0aXZlID8gbV9uZWdhdGl2ZVN1ZmZpeCA6IG1fcG9zaXRpdmVT
dWZmaXgpOworCisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc3RhdGljIGJv
b2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCBjb25zdCBT
dHJpbmcmIHBhcnQpCit7CisgICAgaWYgKHBhcnQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAocG9zaXRpb24gKyBwYXJ0Lmxlbmd0aCgpID4gdGV4dC5sZW5ndGgoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJ0
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKHRleHRbcG9zaXRpb24gKyBpXSAhPSBwYXJ0
W2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBMb2NhbGl6ZXI6OmRldGVjdFNpZ25BbmRHZXREaWdpdFJhbmdlKGNvbnN0IFN0
cmluZyYgaW5wdXQsIGJvb2wmIGlzTmVnYXRpdmUsIHVuc2lnbmVkJiBzdGFydEluZGV4LCB1bnNp
Z25lZCYgZW5kSW5kZXgpCit7CisgICAgc3RhcnRJbmRleCA9IDA7CisgICAgZW5kSW5kZXggPSBp
bnB1dC5sZW5ndGgoKTsKKyAgICBpZiAobV9uZWdhdGl2ZVByZWZpeC5pc0VtcHR5KCkgJiYgbV9u
ZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgo
bV9wb3NpdGl2ZVByZWZpeCkgJiYgaW5wdXQuZW5kc1dpdGgobV9wb3NpdGl2ZVN1ZmZpeCkpIHsK
KyAgICAgICAgICAgIGlzTmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBtX3Bvc2l0aXZlUHJlZml4Lmxlbmd0aCgpOworICAgICAgICAgICAgZW5kSW5kZXggLT0gbV9w
b3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpc05l
Z2F0aXZlID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0
aChtX25lZ2F0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX25lZ2F0aXZlU3VmZml4KSkg
eworICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IHRydWU7CisgICAgICAgICAgICBzdGFydEluZGV4
ID0gbV9uZWdhdGl2ZVByZWZpeC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGVuZEluZGV4IC09IG1f
bmVnYXRpdmVTdWZmaXgubGVuZ3RoKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
c05lZ2F0aXZlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChtX3Bv
c2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3VmZml4KSkgeworICAg
ICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBtX3Bvc2l0aXZlUHJlZml4Lmxlbmd0aCgpOworICAg
ICAgICAgICAgICAgIGVuZEluZGV4IC09IG1fcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIExvY2FsaXplcjo6bWF0Y2hl
ZERlY2ltYWxTeW1ib2xJbmRleChjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgcG9zaXRp
b24pCit7CisgICAgZm9yICh1bnNpZ25lZCBzeW1ib2xJbmRleCA9IDA7IHN5bWJvbEluZGV4IDwg
RGVjaW1hbFN5bWJvbHNTaXplOyArK3N5bWJvbEluZGV4KSB7CisgICAgICAgIGlmIChtX2RlY2lt
YWxTeW1ib2xzW3N5bWJvbEluZGV4XS5sZW5ndGgoKSAmJiBtYXRjaGVzKGlucHV0LCBwb3NpdGlv
biwgbV9kZWNpbWFsU3ltYm9sc1tzeW1ib2xJbmRleF0pKSB7CisgICAgICAgICAgICBwb3NpdGlv
biArPSBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XS5sZW5ndGgoKTsKKyAgICAgICAgICAg
IHJldHVybiBzeW1ib2xJbmRleDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gRGVjaW1h
bFN5bWJvbHNTaXplOworfQorCitTdHJpbmcgTG9jYWxpemVyOjpjb252ZXJ0RnJvbUxvY2FsaXpl
ZE51bWJlcihjb25zdCBTdHJpbmcmIGxvY2FsaXplZCkKK3sKKyAgICBpbml0aWFsaXplTG9jYWxp
emVyRGF0YSgpOworICAgIFN0cmluZyBpbnB1dCA9IGxvY2FsaXplZC5zdHJpcFdoaXRlU3BhY2Uo
KTsKKyAgICBpZiAoIW1faGFzTG9jYWxpemVyRGF0YSB8fCBpbnB1dC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBpbnB1dDsKKworICAgIGJvb2wgaXNOZWdhdGl2ZTsKKyAgICB1bnNpZ25lZCBz
dGFydEluZGV4OworICAgIHVuc2lnbmVkIGVuZEluZGV4OworICAgIGlmICghZGV0ZWN0U2lnbkFu
ZEdldERpZ2l0UmFuZ2UoaW5wdXQsIGlzTmVnYXRpdmUsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSkg
eworICAgICAgICAvLyBJbnB1dCBpcyBicm9rZW4uIFJldHVybmluZyBhbiBpbnZhbGlkIG51bWJl
ciBzdHJpbmcuCisgICAgICAgIHJldHVybiAiKiI7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsK
KyAgICBpZiAoaXNOZWdhdGl2ZSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIi0iKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7KSB7CisgICAgICAgIHVu
c2lnbmVkIHN5bWJvbEluZGV4ID0gbWF0Y2hlZERlY2ltYWxTeW1ib2xJbmRleChpbnB1dCwgaSk7
CisgICAgICAgIGlmIChzeW1ib2xJbmRleCA+PSBEZWNpbWFsU3ltYm9sc1NpemUpCisgICAgICAg
ICAgICByZXR1cm4gIioiOworICAgICAgICBpZiAoc3ltYm9sSW5kZXggPT0gRGVjaW1hbFNlcGFy
YXRvckluZGV4KQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJy4nKTsKKyAgICAgICAgZWxz
ZSBpZiAoc3ltYm9sSW5kZXggPT0gR3JvdXBTZXBhcmF0b3JJbmRleCkgeworICAgICAgICAgICAg
Ly8gSWdub3JlIGdyb3VwIHNlcGFyYXRvcnMuCisKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oJzAnICsgc3ltYm9sSW5kZXgpKTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworI2lmIEVOQUJMRShJ
TlBVVF9NVUxUSVBMRV9GSUVMRFNfVUkpCitTdHJpbmcgTG9jYWxpemVyOjpsb2NhbGl6ZWREZWNp
bWFsU2VwYXJhdG9yKCkKK3sKKyAgICBpbml0aWFsaXplTG9jYWxpemVyRGF0YSgpOworICAgIHJl
dHVybiBtX2RlY2ltYWxTeW1ib2xzW0RlY2ltYWxTZXBhcmF0b3JJbmRleF07Cit9CisKK1N0cmlu
ZyBMb2NhbGl6ZXI6OmRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKQoreworICAgIGlmICghbV9k
YXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9kYXRl
VGltZUZvcm1hdFdpdGhTZWNvbmRzOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV0cmlldmUg
dGhlIHNlcGFyYXRvciBhbmQgdGhlIG9yZGVyIGZyb20gdGhlIHN5c3RlbS4KKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoZGF0ZUZvcm1hdCgpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRpbWVGb3JtYXQoKSk7Cisg
ICAgbV9kYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzID0gYnVpbGRlci50b1N0cmluZygpOworICAg
IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHM7Cit9CisKK1N0cmluZyBMb2NhbGl6
ZXI6OmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKQoreworICAgIGlmICghbV9kYXRlVGlt
ZUZvcm1hdFdpdGhvdXRTZWNvbmRzLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbV9kYXRlVGlt
ZUZvcm1hdFdpdGhvdXRTZWNvbmRzOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV0cmlldmUg
dGhlIHNlcGFyYXRvciBhbmQgdGhlIG9yZGVyIGZyb20gdGhlIHN5c3RlbS4KKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoZGF0ZUZvcm1hdCgpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgnICcpOworICAgIGJ1aWxkZXIuYXBwZW5kKHNob3J0VGltZUZvcm1hdCgp
KTsKKyAgICBtX2RhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMgPSBidWlsZGVyLnRvU3RyaW5n
KCk7CisgICAgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kczsKK30KKyNlbmRp
ZgorCitTdHJpbmcgTG9jYWxpemVyOjpmb3JtYXREYXRlVGltZShjb25zdCBEYXRlQ29tcG9uZW50
cyYgZGF0ZSwgRm9ybWF0VHlwZSBmb3JtYXRUeXBlKQoreworI2lmIEVOQUJMRShJTlBVVF9NVUxU
SVBMRV9GSUVMRFNfVUkpCisgICAgaWYgKGRhdGUudHlwZSgpICE9IERhdGVDb21wb25lbnRzOjpU
aW1lICYmIGRhdGUudHlwZSgpICE9IERhdGVDb21wb25lbnRzOjpEYXRlKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgRGF0ZVRpbWVTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoKnRoaXMsIGRh
dGUpOworICAgIGlmIChkYXRlLnR5cGUoKSA9PSBEYXRlQ29tcG9uZW50czo6VGltZSkKKyAgICAg
ICAgYnVpbGRlci5idWlsZChmb3JtYXRUeXBlID09IEZvcm1hdFR5cGVTaG9ydCA/IHNob3J0VGlt
ZUZvcm1hdCgpIDogdGltZUZvcm1hdCgpKTsKKyAgICBlbHNlIGlmIChkYXRlLnR5cGUoKSA9PSBE
YXRlQ29tcG9uZW50czo6RGF0ZSkKKyAgICAgICAgYnVpbGRlci5idWlsZChkYXRlRm9ybWF0KCkp
OworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShkYXRlKTsKKyAgICBVTlVTRURfUEFSQU0oZm9ybWF0VHlwZSk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworI2VuZGlmCit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvUGxhdGZvcm1Mb2NhbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxh
dGZvcm1Mb2NhbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzVmMDFmMWE3MTUyNDMwYjJjNzZhNTE1N2QzMmQ5
MzJhMmIwMWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybUxvY2FsZS5oCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMb2NhbGl6ZXJfaAorI2RlZmluZSBMb2NhbGl6ZXJfaAorCisjaW5jbHVkZSAiRGF0
ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTG9jYWxpemVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShM
b2NhbGl6ZXIpOworCitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8TG9jYWxpemVyPiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxMb2NhbGl6ZXI+IGNyZWF0ZURlZmF1bHQoKTsKKworICAgIC8vIENvbnZlcnRz
IHRoZSBzcGVjaWZpZWQgbnVtYmVyIHN0cmluZyB0byBhbm90aGVyIG51bWJlciBzdHJpbmcgbG9j
YWxpemVkCisgICAgLy8gZm9yIHRoaXMgTG9jYWxpemVyIGxvY2FsZS4gVGhlIGlucHV0IHN0cmlu
ZyBtdXN0IGNvbmZvcm0gdG8gSFRNTAorICAgIC8vIGZsb2F0aW5nLXBvaW50IG51bWJlcnMsIGFu
ZCBpcyBub3QgZW1wdHkuCisgICAgU3RyaW5nIGNvbnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25z
dCBTdHJpbmcmKTsKKworICAgIC8vIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgbG9jYWxpemVkIG51
bWJlciBzdHJpbmcgdG8gYSBudW1iZXIgc3RyaW5nIGluIHRoZQorICAgIC8vIEhUTUwgZmxvYXRp
bmctcG9pbnQgbnVtYmVyIGZvcm1hdC4gVGhlIGlucHV0IHN0cmluZyBpcyBwcm92aWRlZCBieSBh
IGVuZAorICAgIC8vIHVzZXIsIGFuZCBtaWdodCBub3QgYmUgYSBudW1iZXIgc3RyaW5nLiBJdCdz
IG9rIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMKKyAgICAvLyBhIHN0cmluZyB3aGljaCBpcyBu
b3QgY29uZm9ybXMgdG8gdGhlIEhUTUwgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGZvcm1hdCwKKyAg
ICAvLyBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlIHJlc3BvbnNpYmxlIHRvIGNoZWNrIHRo
ZSBmb3JtYXQgb2YgdGhlCisgICAgLy8gcmVzdWx0YW50IHN0cmluZy4KKyAgICBTdHJpbmcgY29u
dmVydEZyb21Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJik7CisKKyNpZiBFTkFCTEUoSU5Q
VVRfTVVMVElQTEVfRklFTERTX1VJKQorICAgIC8vIFJldHVybnMgbG9jYWxpemVkIGRlY2ltYWwg
c2VwYXJhdG9yLCBlLmcuICIuIiBmb3IgRW5nbGlzaCwgIiwiIGZvciBGcmVuY2guCisgICAgU3Ry
aW5nIGxvY2FsaXplZERlY2ltYWxTZXBhcmF0b3IoKTsKKworICAgIC8vIFJldHVybnMgZGF0ZSBm
b3JtYXQgaW4gVW5pY29kZSBUUjM1IExETUxbMV0gY29udGFpbmluZyBkYXkgb2YgbW9udGgsCisg
ICAgLy8gbW9udGgsIGFuZCB5ZWFyLCBlLmcuICJkZC9tbS95eXl5IgorICAgIC8vIFsxXSBMRE1M
IGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvI0RhdGVfRm9ybWF0X1BhdHRlcm5zCisg
ICAgdmlydHVhbCBTdHJpbmcgZGF0ZUZvcm1hdCgpID0gMDsKKworICAgIC8vIFJldHVybnMgYSB5
ZWFyLW1vbnRoIGZvcm1hdCBpbiBVbmljb2RlIFRSMzUgTERNTC4KKyAgICB2aXJ0dWFsIFN0cmlu
ZyBtb250aEZvcm1hdCgpID0gMDsKKworICAgIC8vIFJldHVybnMgdGltZSBmb3JtYXQgaW4gVW5p
Y29kZSBUUjM1IExETUxbMV0gY29udGFpbmluZyBob3VyLCBtaW51dGUsIGFuZAorICAgIC8vIHNl
Y29uZCB3aXRoIG9wdGlvbmFsIHBlcmlvZChBTS9QTSksIGUuZy4gImg6bW06c3MgYSIKKyAgICAv
LyBbMV0gTERNTCBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjM1LyNEYXRlX0Zvcm1hdF9Q
YXR0ZXJucworICAgIHZpcnR1YWwgU3RyaW5nIHRpbWVGb3JtYXQoKSA9IDA7CisKKyAgICAvLyBS
ZXR1cm5zIHRpbWUgZm9ybWF0IGluIFVuaWNvZGUgVFIzNSBMRE1MIGNvbnRhaW5pbmcgaG91ciwg
YW5kIG1pbnV0ZQorICAgIC8vIHdpdGggb3B0aW9uYWwgcGVyaW9kKEFNL1BNKSwgZS5nLiAiaDpt
bSBhIgorICAgIC8vIE5vdGU6IFNvbWUgcGxhdGZvcm1zIHJldHVybiBzYW1lIHZhbHVlIGFzIHRp
bWVGb3JtYXQoKS4KKyAgICB2aXJ0dWFsIFN0cmluZyBzaG9ydFRpbWVGb3JtYXQoKSA9IDA7CisK
KyAgICAvLyBSZXR1cm5zIGEgZGF0ZS10aW1lIGZvcm1hdCBpbiBVbmljb2RlIFRSMzUgTERNTC4g
SXQgc2hvdWxkIGhhdmUgYSBzZWNvbmRzCisgICAgLy8gZmllbGQuCisgICAgU3RyaW5nIGRhdGVU
aW1lRm9ybWF0V2l0aFNlY29uZHMoKTsKKworICAgIC8vIFJldHVybnMgYSBkYXRlLXRpbWUgZm9y
bWF0IGluIFVuaWNvZGUgVFIzNSBMRE1MLiBJdCBzaG91bGQgaGF2ZSBubyBzZWNvbmRzCisgICAg
Ly8gZmllbGQuCisgICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKKwor
ICAgIC8vIFJldHVybnMgYSB2ZWN0b3Igb2Ygc3RyaW5nIG9mIHdoaWNoIHNpemUgaXMgMTIuIFRo
ZSBmaXJzdCBpdGVtIGlzIGEKKyAgICAvLyBsb2NhbGl6ZWQgc3RyaW5nIG9mIEphbiBhbmQgdGhl
IGxhc3QgaXRlbSBpcyBhIGxvY2FsaXplZCBzdHJpbmcgb2YKKyAgICAvLyBEZWMuIFRoZXNlIHN0
cmluZ3Mgc2hvdWxkIGJlIHNob3J0LgorICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHNob3J0TW9udGhMYWJlbHMoKSA9IDA7CisKKyAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0
cmluZyBvZiB3aGljaCBzaXplIGlzIDEyLiBUaGUgZmlyc3QgaXRlbSBpcyBhCisgICAgLy8gc3Rh
bmQtYWxvbmUgbG9jYWxpemVkIHN0cmluZyBvZiBKYW51YXJ5IGFuZCB0aGUgbGFzdCBpdGVtIGlz
IGEKKyAgICAvLyBzdGFuZC1hbG9uZSBsb2NhbGl6ZWQgc3RyaW5nIG9mIERlY2VtYmVyLiBUaGVz
ZSBzdHJpbmdzIHNob3VsZCBub3QgYmUKKyAgICAvLyBhYmJyZXZpYXRpb25zLgorICAgIHZpcnR1
YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YW5kQWxvbmVNb250aExhYmVscygpID0gMDsKKwor
ICAgIC8vIFN0YW5kLWFsb25lIG1vbnRoIHZlcnNpb24gb2Ygc2hvcnRNb250aExhYmVscy4KKyAg
ICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVs
cygpID0gMDsKKworICAgIC8vIFJldHVybnMgbG9jYWxpemVkIHBlcmlvZCBmaWVsZChBTS9QTSkg
c3RyaW5ncy4KKyAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0aW1lQU1QTUxhYmVs
cygpID0gMDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikgfHwgRU5BQkxF
KElOUFVUX01VTFRJUExFX0ZJRUxEU19VSSkKKyAgICAvLyBSZXR1cm5zIGEgdmVjdG9yIG9mIHN0
cmluZyBvZiB3aGljaCBzaXplIGlzIDEyLiBUaGUgZmlyc3QgaXRlbSBpcyBhCisgICAgLy8gbG9j
YWxpemVkIHN0cmluZyBvZiBKYW51YXJ5LCBhbmQgdGhlIGxhc3QgaXRlbSBpcyBhIGxvY2FsaXpl
ZCBzdHJpbmcgb2YKKyAgICAvLyBEZWNlbWJlci4gVGhlc2Ugc3RyaW5ncyBzaG91bGQgbm90IGJl
IGFiYnJldmlhdGlvbnMuCisgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhM
YWJlbHMoKSA9IDA7CisjZW5kaWYKKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAg
Ly8gUmV0dXJucyBhIHZlY3RvciBvZiBzdHJpbmcgb2Ygd2hpY2ggc2l6ZSBpcyA3LiBUaGUgZmly
c3QgaXRlbSBpcyBhCisgICAgLy8gbG9jYWxpemVkIHNob3J0IHN0cmluZyBvZiBNb25kYXksIGFu
ZCB0aGUgbGFzdCBpdGVtIGlzIGEgbG9jYWxpemVkCisgICAgLy8gc2hvcnQgc3RyaW5nIG9mIFNh
dHVyZGF5LiBUaGVzZSBzdHJpbmdzIHNob3VsZCBiZSBzaG9ydC4KKyAgICB2aXJ0dWFsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB3ZWVrRGF5U2hvcnRMYWJlbHMoKSA9IDA7CisKKyAgICAvLyBUaGUg
Zmlyc3QgZGF5IG9mIGEgd2Vlay4gMCBpcyBTdW5kYXksIGFuZCA2IGlzIFNhdHVyZGF5LgorICAg
IHZpcnR1YWwgdW5zaWduZWQgZmlyc3REYXlPZldlZWsoKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0
cmluZyBkYXRlRm9ybWF0VGV4dCgpID0gMDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBwZW9w
bGUgdXNlIHJpZ2h0LXRvLWxlZnQgd3JpdGluZyBpbiB0aGUgbG9jYWxlIGZvciB0aGlzCisgICAg
Ly8gb2JqZWN0LgorICAgIHZpcnR1YWwgYm9vbCBpc1JUTCgpID0gMDsKKyNlbmRpZgorCisgICAg
Ly8gUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF0ZS90aW1lIHN0cmluZyBs
b2NhbGl6ZWQKKyAgICAvLyBmb3IgdGhpcyBMb2NhbGl6ZXIgbG9jYWxlLiBJZiB0aGUgaW5wdXQg
c3RyaW5nIGlzIG5vdCB2YWxpZCBvcgorICAgIC8vIGFuIGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qg
c3VwcG9ydCBsb2NhbGl6ZWQgZGF0ZXMsIHRoaXMKKyAgICAvLyBmdW5jdGlvbiByZXR1cm5zIE5h
Ti4gSWYgdGhlIGlucHV0IHN0cmluZyBpcyB2YWxpZCB0aGlzCisgICAgLy8gZnVuY3Rpb24gcmV0
dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxCisgICAgLy8g
MDA6MDA6MDAuMDAwIFVUQy4KKyAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZURhdGVUaW1lKGNvbnN0
IFN0cmluZyYsIERhdGVDb21wb25lbnRzOjpUeXBlKSA9IDA7CisKKyAgICBlbnVtIEZvcm1hdFR5
cGUgeyBGb3JtYXRUeXBlVW5zcGVjaWZpZWQsIEZvcm1hdFR5cGVTaG9ydCwgRm9ybWF0VHlwZU1l
ZGl1bSB9OworCisgICAgLy8gU2VyaWFsaXplcyB0aGUgc3BlY2lmaWVkIGRhdGUgaW50byBhIGZv
cm1hdHRlZCBkYXRlIHN0cmluZyB0bworICAgIC8vIGRpc3BsYXkgdG8gdGhlIHVzZXIuIElmIGFu
IGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydAorICAgIC8vIGxvY2FsaXplZCBkYXRlcyB0
aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisgICAgU3RyaW5nIGZv
cm1hdERhdGVUaW1lKGNvbnN0IERhdGVDb21wb25lbnRzJiwgRm9ybWF0VHlwZSA9IEZvcm1hdFR5
cGVVbnNwZWNpZmllZCk7CisKKyAgICB2aXJ0dWFsIH5Mb2NhbGl6ZXIoKTsKKworcHJvdGVjdGVk
OgorICAgIGVudW0geworICAgICAgICAvLyAwLTkgZm9yIGRpZ2l0cy4KKyAgICAgICAgRGVjaW1h
bFNlcGFyYXRvckluZGV4ID0gMTAsCisgICAgICAgIEdyb3VwU2VwYXJhdG9ySW5kZXggPSAxMSwK
KyAgICAgICAgRGVjaW1hbFN5bWJvbHNTaXplCisgICAgfTsKKworI2lmIEVOQUJMRShJTlBVVF9N
VUxUSVBMRV9GSUVMRFNfVUkpCisgICAgU3RyaW5nIG1fZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25k
czsKKyAgICBTdHJpbmcgbV9kYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzOworI2VuZGlmCisK
KyAgICBMb2NhbGl6ZXIoKSA6IG1faGFzTG9jYWxpemVyRGF0YShmYWxzZSkgeyB9CisgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGl6ZXJEYXRhKCkgPSAwOworICAgIHZvaWQgc2V0TG9j
YWxpemVyRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nLCBEZWNpbWFsU3ltYm9sc1NpemU+JiwgY29u
c3QgU3RyaW5nJiBwb3NpdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBwb3NpdGl2ZVN1ZmZpeCwg
Y29uc3QgU3RyaW5nJiBuZWdhdGl2ZVByZWZpeCwgY29uc3QgU3RyaW5nJiBuZWdhdGl2ZVN1ZmZp
eCk7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkZXRlY3RTaWduQW5kR2V0RGlnaXRSYW5nZShjb25z
dCBTdHJpbmcmIGlucHV0LCBib29sJiBpc05lZ2F0aXZlLCB1bnNpZ25lZCYgc3RhcnRJbmRleCwg
dW5zaWduZWQmIGVuZEluZGV4KTsKKyAgICB1bnNpZ25lZCBtYXRjaGVkRGVjaW1hbFN5bWJvbElu
ZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBwb3NpdGlvbik7CisKKyAgICBTdHJp
bmcgbV9kZWNpbWFsU3ltYm9sc1tEZWNpbWFsU3ltYm9sc1NpemVdOworICAgIFN0cmluZyBtX3Bv
c2l0aXZlUHJlZml4OworICAgIFN0cmluZyBtX3Bvc2l0aXZlU3VmZml4OworICAgIFN0cmluZyBt
X25lZ2F0aXZlUHJlZml4OworICAgIFN0cmluZyBtX25lZ2F0aXZlU3VmZml4OworICAgIGJvb2wg
bV9oYXNMb2NhbGl6ZXJEYXRhOworfTsKKworaW5saW5lIFBhc3NPd25QdHI8TG9jYWxpemVyPiBM
b2NhbGl6ZXI6OmNyZWF0ZURlZmF1bHQoKQoreworICAgIHJldHVybiBMb2NhbGl6ZXI6OmNyZWF0
ZShkZWZhdWx0TGFuZ3VhZ2UoKSk7Cit9CisKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAppbmRleCAzMDcyZGQ1MmNjNDdhM2IxOWVjMmE4
OWFkMGJlNGRjNDVkYmNiZTczLi5kOGRjN2U4YTMxYzE4ZjkyMDBmOGFkMjdjMWJlNDRiYTYxMWJk
OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVN
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApA
QCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBMb2NhbGVNYWNfaAogI2RlZmluZSBMb2NhbGVNYWNf
aAogCi0jaW5jbHVkZSAiTG9jYWxpemVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Db2xvckNob29zZXJVSUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NvbG9yQ2hvb3NlclVJQ29udHJvbGxlci5oCmluZGV4IDQwYzg3OGI4ZWMwMDE2YWY2YTc1
ZWYwYmQ2YjRkZGM4ZTNiNGQzYmIuLjg5Y2QxYTZiN2I0MTA3MWZkYWFjNzc1YzQ0YjQ4NGQ0MDhj
NTVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hvb3Nl
clVJQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbG9yQ2hv
b3NlclVJQ29udHJvbGxlci5oCkBAIC0yOSw4ICsyOSw4IEBACiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCiAKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKLSNpbmNsdWRlICJMb2NhbGl6
ZXIuaCIKICNpbmNsdWRlICJQYWdlUG9wdXBDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxv
Y2FsZS5oIgogI2luY2x1ZGUgIldlYkNvbG9yQ2hvb3NlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcAppbmRleCAyMDA0NGFk
ZDhiNDNhMmZmZmQ2M2IyOTE4YmFlMTQ1Mzk5MDExMmIzLi4xM2JhNjJlYjQ1Mzc5NDA0YmM2ZjAz
MjZlYjYwNDhkMDM4OTg4Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmNwcApAQCAtNDAsOSArNDAsOSBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTGFuZ3Vh
Z2UuaCIKLSNpbmNsdWRlICJMb2NhbGl6ZXIuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBpY2tlckNvbW1vbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTG9jYWxlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgo=
</data>
<flag name="review"
          id="184967"
          type_id="1"
          status="+"
          setter="yutak"
    />
          </attachment>
      

    </bug>

</bugzilla>