<?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>122639</bug_id>
          
          <creation_ts>2013-10-10 23:12:19 -0700</creation_ts>
          <short_desc>Use unique_ptr instead of delete in a few places</short_desc>
          <delta_ts>2013-10-12 07:14:05 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>938701</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:12:19 -0700</bug_when>
    <thetext>Use unique_ptr instead of delete in a few places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938710</commentid>
    <comment_count>1</comment_count>
      <attachid>213969</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:23:51 -0700</bug_when>
    <thetext>Created attachment 213969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938713</commentid>
    <comment_count>2</comment_count>
      <attachid>213969</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:31:50 -0700</bug_when>
    <thetext>Comment on attachment 213969
Patch

Attachment 213969 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3929015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938718</commentid>
    <comment_count>3</comment_count>
      <attachid>213969</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:43:20 -0700</bug_when>
    <thetext>Comment on attachment 213969
Patch

Attachment 213969 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3948016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938719</commentid>
    <comment_count>4</comment_count>
      <attachid>213971</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-10 23:43:42 -0700</bug_when>
    <thetext>Created attachment 213971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938726</commentid>
    <comment_count>5</comment_count>
      <attachid>213971</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:50:47 -0700</bug_when>
    <thetext>Comment on attachment 213971
Patch

Attachment 213971 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3945011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938727</commentid>
    <comment_count>6</comment_count>
      <attachid>213971</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-10 23:53:03 -0700</bug_when>
    <thetext>Comment on attachment 213971
Patch

Attachment 213971 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3885027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938735</commentid>
    <comment_count>7</comment_count>
      <attachid>213971</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-11 00:24:45 -0700</bug_when>
    <thetext>Comment on attachment 213971
Patch

Attachment 213971 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/3945018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938739</commentid>
    <comment_count>8</comment_count>
      <attachid>213971</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-11 00:38:57 -0700</bug_when>
    <thetext>Comment on attachment 213971
Patch

Attachment 213971 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/3403120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939030</commentid>
    <comment_count>9</comment_count>
      <attachid>214041</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 19:12:23 -0700</bug_when>
    <thetext>Created attachment 214041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939031</commentid>
    <comment_count>10</comment_count>
      <attachid>214041</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-11 19:17:34 -0700</bug_when>
    <thetext>Comment on attachment 214041
Patch

Attachment 214041 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3954303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939032</commentid>
    <comment_count>11</comment_count>
      <attachid>214041</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-11 19:19:01 -0700</bug_when>
    <thetext>Comment on attachment 214041
Patch

Attachment 214041 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3867356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939037</commentid>
    <comment_count>12</comment_count>
      <attachid>214043</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 19:31:03 -0700</bug_when>
    <thetext>Created attachment 214043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939040</commentid>
    <comment_count>13</comment_count>
      <attachid>214043</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-11 19:41:55 -0700</bug_when>
    <thetext>Comment on attachment 214043
Patch

Attachment 214043 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3776362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939042</commentid>
    <comment_count>14</comment_count>
      <attachid>214045</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-11 20:03:01 -0700</bug_when>
    <thetext>Created attachment 214045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939075</commentid>
    <comment_count>15</comment_count>
      <attachid>214045</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-12 07:14:02 -0700</bug_when>
    <thetext>Comment on attachment 214045
Patch

Clearing flags on attachment: 214045

Committed r157337: &lt;http://trac.webkit.org/changeset/157337&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939076</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-12 07:14:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213969</attachid>
            <date>2013-10-10 23:23:51 -0700</date>
            <delta_ts>2013-10-10 23:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122639-20131010232349.patch</filename>
            <type>text/plain</type>
            <size>36201</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyNDY5OTNmNTc0OTBi
YTEyODFmYjEwZWEzZTQ2YzVlMjY0NmM3Yy4uOTFlNTY5YmNlY2I0MWM0ZTExYWEzOWVkY2E1YzMx
OWRiODJmY2M2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0
ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2d1aWQsIHdoaWNoIGlzIHNldCBpbiB0aGUg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgZXhwbGljaXRseSBhbnl3YXkuIFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC4gVXNl
IHRoZSBhZGQgaWRpb20gaW5zdGVhZCBvZiB0aGUgZ2V0L3NldCBpZGlvbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UpOiBVc2UgdGhlIGZpbmQv
cmVtb3ZlIGlkaW9tIGluc3RlYWQgb2YgdGhlCisgICAgICAgIGdldC9yZW1vdmUgaWRpb20uCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IFVzZSBhdXRvIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbWFw
IHR5cGUgYnkgbmFtZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQpOiBEb24ndCBpbml0aWFs
aXplIG1fZm9udERhdGEgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6IERvbid0IGRlbGV0ZSBtX2ZvbnREYXRh
LiB1bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKTogQWRkIGEgZ2V0LgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEb24ndCBkZWxldGUgbV9mb250RGF0YS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6IENoYW5nZWQgbV9mb250RGF0YSB0byBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOiBEb24ndCBpbml0aWFsaXplIG1fZnJhbWVUaW1lciB0byAwOyB1
bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
dGFydEFuaW1hdGlvbik6IFVzZSBtYWtlX3VuaXF1ZSB0byBjcmVhdGUgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24pOiBEb24ndCBkZWxldGUg
bV9mcmFtZVRpbWVyLiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQ2hhbmdlZCBtX0ZyYW1lVGltZXIgdG8gYSB1bmlx
dWVfcHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRG9uJ3QgaW5p
dGlhbGl6ZSBtX2ZyYW1lVGltZXIgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IERvbid0IGNhbGwgQ0dGb250UmVsZWFzZSBvbiBtX2NnRm9udC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOiBV
c2UgZ2V0IG9uIG1fY2dGb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCwgYW5kIG1ha2VfdW5pcXVlIGlu
c3RlYWQgb2YgbmV3LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6IENobmFnZWQgbV9jZ0ZvbnQgdG8gYmUgYSBSZXRhaW5QdHIsIGFuZCB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB0byBiZSBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uCisgICAgICAgIHRvIGEgdW5pcXVlX3B0ciwgYW5kIG1hZGUgY29uc3Ry
dWN0b3JzIHB1YmxpYy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIG1ha2VfdW5pcXVlLgor
CiAyMDEzLTEwLTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IEV2ZW50Q29udGV4dCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIEV2ZW50RGlzcGF0Y2hlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBmOTVlMGRkOGQ3ZTJkOTZhNjVmZTFhZmU5MWE2M2Y2MGIwYjgy
Y2Q4Li4zMTgwYjdiMTBhN2YwYTk5NzkwMDIxNGYzYmI2ODAxZWRiZDBkZTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlxdWVfcHRyIGluc3RlYWQgb2YgZGVsZXRlIGlu
IGEgZmV3IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2
YXRlIGluaXRdKTogVXNlIG1ha2VfdW5pcXVlLgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0
ZSBkZWFsbG9jXSk6IERvbid0IGRlbGV0ZS4KKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZhdGUg
ZmluYWxpemVdKTogRG9uJ3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBk
YXRhXSk6IFVzZSBnZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAocHJpdmF0ZVNlc3Npb24pOiBVc2UgTmV2ZXJEZXN0
cm95ZWQgaGVyZSBpbnN0ZWFkIG9mIGEgcmF3IHBvaW50ZXIuCisgICAgICAgIChXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIHRoZQor
ICAgICAgICBuZXcgZnVuY3Rpb24gaW5zdGVhZCBvZiBkaXJlY3QgZ2xvYmFsIHZhcmlhYmxlIGFj
Y2Vzcy4KKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbik6IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFt
ZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVQcml2YXRlIGRlYWxsb2NdKTogRG9uJ3QgZGVsZXRl
LgorICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZmluYWxpemVdKTogRG9uJ3QgZGVsZXRlLgor
ICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKTogVXNlIG1ha2VfdW5p
cXVlLgorICAgICAgICAoLVtXZWJGcmFtZSBfZGV0YWNoU2NyaXB0RGVidWdnZXJdKTogRG9uJ3Qg
ZGVsZXRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oOiBVc2UgdW5pcXVl
X3B0ci4KKwogMjAxMy0xMC0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBbHdheXMgZm9yY2UgbGF5b3V0IGJlZm9yZSBmbHVzaGluZyBjb21wb3Np
dGluZyBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyMmYwNDk3ZjI3Y2VhMmY0OTcyNmE4OTg2ODg5YWI5
MDljMTdlNmU1Li41MjMyNjJkYjIyMTI2YmI1ZTc1OWI4MzU1MThjOTY5MzgwYWNiNDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMTAtMTAgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlxdWVfcHRyIGluc3RlYWQgb2YgZGVsZXRlIGlu
IGEgZmV3IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW06Cisg
ICAgICAgIChXZWJLaXQ6OnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTogVXNlIE5ldmVy
RGVzdHJveWVkIGFuZCB1bmlxdWVfcHRyLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IFVzZSBzdGQ6Om1vdmUu
CisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6IFVzZSBzdGQ6Om1v
dmUuIEFsc28gYWRkIGluc3RlYWQgb2Ygc2V0LgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1h
bmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZCk6IERvbid0IGRlbGV0ZS4KKworICAg
ICAgICAqIFNoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6IENoYW5nZWQgbV9kb3du
bG9hZHMgdG8gaG9sZCB1bmlxdWVfcHRyIGluc3RlYWQKKyAgICAgICAgb2YgcmF3IHBvaW50ZXJz
LgorCisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDogVXNlIHN0ZDo6dW5pcXVl
X3B0ciBmb3IgbV9kYXRhLgorCisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
SGFuZGxlQXJyYXkpOiBEb24ndCBpbml0aWFsaXplIG1fZGF0YSB0byAwLgorICAgICAgICAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFycmF5KTogRG9uJ3Qg
ZGVsZXRlIG1fZGF0YS4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmFsbG9jYXRlKTogVXNlIG1ha2VfdW5pcXVlIHRvIGFsbG9jYXRlIG1fZGF0YS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVTZXNzaW9uKTogVXNlIE5ldmVy
RGVzdHJveWVkIGFuZCB1bmlxdWVfcHRyLgorICAgICAgICAoV2ViS2l0OjppZGVudGlmaWVyQmFz
ZSk6IFVzZSBOZXZlckRlc3Ryb3llZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSk6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIHRoZSBhYm92ZS4KKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0
cyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbik6IERpdHRvLgorCiAyMDEzLTEwLTEwICBCeXVuZ3dvbyBMZWUgIDxidzgw
LmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFNlcGFyYXRlIGRpc3BhdGNo
IGNvbnRleHQgZnJvbSBXb3JrUXVldWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcAppbmRleCBiNWFiZTEw
MWNjNWJjY2M2MTkwMWY0YTY2NjIxOTI0N2VlYTNhOGNkLi41YTlmNzFlMWJhOTg1ZWM1ZmZjOTRj
MmZmNDAyOTQ1YmNhZjEwMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC0xNjcsMTIgKzE2OCwxMyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgdXBkYXRlR3VpZFZlcnNpb25NYXAoRGF0YWJhc2VHdWlkIGd1aWQsIFN0
cmluZyBuZXdWZXJzaW9uKQogICAgIGd1aWRUb1ZlcnNpb25NYXAoKS5zZXQoZ3VpZCwgbmV3VmVy
c2lvbi5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IG5ld1ZlcnNpb24uaXNvbGF0ZWRDb3B5KCkpOwog
fQogCi10eXBlZGVmIEhhc2hNYXA8RGF0YWJhc2VHdWlkLCBIYXNoU2V0PERhdGFiYXNlQmFja2Vu
ZEJhc2UqPio+IEd1aWREYXRhYmFzZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQs
IHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPj4+IEd1aWREYXRh
YmFzZU1hcDsKKwogc3RhdGljIEd1aWREYXRhYmFzZU1hcCYgZ3VpZFRvRGF0YWJhc2VNYXAoKQog
ewogICAgIC8vIEVuc3VyZSB0aGUgdGhlIG11dGV4IGlzIGxvY2tlZC4KICAgICBBU1NFUlQoIWd1
aWRNdXRleCgpLnRyeUxvY2soKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChHdWlkRGF0YWJh
c2VNYXAsIG1hcCwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxHdWlkRGF0YWJhc2VN
YXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCkBAIC0xODQsMTIgKzE4NiwxMiBAQCBzdGF0
aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JPcmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbQogICAgIFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiArICIvIiAr
IG5hbWU7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKElER3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cCwgKCkpOwotICAgIERhdGFiYXNlR3VpZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1h
cC5nZXQoc3RyaW5nSUQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmlu
ZywgaW50Pj4gbWFwOworICAgIERhdGFiYXNlR3VpZCBndWlkID0gbWFwLmdldCgpLmdldChzdHJp
bmdJRCk7CiAgICAgaWYgKCFndWlkKSB7CiAgICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dV
SUQgPSAxOwogICAgICAgICBndWlkID0gY3VycmVudE5ld0dVSUQrKzsKLSAgICAgICAgc3RyaW5n
SWRlbnRpZmllclRvR1VJRE1hcC5zZXQoc3RyaW5nSUQsIGd1aWQpOworICAgICAgICBtYXAuZ2V0
KCkuc2V0KHN0cmluZ0lELCBndWlkKTsKICAgICB9CiAKICAgICByZXR1cm4gZ3VpZDsKQEAgLTIx
NSw3ICsyMTcsNiBAQCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKFBh
c3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQ29udGV4dD4gZGF0YQogICAgICwgbV9leHBlY3RlZFZl
cnNpb24oZXhwZWN0ZWRWZXJzaW9uLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9kaXNwbGF5TmFt
ZShkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3Rp
bWF0ZWRTaXplKQotICAgICwgbV9ndWlkKDApCiAgICAgLCBtX29wZW5lZChmYWxzZSkKICAgICAs
IG1fbmV3KGZhbHNlKQogICAgICwgbV9pc1N5bmNEYXRhYmFzZShkYXRhYmFzZVR5cGUgPT0gRGF0
YWJhc2VUeXBlOjpTeW5jKQpAQCAtMjI1LDE3ICsyMjYsMTQgQEAgRGF0YWJhc2VCYWNrZW5kQmFz
ZTo6RGF0YWJhc2VCYWNrZW5kQmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+
IGRhdGEKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3Jl
YXRlKGluZm9UYWJsZU5hbWUpOwogCiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKLSAgICAgICAg
bV9uYW1lID0gIiI7CisgICAgICAgIG1fbmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAKICAgICB7CiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CiAgICAgICAgIG1fZ3VpZCA9
IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5hbWUp
OwotICAgICAgICBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPiogaGFzaFNldCA9IGd1aWRU
b0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7Ci0gICAgICAgIGlmICghaGFzaFNldCkgewotICAg
ICAgICAgICAgaGFzaFNldCA9IG5ldyBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPjsKLSAg
ICAgICAgICAgIGd1aWRUb0RhdGFiYXNlTWFwKCkuc2V0KG1fZ3VpZCwgaGFzaFNldCk7Ci0gICAg
ICAgIH0KLQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRC
YXNlKj4+JiBoYXNoU2V0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5hZGQobV9ndWlkLCBudWxscHRy
KS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGlmICghaGFzaFNldCkKKyAgICAgICAgICAgIGhh
c2hTZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kQmFzZSo+Pigp
OwogICAgICAgICBoYXNoU2V0LT5hZGQodGhpcyk7CiAgICAgfQogCkBAIC0yNjgsMTMgKzI2Niwx
MyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIHsKICAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKIAotICAgICAgICBIYXNoU2V0
PERhdGFiYXNlQmFja2VuZEJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0
KG1fZ3VpZCk7Ci0gICAgICAgIEFTU0VSVChoYXNoU2V0KTsKLSAgICAgICAgQVNTRVJUKGhhc2hT
ZXQtPmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgaGFzaFNldC0+cmVtb3ZlKHRoaXMpOwotICAg
ICAgICBpZiAoaGFzaFNldC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFz
ZU1hcCgpLnJlbW92ZShtX2d1aWQpOwotICAgICAgICAgICAgZGVsZXRlIGhhc2hTZXQ7CisgICAg
ICAgIGF1dG8gaXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmZpbmQobV9ndWlkKTsKKyAgICAgICAg
QVNTRVJUKGl0ICE9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZW5kKCkpOworICAgICAgICBBU1NFUlQo
aXQtPnZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS0+Y29udGFpbnModGhpcykpOwor
ICAgICAgICBpdC0+dmFsdWUtPnJlbW92ZSh0aGlzKTsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnJlbW92ZShpdCk7
CiAgICAgICAgICAgICBndWlkVG9WZXJzaW9uTWFwKCkucmVtb3ZlKG1fZ3VpZCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0zMjksNyArMzI3LDcgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpw
ZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKICAg
ICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CiAKLSAgICAgICAg
R3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9yIGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQo
bV9ndWlkKTsKKyAgICAgICAgYXV0byBlbnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1f
Z3VpZCk7CiAgICAgICAgIGlmIChlbnRyeSAhPSBndWlkVG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsK
ICAgICAgICAgICAgIC8vIE1hcCBudWxsIHN0cmluZyB0byBlbXB0eSBzdHJpbmcgKHNlZSB1cGRh
dGVHdWlkVmVyc2lvbk1hcCgpKS4KICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnkt
PnZhbHVlLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IGVudHJ5LT52YWx1ZS5pc29sYXRlZENv
cHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4
YzU1ZGQxOWEyOGVkNjU3YzhjMTZkOGNhNzlkZGJiZDE0NjQwNGQ0Li5lMDcwMTBhNmU3NGU1ZDg1
ZmIzNGJlMTM0YzM0ZTU3NDcyMDMwNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCkBAIC01MCw3ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Q2FjaGVkRm9udDo6Q2FjaGVkRm9udChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKICAgICA6IENhY2hlZFJlc291cmNlKHJlc291cmNlUmVxdWVzdCwgRm9udFJlc291cmNl
KQotICAgICwgbV9mb250RGF0YSgwKQogICAgICwgbV9sb2FkSW5pdGlhdGVkKGZhbHNlKQogICAg
ICwgbV9oYXNDcmVhdGVkRm9udERhdGEoZmFsc2UpCiB7CkBAIC01OCw3ICs1Nyw2IEBAIENhY2hl
ZEZvbnQ6OkNhY2hlZEZvbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CiAKIENhY2hlZEZvbnQ6On5DYWNoZWRGb250KCkKIHsKLSAgICBkZWxldGUgbV9mb250RGF0YTsK
IH0KIAogdm9pZCBDYWNoZWRGb250Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQpAQCAtMTAwLDcgKzk4LDcgQEAgYm9vbCBD
YWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSgpCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNldFN0YXR1cyhEZWNvZGVFcnJvcik7CiAgICAgfQotICAgIHJldHVybiBtX2ZvbnREYXRh
OworICAgIHJldHVybiBtX2ZvbnREYXRhLmdldCgpOwogfQogCiBGb250UGxhdGZvcm1EYXRhIENh
Y2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9s
ZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFy
aWFudCB3aWR0aFZhcmlhbnQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCkBAIC0x
NjQsMTAgKzE2Miw3IEBAIFNWR0ZvbnRFbGVtZW50KiBDYWNoZWRGb250OjpnZXRTVkdGb250QnlJ
ZChjb25zdCBTdHJpbmcmIGZvbnROYW1lKSBjb25zdAogCiB2b2lkIENhY2hlZEZvbnQ6OmFsbENs
aWVudHNSZW1vdmVkKCkKIHsKLSAgICBpZiAobV9mb250RGF0YSkgewotICAgICAgICBkZWxldGUg
bV9mb250RGF0YTsKLSAgICAgICAgbV9mb250RGF0YSA9IDA7Ci0gICAgfQorICAgIG1fZm9udERh
dGEgPSBudWxscHRyOwogfQogCiB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDU0ODE3OWZkYWRiYjA3MzUz
NjZmYTlmMzNjZDMxN2RjZTQ1OWUxNjYuLmNhNDMzYjYwYTE4MzM1NjQ4MDlkMjRmZGFmMGM2YjMz
NGE4YjU4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1v
dmVkKCkgT1ZFUlJJREU7CiAKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBtX2ZvbnREYXRh
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnREYXRh
OwogICAgIGJvb2wgbV9sb2FkSW5pdGlhdGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVkRm9udERh
dGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAppbmRleCBjODM1YjkyMDY2OTE1YmY5MDhmMDgyYTMzZjkzOWI4MGVjZGRhNWRjLi44MDA1
ZDhlYmIzYTM1NTU5ODA5YjExYTFjMGI3OWZkZWRmZmE3OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC00Myw3ICs0Myw2IEBA
IEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6
IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVz
KDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmlt
YXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAgICAs
IG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQpAQCAtNDI5LDcgKzQyOCw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJvb2wgY2F0Y2hVcElmTmVjZXNzYXJ5KQogCiAgICAgaWYg
KCFjYXRjaFVwSWZOZWNlc3NhcnkgfHwgdGltZSA8IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lKSB7
CiAgICAgICAgIC8vIEhhdmVuJ3QgeWV0IHJlYWNoZWQgdGltZSBmb3IgbmV4dCBmcmFtZSB0byBz
dGFydDsgZGVsYXkgdW50aWwgdGhlbi4KLSAgICAgICAgbV9mcmFtZVRpbWVyID0gbmV3IFRpbWVy
PEJpdG1hcEltYWdlPih0aGlzLCAmQml0bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAg
ICAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRpbWVyPEJpdG1hcEltYWdlPj4o
dGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9uKTsKICAgICAgICAgbV9mcmFtZVRp
bWVyLT5zdGFydE9uZVNob3Qoc3RkOjptYXgobV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgLSB0aW1l
LCAwLikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcmVhY2hlZCBv
ciBwYXNzZWQgdGhlIHRpbWUgZm9yIHRoZSBuZXh0IGZyYW1lIHRvIHN0YXJ0LgpAQCAtNDc5LDgg
KzQ3OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24oKQogewogICAgIC8vIFRo
aXMgdGltZXIgaXMgdXNlZCB0byBhbmltYXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdl
LiAgRG9uJ3QgaW52YWxpZGF0ZQogICAgIC8vIHRoZSB0aW1lciB1bmxlc3MgYWxsIHJlbmRlcmVy
cyBoYXZlIHN0b3BwZWQgZHJhd2luZy4KLSAgICBkZWxldGUgbV9mcmFtZVRpbWVyOwotICAgIG1f
ZnJhbWVUaW1lciA9IDA7CisgICAgbV9mcmFtZVRpbWVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBC
aXRtYXBJbWFnZTo6cmVzZXRBbmltYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggYmM5YTYzZmM0ZWU1Nzk0Zjc2Y2JkYTRmZTI5
MGY0MzVlYTVhNmFkOS4uZmVjYzdiZmRiMDYwNTViOGNhMzk5Yzc4NjM4NTJjNzk5ZDNlYzVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBA
IC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8v
IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBmcmFtZSBvZiBhbmltYXRpb24uCiAgICAgVmVjdG9y
PEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVz
IG9mIHRoZSBhbmltYXRpb24uIFdlIGhhdmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0
aGUgY2FjaGUuCiAKLSAgICBUaW1lcjxCaXRtYXBJbWFnZT4qIG1fZnJhbWVUaW1lcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGltZXI8Qml0bWFwSW1hZ2U+PiBtX2ZyYW1lVGltZXI7CiAgICAgaW50
IG1fcmVwZXRpdGlvbkNvdW50OyAvLyBIb3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ug
c2hvdWxkIGRvLiAgVGhpcyB3aWxsIGJlIGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlw
ZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0aW9uLgogICAgIFJlcGV0aXRpb25Db3VudFN0YXR1cyBt
X3JlcGV0aXRpb25Db3VudFN0YXR1czsKICAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAg
Ly8gSG93IG1hbnkgcmVwZXRpdGlvbnMgd2UndmUgZmluaXNoZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IDlj
ZGM2ZmEzOGE4NTFmOTE3Njg0MTkxNzBmZDI5OGFmNDU4MmNkMDcuLjU1ODlhYTUxMGM4ZmUxMmZk
ZGI2ZGM1ZGQ2OTY3YTRlNWE2NmZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC02Nyw3ICs2Nyw2IEBAIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgw
KQogICAgICwgbV9mcmFtZXMoMCkKLSAgICAsIG1fZnJhbWVUaW1lcigwKQogICAgICwgbV9yZXBl
dGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudFN0YXR1
cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKaW5kZXggZDU2MjExODJhODAwOWIwMDc2ZWZhYTVlM2RjNjFjMWY5ZGNm
NmMzMi4uN2IxZjg5OGJiMTcxMjRjMzhhODQzMzRkNDRhNzk4ZTVjZmJiZTdlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzEsMTUgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
KQogewotICAgIENHRm9udFJlbGVhc2UobV9jZ0ZvbnQpOwogfQogCiBGb250UGxhdGZvcm1EYXRh
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRo
VmFyaWFudCB3aWR0aFZhcmlhbnQsIEZvbnRSZW5kZXJpbmdNb2RlKQogewotICAgIHJldHVybiBG
b250UGxhdGZvcm1EYXRhKG1fY2dGb250LCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9u
LCB3aWR0aFZhcmlhbnQpOworICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKG1fY2dGb250Lmdl
dCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQpOwogfQog
Ci1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAKQEAgLTQ3LDE0ICs0NiwxNCBAQCBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQogICAgIE9wZW5UeXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIp
OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5z
YW5pdGl6ZSgpOwogICAgIGlmICghdHJhbnNjb2RlQnVmZmVyKQotICAgICAgICByZXR1cm4gMDsg
Ly8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOyAvLyB2YWxpZGF0
aW9uIGZhaWxlZC4KICAgICBidWZmZXIgPSB0cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CiAjZWxzZQog
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNmbnRCdWZmZXI7CiAgICAgaWYgKGlzV09GRihidWZm
ZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBzZm50OwogICAgICAgICBpZiAoIWNvbnZlcnRX
T0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHNmbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmFkb3B0VmVjdG9yKHNmbnQpOwogICAgICAgICBidWZmZXIgPSBzZm50QnVmZmVyLmdldCgpOwpA
QCAtNjgsMTAgKzY3LDkgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIAogICAgIFJldGFpblB0cjxDR0Zv
bnRSZWY+IGNnRm9udFJlZiA9IGFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aERhdGFQcm92aWRlcihk
YXRhUHJvdmlkZXIuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9udFJlZikKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNv
bnRhaW5lclJlZiwgY2dGb250UmVmLmxlYWtSZWYoKSk7Ci0gICAgcmV0dXJuIGZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4oY29udGFpbmVyUmVmLCBjZ0ZvbnRSZWYuZ2V0KCkpOwogfQogCiBib29sIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYzdhZTFjYTFmNDBlNzFhYTk3MGM4ZjNlZmJi
YzEwMTEyYTc0YzlkOC4uYzg3Y2NkODk5MGI1OWY2YjFhNmIzNjk3YmE2NGEzZGZkMTM2M2JhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIHR5
cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogdHlwZWRlZiBVSW50MzIgQVRTRm9udENv
bnRhaW5lclJlZjsKQEAgLTUzLDEwICs1NCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wg
c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CiAKICAgICBBVFNGb250Q29udGFpbmVyUmVm
IG1fYXRzQ29udGFpbmVyOwotICAgIENHRm9udFJlZiBtX2NnRm9udDsKKyAgICBSZXRhaW5QdHI8
Q0dGb250UmVmPiBtX2NnRm9udDsKIH07CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBlZTc3NzI2M2VkNDEzZGU4NmE4
NDcxNjhlNmFjMWYzY2FjODNhNzIwLi41NmEwYTU5NzUxOGE3ZDZhOTZjMjQwOTg2YjVkYzg2YWU1
ZTczOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNl
c3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLSAgICBzdGF0aWMg
UGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwog
CiAgICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogCkBAIC01NSwx
MCArNTUsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShD
Rk5FVFdPUkspCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJldGFpblB0cjxDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmPik7CiAgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3Vu
ZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCiAgICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQoKTsgfQog
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlKCkgY29u
c3Q7CiAjZWxpZiBVU0UoU09VUCkKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oU291cFNlc3Np
b24qKTsKICAgICB2b2lkIHNldFNvdXBTZXNzaW9uKFNvdXBTZXNzaW9uKiBzZXNzaW9uKSB7IG1f
c2Vzc2lvbiA9IHNlc3Npb247IH0KICAgICBTb3VwU2Vzc2lvbiogc291cFNlc3Npb24oKSBjb25z
dCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KICNlbHNlCkBAIC02OSwxMSArNzEsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQot
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJl
Zj4pOwogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQKQotICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTb3VwU2Vzc2lvbiopOwogICAgIEdSZWZQdHI8U291cFNl
c3Npb24+IG1fc2Vzc2lvbjsKICNlbHNlCiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBt
X2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGVmNTk0N2Rl
OGYxM2ZkMDA3Mjk2Nzg1Y2YyN2RjYmI4MjA1NGM4ZDQuLmExM2YzMTY1YWM4NmQ5YjFmOTBjOGI3
YjRiOGYxNzYzNzA5MGU1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBA
IC04OSwxOCArODksMTggQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLVBhc3NPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQogewogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRl
QnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIE93
blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJ
ZGVudGlmaWVyLmdldCgpKSkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vz
c2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKSk7CiAjZWxzZQotICAgIE93blB0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
KGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgp
LCBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpKTsK
KyAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0
KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7
CiAjZW5kaWYKICAgICBzZXNzaW9uLT5tX2lzUHJpdmF0ZSA9IHRydWU7CiAKLSAgICByZXR1cm4g
c2Vzc2lvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3Jh
Z2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmluZGV4IGUw
Mzc4Yjc2NzlkNTVmYmJjMTdmYzkwN2YzZWQzNTgxYWU0ODM1YmMuLjZmYjM2MmUxZjBmZDM4YTQw
MjkxYzZkODE2NTkzMGM0OGVmODA5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnkubW0KQEAgLTc0LDcgKzc0LDcgQEAgQGVuZAogQGludGVyZmFjZSBXZWJIaXN0b3J5UHJp
dmF0ZSA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2Vu
dHJpZXNCeVVSTDsKLSAgICBEYXRlVG9FbnRyaWVzTWFwKiBfZW50cmllc0J5RGF0ZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGF0ZVRvRW50cmllc01hcD4gX2VudHJpZXNCeURhdGU7CiAgICAgTlNN
dXRhYmxlQXJyYXkgKl9vcmRlcmVkTGFzdFZpc2l0ZWREYXlzOwogICAgIEJPT0wgaXRlbUxpbWl0
U2V0OwogICAgIGludCBpdGVtTGltaXQ7CkBAIC0xMzIsNyArMTMyLDcgQEAgLSAoaWQpaW5pdAog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAogICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotICAgIF9lbnRyaWVzQnlEYXRlID0gbmV3IERhdGVU
b0VudHJpZXNNYXA7CisgICAgX2VudHJpZXNCeURhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGVU
b0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTE0MSwxMyArMTQxLDEx
IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFtfZW50cmllc0J5VVJMIHJlbGVhc2VdOwogICAg
IFtfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyByZWxlYXNlXTsKLSAgICBkZWxldGUgX2VudHJpZXNC
eURhdGU7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKWZpbmFsaXplCiB7Ci0g
ICAgZGVsZXRlIF9lbnRyaWVzQnlEYXRlOwogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAg
LTYzNiw3ICs2MzQsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAgICAgCiAgICAgLy8gSWdub3JlcyB0
aGUgZGF0ZSBhbmQgaXRlbSBjb3VudCBsaW1pdHM7IHRoZXNlIGFyZSByZXNwZWN0ZWQgd2hlbiBs
b2FkaW5nIGluc3RlYWQgb2Ygd2hlbiBzYXZpbmcsIHNvCiAgICAgLy8gdGhhdCBjbGllbnRzIGNh
biBsZWFybiBvZiBkaXNjYXJkZWQgaXRlbXMgYnkgbGlzdGVuaW5nIHRvIFdlYkhpc3RvcnlJdGVt
c0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlmaWNhdGlvbi4KLSAgICBXZWJIaXN0b3J5V3JpdGVy
IHdyaXRlcihfZW50cmllc0J5RGF0ZSk7CisgICAgV2ViSGlzdG9yeVdyaXRlciB3cml0ZXIoX2Vu
dHJpZXNCeURhdGUuZ2V0KCkpOwogICAgIHdyaXRlci53cml0ZVByb3BlcnR5TGlzdCgpOwogICAg
IHJldHVybiBbWyhOU0RhdGEgKil3cml0ZXIucmVsZWFzZURhdGEoKS5nZXQoKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDRhZDc3YzZiMzRk
NDljNjJmZDI5YjY3NDNkZGIwMzg1ZTM5Nzc1MzIuLmFhOTU3MjdjN2NkMTY1YWNjYzcwNzQ4NGRj
ZGM2YzZlNTJkMmMwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMzIsMjcgKzMy
LDMxIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGlj
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb247CitzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVTZXNzaW9uKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4+IHNlc3Npb247CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIHZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lvbikKKyAgICBpZiAo
cHJpdmF0ZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdmF0ZVNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSkubGVha1B0cigpOworICAgIHBy
aXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUg
cHJpdmF0ZVNlc3Npb247Ci0gICAgcHJpdmF0ZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVTZXNz
aW9uKCkgPSBudWxscHRyOwogfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKQEAgLTk0LDcgKzk4LDcgQEAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChmcmFtZSgpICYm
IGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gKnByaXZhdGVTZXNzaW9uOworICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7
CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDY4ZjU5Y2Zk
ZDIwYzY5OGI5ZWMxMTBlYzBmNWIzMGEwN2IzNjVkNmUuLmQxOTI3NzYyMTk0NTdjYTU4MDEzMDZk
YWUzMTUyNDhlZGRjZTViNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtMTY0LDE1ICsxNjQsMTEgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW3dlYkZyYW1lVmll
dyByZWxlYXNlXTsKIAotICAgIGRlbGV0ZSBzY3JpcHREZWJ1Z2dlcjsKLQogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQogewotICAgIGRlbGV0ZSBzY3JpcHREZWJ1
Z2dlcjsKLQogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAgLTMyMiwyMCArMzE4LDE2IEBA
IC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVnZ2VyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIpIHsKLSAgICAgICAgQVNTRVJUKF9wcml2YXRlLT5z
Y3JpcHREZWJ1Z2dlciA9PSBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCkpOworICAgICAgICBBU1NF
UlQoX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyLmdldCgpID09IGdsb2JhbE9iamVjdC0+ZGVidWdn
ZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVi
dWdnZXIgPSBuZXcgV2ViU2NyaXB0RGVidWdnZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBfcHJpdmF0
ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihn
bG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lkKV9kZXRhY2hTY3JpcHREZWJ1Z2dlcgogewotICAg
IGlmICghX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBk
ZWxldGUgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyOwotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1
Z2dlciA9IDA7CisgICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gbnVsbHB0cjsKIH0KIAog
LSAoaWQpX2luaXRXaXRoV2ViRnJhbWVWaWV3OihXZWJGcmFtZVZpZXcgKilmdiB3ZWJWaWV3OihX
ZWJWaWV3ICopdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwu
aAppbmRleCBhYjhjNWMyODE4MWI2NDQwNDgxYzNlZWNiZWNiNjE2OWJlOGFjMmU4Li5mY2NiZWFh
MWNhYmRkZmZkNzNlNDNkOTQzZmY3YzJmMzg0MjVlOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaApAQCAtNzgsNyArNzgsNyBAQCBXZWJWaWV3ICpn
ZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSk7CiBAcHVibGljCiAgICAgV2ViQ29yZTo6RnJh
bWUqIGNvcmVGcmFtZTsKICAgICBXZWJGcmFtZVZpZXcgKndlYkZyYW1lVmlldzsKLSAgICBXZWJT
Y3JpcHREZWJ1Z2dlciogc2NyaXB0RGVidWdnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNj
cmlwdERlYnVnZ2VyPiBzY3JpcHREZWJ1Z2dlcjsKICAgICBpZCBpbnRlcm5hbExvYWREZWxlZ2F0
ZTsKICAgICBCT09MIHNob3VsZENyZWF0ZVJlbmRlcmVyczsKICAgICBCT09MIGluY2x1ZGVkSW5X
ZWJLaXRTdGF0aXN0aWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGYxY2MwNjVjYTEx
MTBjOGJhZTJmNmU0NTc0MDg2ZTBkYzc2ZTY3YjguLjI0YjI4OTgyYzE5MDk1NTRiZWJmOWRiMWEw
ZDE0MjE0MGEyMjAxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTMwLDE3ICszMCwx
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3
dGYvUGFzc093blB0ci5oPgotI2ltcG9ydCA8d3RmL093blB0ci5oPgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247CiAg
ICAgcmV0dXJuIHNlc3Npb247CiB9CiAKQEAgLTExMiw3ICsxMTEsNyBAQCB2b2lkIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKICAgICBBU1NF
UlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwo
KSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJv
d3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkpOworICAg
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1vdmUoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSkpOwogfQogCiB2b2lkIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMDZh
ZmVlY2RjYTk3ZTU4ZTUzYzliNDRlZjZiMDEwNWY1ZjVhNTgyMS4uZGYzNTNkODc3Y2M2N2M4NDY4
YzQ3NzE0OTUyNzA2MjE4MTIyZDFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIERv
d25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmCiAgICAgZG93bmxvYWQtPnN0YXJ0KCk7CiAKICAgICBBU1NFUlQoIW1f
ZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93
bmxvYWRJRCwgZG93bmxvYWQucmVsZWFzZSgpKTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxv
YWRJRCwgc3RkOjptb3ZlKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpj
b252ZXJ0SGFuZGxlVG9Eb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdl
cjo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VI
YW5kbAogCiAgICAgZG93bmxvYWQtPnN0YXJ0V2l0aEhhbmRsZShoYW5kbGUsIHJlc3BvbnNlKTsK
ICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rv
d25sb2Fkcy5zZXQoZG93bmxvYWRJRCwgZG93bmxvYWQucmVsZWFzZSgpKTsKKyAgICBtX2Rvd25s
b2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptb3ZlKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpAQCAtNjks
OCArNjksNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9h
ZCogZG93bmxvYWQpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2Fk
LT5kb3dubG9hZElEKCkpKTsKICAgICBtX2Rvd25sb2Fkcy5yZW1vdmUoZG93bmxvYWQtPmRvd25s
b2FkSUQoKSk7Ci0KLSAgICBkZWxldGUgZG93bmxvYWQ7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkaWRDcmVhdGVEb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCBjYTdlZThhMjEzODE5YjNhMmRhZDVlNGZi
ZWJkZDUxMWJhZThiYjJkLi5lNWZmZmZhOTQ2ZjhlNTc4ODc4MzI5M2IzODg3ZDBiMTY2NTkzM2Y0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENsaWVudCog
bV9jbGllbnQ7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRG93bmxvYWQqPiBtX2Rvd25sb2FkczsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25s
b2FkczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggMTAzYmFkZTRmZThmYjdhODZkYjhjMDFmMDhjMTU4NDUy
ZmI0NGJhOS4uMmQ5NmMyNzc3MzRmYzY5ZDFmNzVkNmM5OGM0MmFiZTM1MmM2Mzc5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICAgICAKICAgICBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5E
Qk9YKQotICAgICAgICBIYW5kbGUqIG1fZGF0YTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhh
bmRsZVtdPiBtX2RhdGE7CiAgICAgICAgIHNpemVfdCBtX3NpemU7CiAjZWxzZQogICAgICAgICBI
YW5kbGUgbV9lbXB0eUhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2Fu
ZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAzM2Q0MDAwOTQ3NjkxNWNjZWYyNmY3MzgwMjQ3MmM5
M2VkZTllNmVmLi41M2Q5NmI4MzE5YzcxN2U4YzRmMTIwZTQxZGRlYWJhOTY5YjVkODBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBA
IC04NywxNSArODcsMTIgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShD
b3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhbmRsZSYKIH0KIAogU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk6OkhhbmRsZUFycmF5KCkKLSAgICA6IG1fZGF0YSgwKQotICAg
ICwgbV9zaXplKDApCisgICAgOiBtX3NpemUoMCkKIHsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6On5IYW5kbGVBcnJheSgpCiB7Ci0gICAgaWYgKG1fZGF0YSkKLSAgICAgICAg
ZGVsZXRlW10gbV9kYXRhOwogfQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKQEAgLTEwNSw3ICsxMDIsNyBAQCB2b2lkIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKIAogICAgIEFTU0VS
VCghbV9kYXRhKTsKIAotICAgIG1fZGF0YSA9IG5ldyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVb
c2l6ZV07CisgICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVbXT4oc2l6ZSk7CiAgICAgbV9zaXplID0gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMGNmNjgwMDc2MDA4NGNmZmIy
YmQ2NzljNzUyNGEwOTg1NGQ3OGU0MC4uZjgwODY3YzQwZDdmZDk0YzE0ZGJiZmY0MjJjY2Q1YWRh
ZDUyYTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCkBAIC0zNCw0NSArMzQsNTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb247Ci1zdGF0aWMgU3RyaW5nKiBpZGVudGlmaWVy
QmFzZTsKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJp
dmF0ZVNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vzc2lvbjsK
K30KKworc3RhdGljIFN0cmluZyYgaWRlbnRpZmllckJhc2UoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CiAgICAgCiB2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJiBiYXNlKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgaWRlbnRpZmllckJhc2U7Ci0KLSAgICBpZGVudGlm
aWVyQmFzZSA9IG5ldyBTdHJpbmcoYmFzZSk7CisgICAgaWRlbnRpZmllckJhc2UoKSA9IGJhc2U7
CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChw
cml2YXRlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU3RyaW5nIGJhc2U7Ci0gICAgaWYgKCFpZGVudGlmaWVyQmFzZSkKKyAgICBpZiAo
aWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKICAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CiAgICAgZWxzZQotICAgICAgICBiYXNlID0gKmlk
ZW50aWZpZXJCYXNlOworICAgICAgICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsKIAotICAgIHBy
aXZhdGVTZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKGJhc2UpLmxlYWtQdHIoKTsKKyAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwogfQog
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgZGVsZXRlIHBy
aXZhdGVTZXNzaW9uOwotICAgIHByaXZhdGVTZXNzaW9uID0gMDsKKyAgICBwcml2YXRlU2Vzc2lv
bigpID0gbnVsbHB0cjsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRD
b29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBv
bGljeSkKQEAgLTgyLDggKzg5LDggQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkK
ICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCks
IHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24pCi0gICAgICAgIFdLU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShwcml2YXRlU2Vzc2lvbi0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOworICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQorICAgICAgICBXS1NldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOwogfQogICAgIAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CkBAIC0xMTgsNyArMTI1LDcgQEAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gKnByaXZhdGVTZXNzaW9uOworICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213971</attachid>
            <date>2013-10-10 23:43:42 -0700</date>
            <delta_ts>2013-10-11 19:12:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122639-20131010234340.patch</filename>
            <type>text/plain</type>
            <size>46548</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYyNDY5OTNmNTc0OTBi
YTEyODFmYjEwZWEzZTQ2YzVlMjY0NmM3Yy4uMjRkNzI4ZDIyNDdiMTBiZGE0ZGRkYWY3YWU2ZmFj
MjdjZDQxZDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0
ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2d1aWQsIHdoaWNoIGlzIHNldCBpbiB0aGUg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgZXhwbGljaXRseSBhbnl3YXkuIFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC4gVXNl
IHRoZSBhZGQgaWRpb20gaW5zdGVhZCBvZiB0aGUgZ2V0L3NldCBpZGlvbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UpOiBVc2UgdGhlIGZpbmQv
cmVtb3ZlIGlkaW9tIGluc3RlYWQgb2YgdGhlCisgICAgICAgIGdldC9yZW1vdmUgaWRpb20uCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IFVzZSBhdXRvIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbWFw
IHR5cGUgYnkgbmFtZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQpOiBEb24ndCBpbml0aWFs
aXplIG1fZm9udERhdGEgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6IERvbid0IGRlbGV0ZSBtX2ZvbnREYXRh
LiB1bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKTogQWRkIGEgZ2V0LgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEb24ndCBkZWxldGUgbV9mb250RGF0YS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6IENoYW5nZWQgbV9mb250RGF0YSB0byBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOiBEb24ndCBpbml0aWFsaXplIG1fZnJhbWVUaW1lciB0byAwOyB1
bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
dGFydEFuaW1hdGlvbik6IFVzZSBtYWtlX3VuaXF1ZSB0byBjcmVhdGUgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24pOiBEb24ndCBkZWxldGUg
bV9mcmFtZVRpbWVyLiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQ2hhbmdlZCBtX0ZyYW1lVGltZXIgdG8gYSB1bmlx
dWVfcHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRG9uJ3QgaW5p
dGlhbGl6ZSBtX2ZyYW1lVGltZXIgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IERvbid0IGNhbGwgQ0dGb250UmVsZWFzZSBvbiBtX2NnRm9udC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOiBV
c2UgZ2V0IG9uIG1fY2dGb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCwgYW5kIG1ha2VfdW5pcXVlIGlu
c3RlYWQgb2YgbmV3LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6IENobmFnZWQgbV9jZ0ZvbnQgdG8gYmUgYSBSZXRhaW5QdHIsIGFuZCB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB0byBiZSBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICBTYW1lIHRoaW5n
IG9uIGFsbCB0aGUgb3RoZXIgcGxhdGZvcm1zLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDogQ2hhbmdlZCByZXR1cm4gdmFsdWUgb2YgY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbgorICAgICAgICB0byBhIHVuaXF1ZV9wdHIsIGFuZCBtYWRl
IGNvbnN0cnVjdG9ycyBwdWJsaWMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IFVzZSBtYWtlX3Vu
aXF1ZS4KKwogMjAxMy0xMC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBFdmVudENvbnRleHQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBFdmVudERpc3BhdGNo
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjk1ZTBkZDhkN2UyZDk2YTY1ZmUxYWZlOTFhNjNm
NjBiMGI4MmNkOC4uMzE4MGI3YjEwYTdmMGE5OTc5MDAyMTRmM2JiNjgwMWVkYmQwZGUzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTEwLTEwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0ZWFkIG9mIGRl
bGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0
b3J5UHJpdmF0ZSBpbml0XSk6IFVzZSBtYWtlX3VuaXF1ZS4KKyAgICAgICAgKC1bV2ViSGlzdG9y
eVByaXZhdGUgZGVhbGxvY10pOiBEb24ndCBkZWxldGUuCisgICAgICAgICgtW1dlYkhpc3RvcnlQ
cml2YXRlIGZpbmFsaXplXSk6IERvbid0IGRlbGV0ZS4KKyAgICAgICAgKC1bV2ViSGlzdG9yeVBy
aXZhdGUgZGF0YV0pOiBVc2UgZ2V0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKHByaXZhdGVTZXNzaW9uKTogVXNlIE5l
dmVyRGVzdHJveWVkIGhlcmUgaW5zdGVhZCBvZiBhIHJhdyBwb2ludGVyLgorICAgICAgICAoV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IFVz
ZSB0aGUKKyAgICAgICAgbmV3IGZ1bmN0aW9uIGluc3RlYWQgb2YgZGlyZWN0IGdsb2JhbCB2YXJp
YWJsZSBhY2Nlc3MuCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbik6IERpdHRvLgorICAgICAgICAoV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOiBEaXR0by4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBkZWFsbG9jXSk6IERvbid0
IGRlbGV0ZS4KKyAgICAgICAgKC1bV2ViRnJhbWVQcml2YXRlIGZpbmFsaXplXSk6IERvbid0IGRl
bGV0ZS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2F0dGFjaFNjcmlwdERlYnVnZ2VyXSk6IFVzZSBt
YWtlX3VuaXF1ZS4KKyAgICAgICAgKC1bV2ViRnJhbWUgX2RldGFjaFNjcmlwdERlYnVnZ2VyXSk6
IERvbid0IGRlbGV0ZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaDogVXNl
IHVuaXF1ZV9wdHIuCisKIDIwMTMtMTAtMTAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIGZvcmNlIGxheW91dCBiZWZvcmUgZmx1c2hpbmcg
Y29tcG9zaXRpbmcgbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjJmMDQ5N2YyN2NlYTJmNDk3MjZhODk4
Njg4OWFiOTA5YzE3ZTZlNS4uNTIzMjYyZGIyMjEyNmJiNWU3NTliODM1NTE4Yzk2OTM4MGFjYjQx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEwLTEwICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0ZWFkIG9mIGRl
bGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Lm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik6IFVz
ZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBVc2Ugc3Rk
Ojptb3ZlLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOiBVc2Ug
c3RkOjptb3ZlLiBBbHNvIGFkZCBpbnN0ZWFkIG9mIHNldC4KKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNoZWQpOiBEb24ndCBkZWxldGUu
CisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOiBDaGFuZ2Vk
IG1fZG93bmxvYWRzIHRvIGhvbGQgdW5pcXVlX3B0ciBpbnN0ZWFkCisgICAgICAgIG9mIHJhdyBw
b2ludGVycy4KKworICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6IFVzZSBzdGQ6
OnVuaXF1ZV9wdHIgZm9yIG1fZGF0YS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OkhhbmRsZUFycmF5KTogRG9uJ3QgaW5pdGlhbGl6ZSBtX2RhdGEgdG8gMC4KKyAgICAg
ICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6On5IYW5kbGVBcnJheSk6
IERvbid0IGRlbGV0ZSBtX2RhdGEuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6IFVzZSBtYWtlX3VuaXF1ZSB0byBhbGxvY2F0ZSBtX2Rh
dGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlU2Vzc2lvbik6IFVz
ZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAgICAgKFdlYktpdDo6aWRlbnRp
ZmllckJhc2UpOiBVc2UgTmV2ZXJEZXN0cm95ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSB0aGUgYWJvdmUuCisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxs
Q29udGV4dHMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24pOiBEaXR0by4KKwogMjAxMy0xMC0xMCAgQnl1bmd3b28gTGVl
ICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBTZXBhcmF0ZSBk
aXNwYXRjaCBjb250ZXh0IGZyb20gV29ya1F1ZXVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKaW5kZXgg
YjVhYmUxMDFjYzViY2NjNjE5MDFmNGE2NjYyMTkyNDdlZWEzYThjZC4uNWE5ZjcxZTFiYTk4NWVj
NWZmYzk0YzJmZjQwMjk0NWJjYWYxMDMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY3LDEyICsxNjgsMTMg
QEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKERhdGFiYXNlR3VpZCBn
dWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1aWQs
IG5ld1ZlcnNpb24uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xhdGVkQ29w
eSgpKTsKIH0KIAotdHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3VpZCwgSGFzaFNldDxEYXRhYmFz
ZUJhY2tlbmRCYXNlKj4qPiBHdWlkRGF0YWJhc2VNYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0YWJh
c2VHdWlkLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+PiBH
dWlkRGF0YWJhc2VNYXA7CisKIHN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFiYXNl
TWFwKCkKIHsKICAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCiAgICAgQVNT
RVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoR3Vp
ZERhdGFiYXNlTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3VpZERh
dGFiYXNlTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMTg0LDEyICsxODYsMTIg
QEAgc3RhdGljIERhdGFiYXNlR3VpZCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW0KICAgICBTdHJpbmcgc3RyaW5nSUQgPSBvcmlnaW4g
KyAiLyIgKyBuYW1lOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBJREd1aWRN
YXA7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChJREd1aWRNYXAsIHN0cmluZ0lkZW50aWZpZXJU
b0dVSURNYXAsICgpKTsKLSAgICBEYXRhYmFzZUd1aWQgZ3VpZCA9IHN0cmluZ0lkZW50aWZpZXJU
b0dVSURNYXAuZ2V0KHN0cmluZ0lEKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxTdHJpbmcsIGludD4+IG1hcDsKKyAgICBEYXRhYmFzZUd1aWQgZ3VpZCA9IG1hcC5nZXQoKS5n
ZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1cnJl
bnROZXdHVUlEID0gMTsKICAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7Ci0gICAgICAg
IHN0cmluZ0lkZW50aWZpZXJUb0dVSURNYXAuc2V0KHN0cmluZ0lELCBndWlkKTsKKyAgICAgICAg
bWFwLmdldCgpLnNldChzdHJpbmdJRCwgZ3VpZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGd1aWQ7
CkBAIC0yMTUsNyArMjE3LDYgQEAgRGF0YWJhc2VCYWNrZW5kQmFzZTo6RGF0YWJhc2VCYWNrZW5k
QmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGEKICAgICAsIG1fZXhw
ZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fZGlz
cGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2VzdGltYXRlZFNp
emUoZXN0aW1hdGVkU2l6ZSkKLSAgICAsIG1fZ3VpZCgwKQogICAgICwgbV9vcGVuZWQoZmFsc2Up
CiAgICAgLCBtX25ldyhmYWxzZSkKICAgICAsIG1faXNTeW5jRGF0YWJhc2UoZGF0YWJhc2VUeXBl
ID09IERhdGFiYXNlVHlwZTo6U3luYykKQEAgLTIyNSwxNyArMjI2LDE0IEBAIERhdGFiYXNlQmFj
a2VuZEJhc2U6OkRhdGFiYXNlQmFja2VuZEJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tlbmRD
b250ZXh0PiBkYXRhCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXIgPSBEYXRhYmFzZUF1dGhvcml6
ZXI6OmNyZWF0ZShpbmZvVGFibGVOYW1lKTsKIAogICAgIGlmIChtX25hbWUuaXNOdWxsKCkpCi0g
ICAgICAgIG1fbmFtZSA9ICIiOworICAgICAgICBtX25hbWUgPSBlbXB0eVN0cmluZygpOwogCiAg
ICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwogICAgICAgICBt
X2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LCBuYW1lKTsKLSAgICAgICAgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4qIGhhc2hTZXQg
PSBndWlkVG9EYXRhYmFzZU1hcCgpLmdldChtX2d1aWQpOwotICAgICAgICBpZiAoIWhhc2hTZXQp
IHsKLSAgICAgICAgICAgIGhhc2hTZXQgPSBuZXcgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNl
Kj47Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnNldChtX2d1aWQsIGhhc2hTZXQp
OwotICAgICAgICB9Ci0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8RGF0YWJhc2VC
YWNrZW5kQmFzZSo+PiYgaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuYWRkKG1fZ3VpZCwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBpZiAoIWhhc2hTZXQpCisgICAgICAg
ICAgICBoYXNoU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJh
c2UqPj4oKTsKICAgICAgICAgaGFzaFNldC0+YWRkKHRoaXMpOwogICAgIH0KIApAQCAtMjY4LDEz
ICsyNjYsMTMgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpjbG9zZURhdGFiYXNlKCkKICAg
ICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CiAKLSAgICAgICAg
SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4qIGhhc2hTZXQgPSBndWlkVG9EYXRhYmFzZU1h
cCgpLmdldChtX2d1aWQpOwotICAgICAgICBBU1NFUlQoaGFzaFNldCk7Ci0gICAgICAgIEFTU0VS
VChoYXNoU2V0LT5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGhhc2hTZXQtPnJlbW92ZSh0aGlz
KTsKLSAgICAgICAgaWYgKGhhc2hTZXQtPmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZ3VpZFRv
RGF0YWJhc2VNYXAoKS5yZW1vdmUobV9ndWlkKTsKLSAgICAgICAgICAgIGRlbGV0ZSBoYXNoU2V0
OworICAgICAgICBhdXRvIGl0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5maW5kKG1fZ3VpZCk7Cisg
ICAgICAgIEFTU0VSVChpdCAhPSBndWlkVG9EYXRhYmFzZU1hcCgpLmVuZCgpKTsKKyAgICAgICAg
QVNTRVJUKGl0LT52YWx1ZSk7CisgICAgICAgIEFTU0VSVChpdC0+dmFsdWUtPmNvbnRhaW5zKHRo
aXMpKTsKKyAgICAgICAgaXQtPnZhbHVlLT5yZW1vdmUodGhpcyk7CisgICAgICAgIGlmIChpdC0+
dmFsdWUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5yZW1v
dmUoaXQpOwogICAgICAgICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJlbW92ZShtX2d1aWQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMzI5LDcgKzMyNyw3IEBAIGJvb2wgRGF0YWJhc2VCYWNrZW5k
QmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRh
YmFzCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwogCi0g
ICAgICAgIEd1aWRWZXJzaW9uTWFwOjppdGVyYXRvciBlbnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAo
KS5maW5kKG1fZ3VpZCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBndWlkVG9WZXJzaW9uTWFwKCku
ZmluZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmVu
ZCgpKSB7CiAgICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChz
ZWUgdXBkYXRlR3VpZFZlcnNpb25NYXAoKSkuCiAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9
IGVudHJ5LT52YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBlbnRyeS0+dmFsdWUuaXNv
bGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
aW5kZXggOGM1NWRkMTlhMjhlZDY1N2M4YzE2ZDhjYTc5ZGRiYmQxNDY0MDRkNC4uZTA3MDEwYTZl
NzRlNWQ4NWZiMzRiZTEzNGMzNGU1NzQ3MjAzMDQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIENhY2hlZEZvbnQ6OkNhY2hlZEZvbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIEZvbnRS
ZXNvdXJjZSkKLSAgICAsIG1fZm9udERhdGEoMCkKICAgICAsIG1fbG9hZEluaXRpYXRlZChmYWxz
ZSkKICAgICAsIG1faGFzQ3JlYXRlZEZvbnREYXRhKGZhbHNlKQogewpAQCAtNTgsNyArNTcsNiBA
QCBDYWNoZWRGb250OjpDYWNoZWRGb250KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KQogCiBDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCgpCiB7Ci0gICAgZGVsZXRlIG1fZm9u
dERhdGE7CiB9CiAKIHZvaWQgQ2FjaGVkRm9udDo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTEwMCw3ICs5OCw3IEBA
IGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoKQogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBzZXRTdGF0dXMoRGVjb2RlRXJyb3IpOwogICAgIH0KLSAgICByZXR1cm4gbV9m
b250RGF0YTsKKyAgICByZXR1cm4gbV9mb250RGF0YS5nZXQoKTsKIH0KIAogRm9udFBsYXRmb3Jt
RGF0YSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmbG9hdCBzaXplLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRX
aWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KQpAQCAtMTY0LDEwICsxNjIsNyBAQCBTVkdGb250RWxlbWVudCogQ2FjaGVkRm9udDo6Z2V0U1ZH
Rm9udEJ5SWQoY29uc3QgU3RyaW5nJiBmb250TmFtZSkgY29uc3QKIAogdm9pZCBDYWNoZWRGb250
OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7Ci0gICAgaWYgKG1fZm9udERhdGEpIHsKLSAgICAgICAg
ZGVsZXRlIG1fZm9udERhdGE7Ci0gICAgICAgIG1fZm9udERhdGEgPSAwOwotICAgIH0KKyAgICBt
X2ZvbnREYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCA1NDgxNzlmZGFk
YmIwNzM1MzY2ZmE5ZjMzY2QzMTdkY2U0NTllMTY2Li5jYTQzM2I2MGExODMzNTY0ODA5ZDI0ZmRh
ZjBjNmIzMzRhOGI1ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhbGxDbGll
bnRzUmVtb3ZlZCgpIE9WRVJSSURFOwogCi0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogbV9m
b250RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9m
b250RGF0YTsKICAgICBib29sIG1fbG9hZEluaXRpYXRlZDsKICAgICBib29sIG1faGFzQ3JlYXRl
ZEZvbnREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAKaW5kZXggYzgzNWI5MjA2NjkxNWJmOTA4ZjA4MmEzM2Y5MzliODBlY2RkYTVk
Yy4uODAwNWQ4ZWJiM2EzNTU1OTgwOWIxMWExYzBiNzlmZGVkZmZhNzhkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDMsNyAr
NDMsNiBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBt
X2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCiAgICAgLCBtX3JlcGV0aXRpb25Db3Vu
dChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24p
CiAgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKQEAgLTQyOSw3ICs0MjgsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkKIAog
ICAgIGlmICghY2F0Y2hVcElmTmVjZXNzYXJ5IHx8IHRpbWUgPCBtX2Rlc2lyZWRGcmFtZVN0YXJ0
VGltZSkgewogICAgICAgICAvLyBIYXZlbid0IHlldCByZWFjaGVkIHRpbWUgZm9yIG5leHQgZnJh
bWUgdG8gc3RhcnQ7IGRlbGF5IHVudGlsIHRoZW4uCi0gICAgICAgIG1fZnJhbWVUaW1lciA9IG5l
dyBUaW1lcjxCaXRtYXBJbWFnZT4odGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0aW9u
KTsKKyAgICAgICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxCaXRtYXBJ
bWFnZT4+KHRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAgICAgIG1f
ZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1l
IC0gdGltZSwgMC4pKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHJl
YWNoZWQgb3IgcGFzc2VkIHRoZSB0aW1lIGZvciB0aGUgbmV4dCBmcmFtZSB0byBzdGFydC4KQEAg
LTQ3OSw4ICs0NzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsKICAg
ICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgdG8gYW5pbWF0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhp
cyBpbWFnZS4gIERvbid0IGludmFsaWRhdGUKICAgICAvLyB0aGUgdGltZXIgdW5sZXNzIGFsbCBy
ZW5kZXJlcnMgaGF2ZSBzdG9wcGVkIGRyYXdpbmcuCi0gICAgZGVsZXRlIG1fZnJhbWVUaW1lcjsK
LSAgICBtX2ZyYW1lVGltZXIgPSAwOworICAgIG1fZnJhbWVUaW1lciA9IG51bGxwdHI7CiB9CiAK
IHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGJjOWE2M2ZjNGVlNTc5NGY3NmNi
ZGE0ZmUyOTBmNDM1ZWE1YTZhZDkuLmZlY2M3YmZkYjA2MDU1YjhjYTM5OWM3ODYzODUyYzc5OWQz
ZWM1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaApAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fY3VycmVudEZy
YW1lOyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgogICAg
IFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2FjaGVk
IGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGluIHRo
ZW0gaW4gdGhlIGNhY2hlLgogCi0gICAgVGltZXI8Qml0bWFwSW1hZ2U+KiBtX2ZyYW1lVGltZXI7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPEJpdG1hcEltYWdlPj4gbV9mcmFtZVRpbWVyOwog
ICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9uIGxv
b3BzIHdlIHNob3VsZCBkby4gIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlzIGlt
YWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KICAgICBSZXBldGl0aW9uQ291bnRT
dGF0dXMgbV9yZXBldGl0aW9uQ291bnRTdGF0dXM7CiAgICAgaW50IG1fcmVwZXRpdGlvbnNDb21w
bGV0ZTsgIC8vIEhvdyBtYW55IHJlcGV0aXRpb25zIHdlJ3ZlIGZpbmlzaGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxZjU2MDBlZTg0YzhhNjk3ZTk0MGRi
NTdlZmJkY2Q0NDc1Y2IyODI3Li5iNWM5ODU1ZjA5NGJmMmZkZGRhNWUxMmRmNjEyMDhmNmNlNDVi
NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9Owog
Ci1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciopOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFCbGFja0JlcnJ5LmNwcAppbmRleCBkMTY3ODRjZjgzYmQ0MjBiYjQxYWMzNGM2YTRhMmUw
NTY2OGNkNDhmLi4yNGEwMmZiNjU5MTc1NjQ4OTMzZTk5NzAzNzJhZDJkZTE2MWJkYmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBv
cnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQogICAgIHJldHVybiBpc1N1cHBvcnRlZDsK
IH0KIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCkBAIC02NCwxNiArNjQsMTYg
QEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIoYnVm
ZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGl6
ZXIuc2FuaXRpemUoKTsKICAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJu
IDA7IC8vIHZhbGlkYXRpb24gZmFpbGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gdmFs
aWRhdGlvbiBmYWlsZWQuCiAgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOwogI2Vu
ZGlmCiAKICAgICBGSUxFQ0hBUiBuYW1lW01BWF9GT05UX05BTUVfTEVOKzFdOwogICAgIG1lbXNl
dChuYW1lLCAwLCBNQVhfRk9OVF9OQU1FX0xFTisxKTsKICAgICBpZiAoRlNfbG9hZF9mb250KEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Z2V0SVR5cGUoKSwgMCwgY29uc3RfY2FzdDxG
U19CWVRFKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBGU19CWVRFKj4oYnVmZmVyLT5kYXRhKCkp
KSwgMCwgTUFYX0ZPTlRfTkFNRV9MRU4sIG5hbWUpICE9IFNVQ0NFU1MpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBuZXcgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShuYW1lLCBidWZmZXIpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KG5hbWUsIGJ1ZmZlcik7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ODA3MTAyNjg3NmRhNDlmNzkxZTk3MzlmN2Q3N2M3
NTJjZDRhYzEzLi5mN2EwNTVhNWM4YzUzNTIyNzA0Y2Y1ZTU1NmM2YWU2OTc2Mjg5N2M2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAg
ICAgY2Fpcm9fZm9udF9mYWNlX3QqIG1fZm9udEZhY2U7CiB9OwogCi1Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKaW5kZXggOWNk
YzZmYTM4YTg1MWY5MTc2ODQxOTE3MGZkMjk4YWY0NTgyY2QwNy4uNTU4OWFhNTEwYzhmZTEyZmRk
YjZkYzVkZDY5NjdhNGU1YTY2ZmZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAKQEAgLTY3LDcgKzY3LDYgQEAgQml0
bWFwSW1hZ2U6OkJpdG1hcEltYWdlKENHSW1hZ2VSZWYgY2dJbWFnZSwgSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZyYW1lKDAp
CiAgICAgLCBtX2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCiAgICAgLCBtX3JlcGV0
aXRpb25Db3VudChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVz
KFVua25vd24pCiAgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDg0MWM4YTNhZGZm
Zjg4YmUzMjNkM2RkNjNhNmZiNjVlY2YyNGQ2MWUuLmUxMzlhYTU2NmQ4MDU5MjFhMDZlNWFiOTMx
ZDBlZDg2ZTM2ZWFkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwg
YgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKG1fZm9udEZhY2UsIHNpemUsIGJvbGQsIGl0
YWxpYyk7CiB9CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIApAQCAtNzIsMjIg
KzcyLDIyIEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgaWYgKGlzV09GRihidWZmZXIpKSB7CiAg
ICAgICAgIFZlY3RvcjxjaGFyPiBzZm50OwogICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50
KGJ1ZmZlciwgc2ZudCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIHNmbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVj
dG9yKHNmbnQpOwogICAgICAgICBidWZmZXIgPSBzZm50QnVmZmVyLmdldCgpOwogICAgIH0KIAot
ICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnkgPSAwOworICAgIHN0YXRpYyBGVF9MaWJyYXJ5
IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJyYXJ5ICYmIEZUX0luaXRfRnJlZVR5cGUoJmxpYnJhcnkp
KSB7Ci0gICAgICAgIGxpYnJhcnkgPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgbGli
cmFyeSA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIEZU
X0ZhY2UgZnJlZVR5cGVGYWNlOwogICAgIGlmIChGVF9OZXdfTWVtb3J5X0ZhY2UobGlicmFyeSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBGVF9CeXRlKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PnNpemUoKSwgMCwgJmZyZWVUeXBlRmFjZSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+KGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKIH0KIAogYm9vbCBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBkNTYyMTE4MmE4MDA5YjAwNzZlZmFhNWUz
ZGM2MWMxZjlkY2Y2YzMyLi43YjFmODk4YmIxNzEyNGMzOGE4NDMzNGQ0NGE3OThlNWNmYmJlN2U3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0zMSwxNSArMzEsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSgpCiB7Ci0gICAgQ0dGb250UmVsZWFzZShtX2NnRm9udCk7CiB9CiAKIEZvbnRQ
bGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShpbnQg
c2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgRm9udFJlbmRlcmluZ01vZGUpCiB7Ci0g
ICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEobV9jZ0ZvbnQsIHNpemUsIGJvbGQsIGl0YWxpYywg
b3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCk7CisgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEo
bV9jZ0ZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFy
aWFudCk7CiB9CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIApAQCAtNDcsMTQg
KzQ2LDE0IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgT3BlblR5cGVTYW5pdGl6ZXIgc2FuaXRp
emVyKGJ1ZmZlcik7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJhbnNjb2RlQnVmZmVyID0g
c2FuaXRpemVyLnNhbml0aXplKCk7CiAgICAgaWYgKCF0cmFuc2NvZGVCdWZmZXIpCi0gICAgICAg
IHJldHVybiAwOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
IC8vIHZhbGlkYXRpb24gZmFpbGVkLgogICAgIGJ1ZmZlciA9IHRyYW5zY29kZUJ1ZmZlci5nZXQo
KTsKICNlbHNlCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2ZudEJ1ZmZlcjsKICAgICBpZiAo
aXNXT0ZGKGJ1ZmZlcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IHNmbnQ7CiAgICAgICAgIGlm
ICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBzZm50KSkKLSAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgc2ZudEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Ioc2ZudCk7CiAgICAgICAgIGJ1ZmZlciA9IHNmbnRCdWZm
ZXIuZ2V0KCk7CkBAIC02OCwxMCArNjcsOSBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogCiAgICAgUmV0
YWluUHRyPENHRm9udFJlZj4gY2dGb250UmVmID0gYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoRGF0
YVByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogICAgIGlmICghY2dGb250UmVmKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiBmb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gbmV3IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoY29udGFpbmVyUmVmLCBjZ0ZvbnRSZWYubGVha1JlZigpKTsKLSAgICByZXR1cm4g
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPihjb250YWluZXJSZWYsIGNnRm9udFJlZi5nZXQoKSk7CiB9CiAK
IGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5n
JiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBjN2FlMWNhMWY0MGU3MWFh
OTcwYzhmM2VmYmJjMTAxMTJhNzRjOWQ4Li5jODdjY2Q4OTkwYjU5ZjZiMWE2YjM2OTdiYTY0YTNk
ZmQxMzYzYmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiB0eXBlZGVmIFVJbnQz
MiBBVFNGb250Q29udGFpbmVyUmVmOwpAQCAtNTMsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKIAogICAgIEFUU0ZvbnRD
b250YWluZXJSZWYgbV9hdHNDb250YWluZXI7Ci0gICAgQ0dGb250UmVmIG1fY2dGb250OworICAg
IFJldGFpblB0cjxDR0ZvbnRSZWY+IG1fY2dGb250OwogfTsKIAotRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKK3N0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKFNoYXJlZEJ1ZmZlciopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cAppbmRleCAyZTU0MTI0MWIxMGU5MTBjMzA1NDFjNWQ3NDFmNTg1NmI0MTA2NTU4Li40OTc1NjQ4
ZTM1ZDYzMDY3Y2UxNTViMWU3NTg5MGM4NmNiMDVkMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVy
LCBidWZmZXIpOwogCkBAIC04OSw3ICs4OSw3IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgaWYg
KGlzV09GRihidWZmZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBzZm50OwogICAgICAgICBp
ZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkpCi0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHNmbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHNmbnQpOwogICAgICAgICBidWZmZXIgPSBzZm50QnVm
ZmVyLmdldCgpOwpAQCAtOTksOCArOTksOCBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIEhBTkRM
RSBmb250UmVmZXJlbmNlOwogICAgIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoYnVmZmVyLCBmb250TmFtZSk7CiAgICAgaWYgKCFmb250UmVmZXJlbmNlKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udFJlZmVy
ZW5jZSwgZm9udE5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250UmVmZXJlbmNlLCBmb250
TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQo
Y29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxODg5
NTFiYzgxNTE5MzEzOTdiYjFkZGRlMzk1Y2ZlNWZiNTFhNjQwLi4yMjgwOTQ5MDg4MzMxYTU4NGRm
OWE0ZGRiYWY5NzljNzQ2NTE0ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtX25hbWU7CiB9OwogCi1Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciop
Oworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBmMWE4MjI1MGRhMDYzNDBiMDFjZTQ4ZTEyMGVhYWMy
ZjBmOGRiNTkzLi43ZmM1NWZhNDA2NmMxY2U0NmU4Zjc3NTcxZjlmOTRjZjgwZjhmMzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODAsNyArODAsNyBAQCBz
dGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7
CiB9CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlRfQVJHKGJ1ZmZlciwgYnVmZmVyKTsKIApAQCAtODgsOSArODgsOSBA
QCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIEhBTkRMRSBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogCiAgICAgaWYgKCFmb250UmVmZXJlbmNl
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udFJlZmVyZW5jZSwgZm9udE5hbWUpOwor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRS
ZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAogYm9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpz
dXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKaW5kZXggZTFlNWFmYTg1NmVkM2NjOWRjYWFmYWZlNjc1YTA3Nzg0MTFlZmU3
Yy4uOWM4OWIzYzkwMDBjZmU5YjRlNTEyM2I3ZTY5ODc5OTc0YjFkZmQ1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTcwLDE1ICs3MCwxNSBAQCBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWUucmVwbGFjZSgnLycs
ICdfJyk7CiB9CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBpZiAoZ19jdXN0b21Gb250Q2FjaGUpIHsKICAg
ICAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG9jYWxCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBpZiAocmVuYW1lRm9udChs
b2NhbEJ1ZmZlci5nZXQoKSwgZm9udE5hbWUpICYmIGdfY3VzdG9tRm9udENhY2hlLT5yZWdpc3Rl
ckZvbnQoZm9udE5hbWUsIGxvY2FsQnVmZmVyLmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250TmFtZSk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250TmFtZSk7CiAgICAg
fQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGEzYThhMjk2MmYzZjI2YzE2NDc4NmUwNjUy
MzVkNzA5OTc4OTgzMzYuLjg0ZDVkNzM1ZTQxMzgwNzE0M2FlYjJjNzcyNzM1NWE1MDQwZDllZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgIH07CiAKLSAgICBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciopOworICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciopOwogICAg
IHZvaWQgc2V0Q3VzdG9tRm9udENhY2hlKEN1c3RvbUZvbnRDYWNoZSopOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaAppbmRleCBlZTc3NzI2M2VkNDEzZGU4NmE4NDcxNjhlNmFjMWYzY2FjODNhNzIwLi41NmEw
YTU5NzUxOGE3ZDZhOTZjMjQwOTg2YjVkYzg2YWU1ZTczOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+IGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyQmFzZSA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlID0gU3RyaW5nKCkpOwogCiAgICAgc3RhdGljIHZvaWQgc3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpOwogCkBAIC01NSwxMCArNTUsMTIgQEAgcHVibGljOgogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAgICAgLy8gTWF5
IGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVz
ZWQuCiAgICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVy
biBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQoKTsgfQogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZWxpZiBVU0UoU09VUCkKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oU291cFNlc3Npb24qKTsKICAgICB2b2lkIHNldFNvdXBTZXNz
aW9uKFNvdXBTZXNzaW9uKiBzZXNzaW9uKSB7IG1fc2Vzc2lvbiA9IHNlc3Npb247IH0KICAgICBT
b3VwU2Vzc2lvbiogc291cFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7
IH0KICNlbHNlCkBAIC02OSwxMSArNzEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihS
ZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwogICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbigpOwogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3Jt
U2Vzc2lvbjsKICNlbGlmIFVTRShTT1VQKQotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTb3Vw
U2Vzc2lvbiopOwogICAgIEdSZWZQdHI8U291cFNlc3Npb24+IG1fc2Vzc2lvbjsKICNlbHNlCiAg
ICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGVmNTk0N2RlOGYxM2ZkMDA3Mjk2Nzg1Y2YyN2RjYmI4MjA1
NGM4ZDQuLmExM2YzMTY1YWM4NmQ5YjFmOTBjOGI3YjRiOGYxNzYzNzA5MGU1OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC04OSwxOCArODksMTggQEAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpCiAgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLVBh
c3NPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNy
ZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSkK
K3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXJCYXNlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3Ry
aW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygp
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKGFkb3B0Q0Yod2tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKSkpKTsKKyAgICBh
dXRvIHNlc3Npb24gPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oYWRv
cHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKSk7
CiAjZWxzZQotICAgIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9w
dFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CiAjZW5kaWYKICAgICBzZXNzaW9uLT5tX2lz
UHJpdmF0ZSA9IHRydWU7CiAKLSAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7CisgICAgcmV0
dXJuIHNlc3Npb247CiB9CiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5Lm1tCmluZGV4IGUwMzc4Yjc2NzlkNTVmYmJjMTdmYzkwN2YzZWQz
NTgxYWU0ODM1YmMuLjZmYjM2MmUxZjBmZDM4YTQwMjkxYzZkODE2NTkzMGM0OGVmODA5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KQEAgLTc0LDcgKzc0LDcgQEAg
QGVuZAogQGludGVyZmFjZSBXZWJIaXN0b3J5UHJpdmF0ZSA6IE5TT2JqZWN0IHsKIEBwcml2YXRl
CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2VudHJpZXNCeVVSTDsKLSAgICBEYXRlVG9FbnRy
aWVzTWFwKiBfZW50cmllc0J5RGF0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRvRW50cmll
c01hcD4gX2VudHJpZXNCeURhdGU7CiAgICAgTlNNdXRhYmxlQXJyYXkgKl9vcmRlcmVkTGFzdFZp
c2l0ZWREYXlzOwogICAgIEJPT0wgaXRlbUxpbWl0U2V0OwogICAgIGludCBpdGVtTGltaXQ7CkBA
IC0xMzIsNyArMTMyLDcgQEAgLSAoaWQpaW5pdAogICAgICAgICByZXR1cm4gbmlsOwogICAgIAog
ICAgIF9lbnRyaWVzQnlVUkwgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwot
ICAgIF9lbnRyaWVzQnlEYXRlID0gbmV3IERhdGVUb0VudHJpZXNNYXA7CisgICAgX2VudHJpZXNC
eURhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPERhdGVUb0VudHJpZXNNYXA+KCk7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KQEAgLTE0MSwxMyArMTQxLDExIEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAg
IFtfZW50cmllc0J5VVJMIHJlbGVhc2VdOwogICAgIFtfb3JkZXJlZExhc3RWaXNpdGVkRGF5cyBy
ZWxlYXNlXTsKLSAgICBkZWxldGUgX2VudHJpZXNCeURhdGU7CiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQogCiAtICh2b2lkKWZpbmFsaXplCiB7Ci0gICAgZGVsZXRlIF9lbnRyaWVzQnlEYXRlOwog
ICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKQEAgLTYzNiw3ICs2MzQsNyBAQCAtIChOU0RhdGEg
KilkYXRhCiAgICAgCiAgICAgLy8gSWdub3JlcyB0aGUgZGF0ZSBhbmQgaXRlbSBjb3VudCBsaW1p
dHM7IHRoZXNlIGFyZSByZXNwZWN0ZWQgd2hlbiBsb2FkaW5nIGluc3RlYWQgb2Ygd2hlbiBzYXZp
bmcsIHNvCiAgICAgLy8gdGhhdCBjbGllbnRzIGNhbiBsZWFybiBvZiBkaXNjYXJkZWQgaXRlbXMg
YnkgbGlzdGVuaW5nIHRvIFdlYkhpc3RvcnlJdGVtc0Rpc2NhcmRlZFdoaWxlTG9hZGluZ05vdGlm
aWNhdGlvbi4KLSAgICBXZWJIaXN0b3J5V3JpdGVyIHdyaXRlcihfZW50cmllc0J5RGF0ZSk7Cisg
ICAgV2ViSGlzdG9yeVdyaXRlciB3cml0ZXIoX2VudHJpZXNCeURhdGUuZ2V0KCkpOwogICAgIHdy
aXRlci53cml0ZVByb3BlcnR5TGlzdCgpOwogICAgIHJldHVybiBbWyhOU0RhdGEgKil3cml0ZXIu
cmVsZWFzZURhdGEoKS5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCmluZGV4IDRhZDc3YzZiMzRkNDljNjJmZDI5YjY3NDNkZGIwMzg1ZTM5Nzc1
MzIuLmFhOTU3MjdjN2NkMTY1YWNjYzcwNzQ4NGRjZGM2YzZlNTJkMmMwOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQpAQCAtMzIsMjcgKzMyLDMxIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJp
dmF0ZVNlc3Npb247CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHByaXZhdGVTZXNzaW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247CisgICAgcmV0dXJuIHNl
c3Npb247Cit9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGlmIChwcml2YXRlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcHJpdmF0ZVNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNy
ZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJ
ZGVudGlmaWVyXSkubGVha1B0cigpOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgcHJpdmF0ZVNlc3Npb247Ci0gICAgcHJpdmF0
ZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiBib29s
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29u
c3QKQEAgLTk0LDcgKzk4LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOworICAg
ICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IDY4ZjU5Y2ZkZDIwYzY5OGI5ZWMxMTBlYzBmNWIzMGEwN2Iz
NjVkNmUuLmQxOTI3NzYyMTk0NTdjYTU4MDEzMDZkYWUzMTUyNDhlZGRjZTViNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTY0LDE1ICsxNjQsMTEgQEAgLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgW3dlYkZyYW1lVmlldyByZWxlYXNlXTsKIAotICAgIGRlbGV0ZSBz
Y3JpcHREZWJ1Z2dlcjsKLQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5h
bGl6ZQogewotICAgIGRlbGV0ZSBzY3JpcHREZWJ1Z2dlcjsKLQogICAgIFtzdXBlciBmaW5hbGl6
ZV07CiB9CiAKQEAgLTMyMiwyMCArMzE4LDE2IEBAIC0gKHZvaWQpX2F0dGFjaFNjcmlwdERlYnVn
Z2VyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIp
IHsKLSAgICAgICAgQVNTRVJUKF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9PSBnbG9iYWxPYmpl
Y3QtPmRlYnVnZ2VyKCkpOworICAgICAgICBBU1NFUlQoX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2Vy
LmdldCgpID09IGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBuZXcgV2ViU2NyaXB0RGVidWdn
ZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYlNjcmlwdERlYnVnZ2VyPihnbG9iYWxPYmplY3QpOwogfQogCiAtICh2b2lk
KV9kZXRhY2hTY3JpcHREZWJ1Z2dlcgogewotICAgIGlmICghX3ByaXZhdGUtPnNjcmlwdERlYnVn
Z2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkZWxldGUgX3ByaXZhdGUtPnNjcmlwdERlYnVn
Z2VyOwotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IDA7CisgICAgX3ByaXZhdGUtPnNj
cmlwdERlYnVnZ2VyID0gbnVsbHB0cjsKIH0KIAogLSAoaWQpX2luaXRXaXRoV2ViRnJhbWVWaWV3
OihXZWJGcmFtZVZpZXcgKilmdiB3ZWJWaWV3OihXZWJWaWV3ICopdgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCBhYjhjNWMyODE4MWI2NDQwNDgx
YzNlZWNiZWNiNjE2OWJlOGFjMmU4Li5mY2NiZWFhMWNhYmRkZmZkNzNlNDNkOTQzZmY3YzJmMzg0
MjVlOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwu
aApAQCAtNzgsNyArNzgsNyBAQCBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFt
ZSk7CiBAcHVibGljCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZTsKICAgICBXZWJGcmFt
ZVZpZXcgKndlYkZyYW1lVmlldzsKLSAgICBXZWJTY3JpcHREZWJ1Z2dlciogc2NyaXB0RGVidWdn
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNjcmlwdERlYnVnZ2VyPiBzY3JpcHREZWJ1Z2dl
cjsKICAgICBpZCBpbnRlcm5hbExvYWREZWxlZ2F0ZTsKICAgICBCT09MIHNob3VsZENyZWF0ZVJl
bmRlcmVyczsKICAgICBCT09MIGluY2x1ZGVkSW5XZWJLaXRTdGF0aXN0aWNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCmluZGV4IGYxY2MwNjVjYTExMTBjOGJhZTJmNmU0NTc0MDg2ZTBkYzc2ZTY3
YjguLjI0YjI4OTgyYzE5MDk1NTRiZWJmOWRiMWEwZDE0MjE0MGEyMjAxOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0KQEAgLTMwLDE3ICszMCwxNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgotI2ltcG9ydCA8
d3RmL093blB0ci5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE93blB0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCitz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Np
b24sICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKQEAg
LTExMiw3ICsxMTEsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKICAgICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwog
Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkgPSBzdGQ6Om1vdmUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
KSkpOwogfQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMDZhZmVlY2RjYTk3ZTU4ZTUzYzliNDRlZjZiMDEw
NWY1ZjVhNTgyMS4uZGYzNTNkODc3Y2M2N2M4NDY4YzQ3NzE0OTUyNzA2MjE4MTIyZDFlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9h
ZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgZG93bmxv
YWQtPnN0YXJ0KCk7CiAKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2Fk
SUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRJRCwgZG93bmxvYWQucmVsZWFzZSgp
KTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptb3ZlKGRvd25sb2FkKSk7
CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCh1aW50
NjRfdCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNTMs
NyArNTMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQo
dWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5kbAogCiAgICAgZG93bmxvYWQtPnN0YXJ0
V2l0aEhhbmRsZShoYW5kbGUsIHJlc3BvbnNlKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNv
bnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRJRCwgZG93
bmxvYWQucmVsZWFzZSgpKTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjpt
b3ZlKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9h
ZCh1aW50NjRfdCBkb3dubG9hZElEKQpAQCAtNjksOCArNjksNiBAQCB2b2lkIERvd25sb2FkTWFu
YWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCogZG93bmxvYWQpCiB7CiAgICAgQVNTRVJU
KG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkLT5kb3dubG9hZElEKCkpKTsKICAgICBtX2Rv
d25sb2Fkcy5yZW1vdmUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7Ci0KLSAgICBkZWxldGUgZG93
bmxvYWQ7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkaWRDcmVhdGVEb3dubG9hZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApp
bmRleCBjYTdlZThhMjEzODE5YjNhMmRhZDVlNGZiZWJkZDUxMWJhZThiYjJkLi5lNWZmZmZhOTQ2
ZjhlNTc4ODc4MzI5M2IzODg3ZDBiMTY2NTkzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIENsaWVudCogbV9jbGllbnQ7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgRG93bmxvYWQqPiBtX2Rvd25sb2FkczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6
OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggMTAz
YmFkZTRmZThmYjdhODZkYjhjMDFmMDhjMTU4NDUyZmI0NGJhOS4uMmQ5NmMyNzc3MzRmYzY5ZDFm
NzVkNmM5OGM0MmFiZTM1MmM2Mzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4
dGVuc2lvbi5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAKICAgICBwcml2YXRl
OgogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQotICAgICAgICBIYW5kbGUqIG1fZGF0
YTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7CiAgICAgICAgIHNp
emVfdCBtX3NpemU7CiAjZWxzZQogICAgICAgICBIYW5kbGUgbV9lbXB0eUhhbmRsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAz
M2Q0MDAwOTQ3NjkxNWNjZWYyNmY3MzgwMjQ3MmM5M2VkZTllNmVmLi41M2Q5NmI4MzE5YzcxN2U4
YzRmMTIwZTQxZGRlYWJhOTY5YjVkODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC04NywxNSArODcsMTIgQEAgYm9vbCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIEhhbmRsZSYKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OkhhbmRs
ZUFycmF5KCkKLSAgICA6IG1fZGF0YSgwKQotICAgICwgbV9zaXplKDApCisgICAgOiBtX3NpemUo
MCkKIHsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6On5IYW5kbGVBcnJheSgp
CiB7Ci0gICAgaWYgKG1fZGF0YSkKLSAgICAgICAgZGVsZXRlW10gbV9kYXRhOwogfQogCiB2b2lk
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKQEAg
LTEwNSw3ICsxMDIsNyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxv
Y2F0ZShzaXplX3Qgc2l6ZSkKIAogICAgIEFTU0VSVCghbV9kYXRhKTsKIAotICAgIG1fZGF0YSA9
IG5ldyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbc2l6ZV07CisgICAgbV9kYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbXT4oc2l6ZSk7CiAgICAgbV9zaXpl
ID0gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0KaW5kZXggMGNmNjgwMDc2MDA4NGNmZmIyYmQ2NzljNzUyNGEwOTg1NGQ3OGU0MC4uZjgw
ODY3YzQwZDdmZDk0YzE0ZGJiZmY0MjJjY2Q1YWRhZDUyYTE1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0zNCw0NSArMzQsNTIgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Np
b247Ci1zdGF0aWMgU3RyaW5nKiBpZGVudGlmaWVyQmFzZTsKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4g
c2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKworc3RhdGljIFN0cmluZyYgaWRlbnRp
ZmllckJhc2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJhc2U7Cisg
ICAgcmV0dXJuIGJhc2U7Cit9CiAgICAgCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3Ry
aW5nJiBiYXNlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUg
aWRlbnRpZmllckJhc2U7Ci0KLSAgICBpZGVudGlmaWVyQmFzZSA9IG5ldyBTdHJpbmcoYmFzZSk7
CisgICAgaWRlbnRpZmllckJhc2UoKSA9IGJhc2U7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lvbikKKyAgICBpZiAocHJp
dmF0ZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2U7Ci0gICAg
aWYgKCFpZGVudGlmaWVyQmFzZSkKKyAgICBpZiAoaWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkK
ICAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07
CiAgICAgZWxzZQotICAgICAgICBiYXNlID0gKmlkZW50aWZpZXJCYXNlOworICAgICAgICBiYXNl
ID0gaWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVTZXNzaW9uID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpLmxlYWtQdHIoKTsK
KyAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgZGVsZXRlIHByaXZhdGVTZXNzaW9uOwotICAgIHByaXZhdGVT
ZXNzaW9uID0gMDsKKyAgICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAogdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250
ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKQEAgLTgyLDggKzg5LDggQEAgdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxD
b250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0
ZVNlc3Npb24pCi0gICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlU2Vz
c2lvbi0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOworICAgIGlmIChwcml2YXRlU2Vz
c2lvbigpKQorICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNlc3Np
b24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogICAgIAogYm9vbCBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CkBA
IC0xMTgsNyArMTI1LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uOworICAgICAg
ICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214041</attachid>
            <date>2013-10-11 19:12:23 -0700</date>
            <delta_ts>2013-10-11 19:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122639-20131011191222.patch</filename>
            <type>text/plain</type>
            <size>55335</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA5MjA0ZDFiNmYzMmY0
NTJjMzhkMmZiYzU4NGY2ZjEzNmQ4NGJhMy4uZTdiY2VhZTdjYjg4YTMxOWEyMTVkNzlkMTlkNzBk
NmRkNWQ2YTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTEwLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0
ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2d1aWQsIHdoaWNoIGlzIHNldCBpbiB0aGUg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgZXhwbGljaXRseSBhbnl3YXkuIFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC4gVXNl
IHRoZSBhZGQgaWRpb20gaW5zdGVhZCBvZiB0aGUgZ2V0L3NldCBpZGlvbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UpOiBVc2UgdGhlIGZpbmQv
cmVtb3ZlIGlkaW9tIGluc3RlYWQgb2YgdGhlCisgICAgICAgIGdldC9yZW1vdmUgaWRpb20uCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IFVzZSBhdXRvIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbWFw
IHR5cGUgYnkgbmFtZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQpOiBEb24ndCBpbml0aWFs
aXplIG1fZm9udERhdGEgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6IERvbid0IGRlbGV0ZSBtX2ZvbnREYXRh
LiB1bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKTogQWRkIGEgZ2V0LgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEb24ndCBkZWxldGUgbV9mb250RGF0YS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6IENoYW5nZWQgbV9mb250RGF0YSB0byBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOiBEb24ndCBpbml0aWFsaXplIG1fZnJhbWVUaW1lciB0byAwOyB1
bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
dGFydEFuaW1hdGlvbik6IFVzZSBtYWtlX3VuaXF1ZSB0byBjcmVhdGUgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24pOiBEb24ndCBkZWxldGUg
bV9mcmFtZVRpbWVyLiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQ2hhbmdlZCBtX0ZyYW1lVGltZXIgdG8gYSB1bmlx
dWVfcHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRG9uJ3QgaW5p
dGlhbGl6ZSBtX2ZyYW1lVGltZXIgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IERvbid0IGNhbGwgQ0dGb250UmVsZWFzZSBvbiBtX2NnRm9udC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOiBV
c2UgZ2V0IG9uIG1fY2dGb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCwgYW5kIG1ha2VfdW5pcXVlIGlu
c3RlYWQgb2YgbmV3LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6IENobmFnZWQgbV9jZ0ZvbnQgdG8gYmUgYSBSZXRhaW5QdHIsIGFuZCB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB0byBiZSBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgIFNhbWUgdGhpbmcg
b24gYWxsIHRoZSBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uCisgICAgICAgIHRvIGEgdW5pcXVlX3B0ciwgYW5kIG1hZGUg
Y29uc3RydWN0b3JzIHB1YmxpYy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIG1ha2VfdW5p
cXVlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgU2FtZSB0aGluZyBvbiBhbGwgdGhlIG90aGVyIHBs
YXRmb3Jtcy4KKwogMjAxMy0xMC0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBEcmFtYXRpY2FsbHkgc2ltcGxpZnkgY2FsY3VsYXRlQWRqdXN0ZWROb2Rlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IGZhODE3YmFiMjg2YTYxMmM3NDg0NTFkNzU4MTNiMjdmYTc3MDcy
YzMuLjlhNjFkOWE4MDE0NjgzYTRlM2M4ZmY5OWNmNDRiOGJkYzc0MzdlZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBkZWxldGUgaW4g
YSBmZXcgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZh
dGUgaW5pdF0pOiBVc2UgbWFrZV91bmlxdWUuCisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRl
IGRlYWxsb2NdKTogRG9uJ3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBm
aW5hbGl6ZV0pOiBEb24ndCBkZWxldGUuCisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGRh
dGFdKTogVXNlIGdldC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW06CisgICAgICAgIChwcml2YXRlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ry
b3llZCBoZXJlIGluc3RlYWQgb2YgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBVc2UgdGhlCisg
ICAgICAgIG5ldyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGRpcmVjdCBnbG9iYWwgdmFyaWFibGUgYWNj
ZXNzLgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN0b3JhZ2VTZXNzaW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZGVhbGxvY10pOiBEb24ndCBkZWxldGUu
CisgICAgICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBmaW5hbGl6ZV0pOiBEb24ndCBkZWxldGUuCisg
ICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOiBVc2UgbWFrZV91bmlx
dWUuCisgICAgICAgICgtW1dlYkZyYW1lIF9kZXRhY2hTY3JpcHREZWJ1Z2dlcl0pOiBEb24ndCBk
ZWxldGUuCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6IFVzZSB1bmlxdWVf
cHRyLgorCiAyMDEzLTEwLTExICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgcHJlZmVyZW5jZSBzdXBwb3J0IGZvciBwaWNraW5nIHRoZSBvbGQg
V2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBmMTBiYWMyYjdlZWUyNWRiNThiMWY5
ZjcxYTIzZDVhN2IxNWZmYTJjLi4yOTdmOWExYzc4ZmJiNWJhYWE3MmM0NGFmM2I0NGYwZDJjMzg5
NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMTAtMTEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlxdWVfcHRyIGluc3Rl
YWQgb2YgZGVsZXRlIGluIGEgZmV3IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKHByaXZhdGVTZXNzaW9uKToKKyAgICAgICAgKGlkZW50aWZp
ZXJCYXNlKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UpOgor
ICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIwMTMtMTAtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Q2ZGZh
ZmM5MTdkMzRmZmVmZTc3NThhNzk4MDA1ODNiMWFjNzY3NS4uNjUzZTk3ZjEzYWQ0NjZkNWY1OTZk
M2QzOGY0OGQzYzExNTVjNTJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEw
LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVl
X3B0ciBpbnN0ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOiBVc2Ugc3RkOjptb3ZlLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQpOiBVc2Ugc3RkOjptb3ZlLiBBbHNvIGFkZCBpbnN0ZWFkIG9mIHNldC4KKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNo
ZWQpOiBEb24ndCBkZWxldGUuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oOiBDaGFuZ2VkIG1fZG93bmxvYWRzIHRvIGhvbGQgdW5pcXVlX3B0ciBpbnN0ZWFk
CisgICAgICAgIG9mIHJhdyBwb2ludGVycy4KKworICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmg6IFVzZSBzdGQ6OnVuaXF1ZV9wdHIgZm9yIG1fZGF0YS4KKworICAgICAgICAqIFNo
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OkhhbmRsZUFycmF5KTogRG9uJ3QgaW5pdGlhbGl6ZSBt
X2RhdGEgdG8gMC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6On5IYW5kbGVBcnJheSk6IERvbid0IGRlbGV0ZSBtX2RhdGEuCisgICAgICAgIChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6IFVzZSBtYWtlX3VuaXF1
ZSB0byBhbGxvY2F0ZSBtX2RhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpw
cml2YXRlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAg
ICAgKFdlYktpdDo6aWRlbnRpZmllckJhc2UpOiBVc2UgTmV2ZXJEZXN0cm95ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSB0aGUg
YWJvdmUuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2ll
QWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOiBEaXR0by4KKwogMjAxMy0x
MC0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHByZWZlcmVuY2Ugc3VwcG9ydCBmb3IgcGlja2luZyB0aGUgb2xkIFdlYiBJbnNwZWN0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRCYXNlLmNwcAppbmRleCBiNWFiZTEwMWNjNWJjY2M2MTkwMWY0YTY2NjIxOTI0
N2VlYTNhOGNkLi41YTlmNzFlMWJhOTg1ZWM1ZmZjOTRjMmZmNDAyOTQ1YmNhZjEwMzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQmFzZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC0xNjcsMTIgKzE2OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR3Vp
ZFZlcnNpb25NYXAoRGF0YWJhc2VHdWlkIGd1aWQsIFN0cmluZyBuZXdWZXJzaW9uKQogICAgIGd1
aWRUb1ZlcnNpb25NYXAoKS5zZXQoZ3VpZCwgbmV3VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IG5ld1ZlcnNpb24uaXNvbGF0ZWRDb3B5KCkpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8RGF0
YWJhc2VHdWlkLCBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPio+IEd1aWREYXRhYmFzZU1h
cDsKK3R5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0
PERhdGFiYXNlQmFja2VuZEJhc2UqPj4+IEd1aWREYXRhYmFzZU1hcDsKKwogc3RhdGljIEd1aWRE
YXRhYmFzZU1hcCYgZ3VpZFRvRGF0YWJhc2VNYXAoKQogewogICAgIC8vIEVuc3VyZSB0aGUgdGhl
IG11dGV4IGlzIGxvY2tlZC4KICAgICBBU1NFUlQoIWd1aWRNdXRleCgpLnRyeUxvY2soKSk7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChHdWlkRGF0YWJhc2VNYXAsIG1hcCwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxHdWlkRGF0YWJhc2VNYXA+IG1hcDsKICAgICByZXR1cm4gbWFw
OwogfQogCkBAIC0xODQsMTIgKzE4NiwxMiBAQCBzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JP
cmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbQogICAg
IFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiArICIvIiArIG5hbWU7CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElE
R3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCwgKCkpOwotICAgIERhdGFiYXNlR3Vp
ZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3RyaW5nSUQpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgaW50Pj4gbWFwOworICAgIERhdGFi
YXNlR3VpZCBndWlkID0gbWFwLmdldCgpLmdldChzdHJpbmdJRCk7CiAgICAgaWYgKCFndWlkKSB7
CiAgICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dVSUQgPSAxOwogICAgICAgICBndWlkID0g
Y3VycmVudE5ld0dVSUQrKzsKLSAgICAgICAgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5zZXQo
c3RyaW5nSUQsIGd1aWQpOworICAgICAgICBtYXAuZ2V0KCkuc2V0KHN0cmluZ0lELCBndWlkKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZ3VpZDsKQEAgLTIxNSw3ICsyMTcsNiBAQCBEYXRhYmFzZUJh
Y2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
Q29udGV4dD4gZGF0YQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRWZXJzaW9uLmlz
b2xhdGVkQ29weSgpKQogICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZS5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQotICAgICwgbV9ndWlk
KDApCiAgICAgLCBtX29wZW5lZChmYWxzZSkKICAgICAsIG1fbmV3KGZhbHNlKQogICAgICwgbV9p
c1N5bmNEYXRhYmFzZShkYXRhYmFzZVR5cGUgPT0gRGF0YWJhc2VUeXBlOjpTeW5jKQpAQCAtMjI1
LDE3ICsyMjYsMTQgQEAgRGF0YWJhc2VCYWNrZW5kQmFzZTo6RGF0YWJhc2VCYWNrZW5kQmFzZShQ
YXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGEKICAgICBtX2RhdGFiYXNlQXV0
aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCiAg
ICAgaWYgKG1fbmFtZS5pc051bGwoKSkKLSAgICAgICAgbV9uYW1lID0gIiI7CisgICAgICAgIG1f
bmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihndWlkTXV0ZXgoKSk7CiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5hbWUpOwotICAgICAgICBIYXNoU2V0PERhdGFi
YXNlQmFja2VuZEJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3Vp
ZCk7Ci0gICAgICAgIGlmICghaGFzaFNldCkgewotICAgICAgICAgICAgaGFzaFNldCA9IG5ldyBI
YXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPjsKLSAgICAgICAgICAgIGd1aWRUb0RhdGFiYXNl
TWFwKCkuc2V0KG1fZ3VpZCwgaGFzaFNldCk7Ci0gICAgICAgIH0KLQorICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+JiBoYXNoU2V0ID0gZ3VpZFRv
RGF0YWJhc2VNYXAoKS5hZGQobV9ndWlkLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGlmICghaGFzaFNldCkKKyAgICAgICAgICAgIGhhc2hTZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kQmFzZSo+PigpOwogICAgICAgICBoYXNoU2V0LT5hZGQo
dGhpcyk7CiAgICAgfQogCkBAIC0yNjgsMTMgKzI2NiwxMyBAQCB2b2lkIERhdGFiYXNlQmFja2Vu
ZEJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KGd1aWRNdXRleCgpKTsKIAotICAgICAgICBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPiog
aGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7Ci0gICAgICAgIEFTU0VS
VChoYXNoU2V0KTsKLSAgICAgICAgQVNTRVJUKGhhc2hTZXQtPmNvbnRhaW5zKHRoaXMpKTsKLSAg
ICAgICAgaGFzaFNldC0+cmVtb3ZlKHRoaXMpOwotICAgICAgICBpZiAoaGFzaFNldC0+aXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnJlbW92ZShtX2d1aWQpOwot
ICAgICAgICAgICAgZGVsZXRlIGhhc2hTZXQ7CisgICAgICAgIGF1dG8gaXQgPSBndWlkVG9EYXRh
YmFzZU1hcCgpLmZpbmQobV9ndWlkKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IGd1aWRUb0RhdGFi
YXNlTWFwKCkuZW5kKCkpOworICAgICAgICBBU1NFUlQoaXQtPnZhbHVlKTsKKyAgICAgICAgQVNT
RVJUKGl0LT52YWx1ZS0+Y29udGFpbnModGhpcykpOworICAgICAgICBpdC0+dmFsdWUtPnJlbW92
ZSh0aGlzKTsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBndWlkVG9EYXRhYmFzZU1hcCgpLnJlbW92ZShpdCk7CiAgICAgICAgICAgICBndWlkVG9WZXJz
aW9uTWFwKCkucmVtb3ZlKG1fZ3VpZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjksNyArMzI3
LDcgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29s
IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihndWlkTXV0ZXgoKSk7CiAKLSAgICAgICAgR3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9y
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKKyAgICAgICAgYXV0byBl
bnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1fZ3VpZCk7CiAgICAgICAgIGlmIChlbnRy
eSAhPSBndWlkVG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsKICAgICAgICAgICAgIC8vIE1hcCBudWxs
IHN0cmluZyB0byBlbXB0eSBzdHJpbmcgKHNlZSB1cGRhdGVHdWlkVmVyc2lvbk1hcCgpKS4KICAg
ICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnZhbHVlLmlzTnVsbCgpID8gZW1wdHlT
dHJpbmcoKSA6IGVudHJ5LT52YWx1ZS5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzU1ZGQxOWEyOGVkNjU3YzhjMTZkOGNh
NzlkZGJiZDE0NjQwNGQ0Li5lMDcwMTBhNmU3NGU1ZDg1ZmIzNGJlMTM0YzM0ZTU3NDcyMDMwNDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC01MCw3
ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkRm9udDo6Q2FjaGVkRm9udChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgRm9udFJlc291cmNlKQotICAgICwgbV9mb250RGF0YSgwKQog
ICAgICwgbV9sb2FkSW5pdGlhdGVkKGZhbHNlKQogICAgICwgbV9oYXNDcmVhdGVkRm9udERhdGEo
ZmFsc2UpCiB7CkBAIC01OCw3ICs1Nyw2IEBAIENhY2hlZEZvbnQ6OkNhY2hlZEZvbnQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAKIENhY2hlZEZvbnQ6On5DYWNoZWRG
b250KCkKIHsKLSAgICBkZWxldGUgbV9mb250RGF0YTsKIH0KIAogdm9pZCBDYWNoZWRGb250Ojps
b2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQpAQCAtMTAwLDcgKzk4LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSgpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFN0YXR1cyhEZWNvZGVFcnJv
cik7CiAgICAgfQotICAgIHJldHVybiBtX2ZvbnREYXRhOworICAgIHJldHVybiBtX2ZvbnREYXRh
LmdldCgpOwogfQogCiBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIEZvbnRS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCkBAIC0xNjQsMTAgKzE2Miw3IEBAIFNWR0ZvbnRF
bGVtZW50KiBDYWNoZWRGb250OjpnZXRTVkdGb250QnlJZChjb25zdCBTdHJpbmcmIGZvbnROYW1l
KSBjb25zdAogCiB2b2lkIENhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKLSAgICBp
ZiAobV9mb250RGF0YSkgewotICAgICAgICBkZWxldGUgbV9mb250RGF0YTsKLSAgICAgICAgbV9m
b250RGF0YSA9IDA7Ci0gICAgfQorICAgIG1fZm9udERhdGEgPSBudWxscHRyOwogfQogCiB2b2lk
IENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCmluZGV4IDU0ODE3OWZkYWRiYjA3MzUzNjZmYTlmMzNjZDMxN2RjZTQ1OWUxNjYu
LmNhNDMzYjYwYTE4MzM1NjQ4MDlkMjRmZGFmMGM2YjMzNGE4YjU4OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgT1ZFUlJJREU7CiAKLSAgICBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBtX2ZvbnREYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnREYXRhOwogICAgIGJvb2wgbV9sb2FkSW5pdGlh
dGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVkRm9udERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBjODM1YjkyMDY2OTE1
YmY5MDhmMDgyYTMzZjkzOWI4MGVjZGRhNWRjLi44MDA1ZDhlYmIzYTM1NTU5ODA5YjExYTFjMGI3
OWZkZWRmZmE3OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCkBAIC00Myw3ICs0Myw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIo
MCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBl
dGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgw
KQpAQCAtNDI5LDcgKzQyOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJv
b2wgY2F0Y2hVcElmTmVjZXNzYXJ5KQogCiAgICAgaWYgKCFjYXRjaFVwSWZOZWNlc3NhcnkgfHwg
dGltZSA8IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lKSB7CiAgICAgICAgIC8vIEhhdmVuJ3QgeWV0
IHJlYWNoZWQgdGltZSBmb3IgbmV4dCBmcmFtZSB0byBzdGFydDsgZGVsYXkgdW50aWwgdGhlbi4K
LSAgICAgICAgbV9mcmFtZVRpbWVyID0gbmV3IFRpbWVyPEJpdG1hcEltYWdlPih0aGlzLCAmQml0
bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgICAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPEJpdG1hcEltYWdlPj4odGhpcywgJkJpdG1hcEltYWdlOjphZHZh
bmNlQW5pbWF0aW9uKTsKICAgICAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjpt
YXgobV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgLSB0aW1lLCAwLikpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcmVhY2hlZCBvciBwYXNzZWQgdGhlIHRpbWUgZm9yIHRo
ZSBuZXh0IGZyYW1lIHRvIHN0YXJ0LgpAQCAtNDc5LDggKzQ3OCw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OnN0b3BBbmltYXRpb24oKQogewogICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmlt
YXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQogICAg
IC8vIHRoZSB0aW1lciB1bmxlc3MgYWxsIHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2luZy4K
LSAgICBkZWxldGUgbV9mcmFtZVRpbWVyOwotICAgIG1fZnJhbWVUaW1lciA9IDA7CisgICAgbV9m
cmFtZVRpbWVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggYmM5YTYzZmM0ZWU1Nzk0Zjc2Y2JkYTRmZTI5MGY0MzVlYTVhNmFkOS4uZmVjYzdiZmRi
MDYwNTViOGNhMzk5Yzc4NjM4NTJjNzk5ZDNlYzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0
ZToKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVu
dCBmcmFtZSBvZiBhbmltYXRpb24uCiAgICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7
IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhh
dmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKLSAgICBUaW1lcjxC
aXRtYXBJbWFnZT4qIG1fZnJhbWVUaW1lcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI8Qml0
bWFwSW1hZ2U+PiBtX2ZyYW1lVGltZXI7CiAgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50OyAvLyBI
b3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiAgVGhpcyB3aWxsIGJl
IGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0
aW9uLgogICAgIFJlcGV0aXRpb25Db3VudFN0YXR1cyBtX3JlcGV0aXRpb25Db3VudFN0YXR1czsK
ICAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMg
d2UndmUgZmluaXNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDFmNTYwMGVlODRjOGE2OTdlOTQwZGI1N2VmYmRjZDQ0NzVjYjI4MjcuLmI1Yzk4NTVmMDk0
YmYyZmRkZGE1ZTEyZGY2MTIwOGY2Y2U0NWI1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3BwCmluZGV4IGQxNjc4
NGNmODNiZDQyMGJiNDFhYzM0YzZhNGEyZTA1NjY4Y2Q0OGYuLjI0YTAyZmI2NTkxNzU2NDg5MzNl
OTk3MDM3MmFkMmRlMTYxYmRiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGJvb2wgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQp
CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1
ZmZlcik7CiAKQEAgLTY0LDE2ICs2NCwxNiBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIE9wZW5U
eXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOwogICAgIGlmICghdHJhbnNj
b2RlQnVmZmVyKQotICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAg
ICAgIHJldHVybiBudWxscHRyOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KICAgICBidWZmZXIgPSB0
cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CiAjZW5kaWYKIAogICAgIEZJTEVDSEFSIG5hbWVbTUFYX0ZP
TlRfTkFNRV9MRU4rMV07CiAgICAgbWVtc2V0KG5hbWUsIDAsIE1BWF9GT05UX05BTUVfTEVOKzEp
OwogICAgIGlmIChGU19sb2FkX2ZvbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpn
ZXRJVHlwZSgpLCAwLCBjb25zdF9jYXN0PEZTX0JZVEUqPihyZWludGVycHJldF9jYXN0PGNvbnN0
IEZTX0JZVEUqPihidWZmZXItPmRhdGEoKSkpLCAwLCBNQVhfRk9OVF9OQU1FX0xFTiwgbmFtZSkg
IT0gU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKG5hbWUsIGJ1ZmZlcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4obmFtZSwg
YnVmZmVyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCAwMGEwM2RlMTgzNTRl
YzBlMDE2NTY5NmNiOWM2OTViOGJhZjQ2OTRhLi44ZTU2MjdmZTZjNjkyNmRhNDM4NzU0MGU3NjU3
NDYxNWRjMTBmM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwxMiArNDAsMTAg
QEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBu
YXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAgICwgbV9jdXJy
ZW50RnJhbWUoMCkKLSAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKICAg
ICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9u
Q291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAg
ICwgbV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkU2l6ZShtX3NpemUud2lkdGgoKSAq
IG1fc2l6ZS5oZWlnaHQoKSAqIDQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKICAgICAsIG1faXNT
b2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKQEAg
LTU0LDEyICs1MywxMSBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgICwgbV9zaXplQXZh
aWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgbV9kZWNv
ZGVkU2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNDsKLQogICAgIG1f
ZnJhbWVzLmdyb3coMSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiAgICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOwogICAgIG1fZnJhbWVzWzBd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKwogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNTgwNzEwMjY4NzZkYTQ5Zjc5MWU5
NzM5ZjdkNzdjNzUyY2Q0YWMxMy4uZjdhMDU1YTVjOGM1MzUyMjcwNGNmNWU1NTZjNmFlNjk3NjI4
OTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDksNyArNDksNyBAQCBw
cml2YXRlOgogICAgIGNhaXJvX2ZvbnRfZmFjZV90KiBtX2ZvbnRGYWNlOwogfTsKIAotRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
CmluZGV4IDZjNjljZTA4ODc4YTVlMDc5NGNiNTJiYjc1MDliM2RjY2MwODRiYTkuLjkyY2NmZGEz
YTYwMzMyNTRlMDk4Y2JmZDgwMDIwNGQ4YWJlMDMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC02Nyw3ICs2
Nyw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJl
bnRGcmFtZSgwKQogICAgICwgbV9mcmFtZXMoMCkKLSAgICAsIG1fZnJhbWVUaW1lcigwKQogICAg
ICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25D
b3VudFN0YXR1cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA4
NDFjOGEzYWRmZmY4OGJlMzIzZDNkZDYzYTZmYjY1ZWNmMjRkNjFlLi5lMTM5YWE1NjZkODA1OTIx
YTA2ZTVhYjkzMWQwZWQ4NmUzNmVhZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRm9udFBsYXRmb3Jt
RGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBi
b29sIGJvbGQsIGIKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX2ZvbnRGYWNlLCBzaXpl
LCBib2xkLCBpdGFsaWMpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
QEAgLTcyLDIyICs3MiwyMiBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIGlmIChpc1dPRkYoYnVm
ZmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsKICAgICAgICAgaWYgKCFjb252ZXJ0
V09GRlRvU2ZudChidWZmZXIsIHNmbnQpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZm50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjphZG9wdFZlY3RvcihzZm50KTsKICAgICAgICAgYnVmZmVyID0gc2ZudEJ1ZmZlci5nZXQoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5ID0gMDsKKyAgICBzdGF0aWMg
RlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiBGVF9Jbml0X0ZyZWVUeXBl
KCZsaWJyYXJ5KSkgewotICAgICAgICBsaWJyYXJ5ID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGxpYnJhcnkgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3X01lbW9yeV9GYWNl
KGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci0+ZGF0YSgp
KSwgYnVmZmVyLT5zaXplKCksIDAsICZmcmVlVHlwZUZhY2UpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZnJlZVR5cGVGYWNlLCBidWZm
ZXIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJv
b2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBm
b3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggZDU2MjExODJhODAwOWIw
MDc2ZWZhYTVlM2RjNjFjMWY5ZGNmNmMzMi4uN2IxZjg5OGJiMTcxMjRjMzhhODQzMzRkNDRhNzk4
ZTVjZmJiZTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzEsMTUgKzMx
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKQogewotICAgIENHRm9udFJlbGVhc2UobV9jZ0ZvbnQpOwog
fQogCiBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIEZvbnRSZW5kZXJpbmdN
b2RlKQogewotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKG1fY2dGb250LCBzaXplLCBib2xk
LCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQpOworICAgIHJldHVybiBGb250UGxh
dGZvcm1EYXRhKG1fY2dGb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9u
LCB3aWR0aFZhcmlhbnQpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
QEAgLTQ3LDE0ICs0NiwxNCBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIE9wZW5UeXBlU2FuaXRp
emVyIHNhbml0aXplcihidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29k
ZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOwogICAgIGlmICghdHJhbnNjb2RlQnVmZmVy
KQotICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgICAgIHJldHVy
biBudWxscHRyOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KICAgICBidWZmZXIgPSB0cmFuc2NvZGVC
dWZmZXIuZ2V0KCk7CiAjZWxzZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNmbnRCdWZmZXI7
CiAgICAgaWYgKGlzV09GRihidWZmZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBzZm50Owog
ICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHNmbnRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHNmbnQpOwogICAgICAgICBidWZmZXIg
PSBzZm50QnVmZmVyLmdldCgpOwpAQCAtNjgsMTAgKzY3LDkgQEAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
IAogICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IGNnRm9udFJlZiA9IGFkb3B0Q0YoQ0dGb250Q3Jl
YXRlV2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9u
dFJlZikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG5ldyBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnRhaW5lclJlZiwgY2dGb250UmVmLmxlYWtSZWYoKSk7Ci0g
ICAgcmV0dXJuIGZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oY29udGFpbmVyUmVmLCBjZ0ZvbnRSZWYuZ2V0
KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNv
bnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYzdhZTFj
YTFmNDBlNzFhYTk3MGM4ZjNlZmJiYzEwMTEyYTc0YzlkOC4uYzg3Y2NkODk5MGI1OWY2YjFhNmIz
Njk3YmE2NGEzZGZkMTM2M2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogdHlw
ZWRlZiBVSW50MzIgQVRTRm9udENvbnRhaW5lclJlZjsKQEAgLTUzLDEwICs1NCwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBBVFNGb250Q29udGFpbmVyUmVmIG1fYXRzQ29udGFpbmVyOwotICAgIENHRm9udFJlZiBtX2Nn
Rm9udDsKKyAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBtX2NnRm9udDsKIH07CiAKLUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
Kik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKaW5kZXggMmU1NDEyNDFiMTBlOTEwYzMwNTQxYzVkNzQxZjU4NTZiNDEwNjU1
OC4uNDk3NTY0OGUzNWQ2MzA2N2NlMTU1YjFlNzU4OTBjODZjYjA1ZDJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRf
QVJHKGJ1ZmZlciwgYnVmZmVyKTsKIApAQCAtODksNyArODksNyBAQCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogICAgIGlmIChpc1dPRkYoYnVmZmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsK
ICAgICAgICAgaWYgKCFjb252ZXJ0V09GRlRvU2ZudChidWZmZXIsIHNmbnQpKQotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZm50
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihzZm50KTsKICAgICAgICAgYnVmZmVy
ID0gc2ZudEJ1ZmZlci5nZXQoKTsKQEAgLTk5LDggKzk5LDggQEAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
ICAgICBIQU5ETEUgZm9udFJlZmVyZW5jZTsKICAgICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlZmVyZW5jZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVy
ZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBv
cnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggMTg4OTUxYmM4MTUxOTMxMzk3YmIxZGRkZTM5NWNmZTVmYjUxYTY0MC4uMjI4MDk0OTA4
ODMzMWE1ODRkZjlhNGRkYmFmOTc5Yzc0NjUxNGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciopOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjFhODIyNTBkYTA2MzQwYjAxY2U0
OGUxMjBlYWFjMmYwZjhkYjU5My4uN2ZjNTVmYTQwNjZjMWNlNDZlOGY3NzU3MWY5Zjk0Y2Y4MGY4
ZjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJu
IGZvbnROYW1lOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAKQEAgLTg4
LDkgKzg4LDkgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBIQU5ETEUgZm9udFJlZmVyZW5jZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKIAogICAgIGlmICghZm9u
dFJlZmVyZW5jZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGUxZTVhZmE4NTZlZDNjYzlkY2FhZmFmZTY3NWEw
Nzc4NDExZWZlN2MuLjljODliM2M5MDAwY2ZlOWI0ZTUxMjNiN2U2OTg3OTk3NGIxZGZkNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC03MCwxNSArNzAsMTUgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lLnJl
cGxhY2UoJy8nLCAnXycpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKGdfY3VzdG9tRm9udENh
Y2hlKSB7CiAgICAgICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvY2FsQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgaWYgKHJl
bmFtZUZvbnQobG9jYWxCdWZmZXIuZ2V0KCksIGZvbnROYW1lKSAmJiBnX2N1c3RvbUZvbnRDYWNo
ZS0+cmVnaXN0ZXJGb250KGZvbnROYW1lLCBsb2NhbEJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udE5hbWUpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5h
bWUpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9v
bCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZv
cm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBhM2E4YTI5NjJmM2YyNmMx
NjQ3ODZlMDY1MjM1ZDcwOTk3ODk4MzM2Li44NGQ1ZDczNWU0MTM4MDcxNDNhZWIyYzc3MjczNTVh
NTA0MGQ5ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC01Niw3ICs1Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB9Owog
Ci0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShjb25zdCBTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXIqKTsKICAgICB2b2lkIHNldEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggZWU3NzcyNjNlZDQxM2RlODZhODQ3MTY4ZTZhYzFmM2NhYzgz
YTcyMC4uNTZhMGE1OTc1MThhN2Q2YTk2YzI0MDk4NmI1ZGM4NmFlNWU3MzkxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiBjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKIAogICAgIHN0YXRpYyB2b2lk
IHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAtNTUsMTAgKzU1LDEyIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbihSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwog
ICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNo
b3VsZCBiZSB1c2VkLgogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzaW9u
KCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNP
VVApCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKik7CiAgICAgdm9pZCBz
ZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lvbikgeyBtX3Nlc3Npb24gPSBzZXNzaW9u
OyB9CiAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uLmdldCgpOyB9CiAjZWxzZQpAQCAtNjksMTEgKzcxLDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+KTsKICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9wbGF0Zm9ybVNlc3Npb247CiAjZWxpZiBVU0UoU09VUCkKLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU291cFNlc3Npb24qKTsKICAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247
CiAjZWxzZQogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBlZjU5NDdkZThmMTNmZDAwNzI5Njc4NWNm
MjdkY2JiODIwNTRjOGQ0Li5hMTNmMzE2NWFjODZkOWIxZjkwYzhiN2I0YjhmMTc2MzcwOTBlNTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtODksMTggKzg5LDE4IEBA
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKQogICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
OwogfQogCi1QYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllckJhc2UpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyQmFzZSkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllciA9IFN0cmluZyhpZGVudGlmaWVyQmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRl
Q0ZTdHJpbmcoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBzZXNzaW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihh
ZG9wdENGKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSkp
KSk7CisgICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOwogI2Vsc2UKLSAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihhZG9wdENGKHdrQ3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSwgZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKSkpKSk7CisgICAgYXV0byBzZXNzaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KGFkb3B0Q0Yod2tDcmVh
dGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOwogI2VuZGlmCiAgICAgc2Vz
c2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogCi0gICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgp
OworICAgIHJldHVybiBzZXNzaW9uOwogfQogCiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCA3NTAxNTY5ZTRkN2QzZWVkYzVmMzM4
ZjllODU5NjM1NjY2ZWMyNjY1Li5iZTRlMThiNTNjNjUzNzkwNWM2ZjdkODA4YzQ4OGQxYmZmMTVi
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOSw4ICsyOSw3
IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDMzICszOSwzMCBAQCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKIH0K
IAotc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigp
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHRT
ZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAg
ICBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4g
c2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAg
aWYgKCFkZWZhdWx0U2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gYWRvcHRQ
dHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Np
b24oKSkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpKTsKICAg
ICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLVBhc3NPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihj
b25zdCBTdHJpbmcmKQogewotICAgIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Np
b24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSkpOwogICAgIHNlc3Npb24tPm1faXNQcml2YXRlID0g
dHJ1ZTsKLQotICAgIHJldHVybiBzZXNzaW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2Vzc2lv
bjsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQogewotICAgIC8vIEEgbnVsbCBzZXNzaW9uIHdpbGwgbWFrZSB1cyBmYWxsIGJhY2sg
dG8gdGhlIGRlZmF1bHQgY29va2llIGphciwgd2hpY2ggaXMgY3VycmVudGx5Ci0gICAgLy8gdGhl
IGV4cGVjdGVkIGJlaGF2aW9yIGZvciB0ZXN0cy4KLSAgICBkZWZhdWx0U2Vzc2lvbigpID0gYWRv
cHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVz
dGluZ1Nlc3Npb24oKSkpOworICAgIGRlZmF1bHRTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNz
aW9uKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
Ykhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5k
ZXggZTAzNzhiNzY3OWQ1NWZiYmMxN2ZjOTA3ZjNlZDM1ODFhZTQ4MzViYy4uNmZiMzYyZTFmMGZk
MzhhNDAyOTFjNmQ4MTY1OTMwYzQ4ZWY4MDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3Rvcnkv
V2ViSGlzdG9yeS5tbQpAQCAtNzQsNyArNzQsNyBAQCBAZW5kCiBAaW50ZXJmYWNlIFdlYkhpc3Rv
cnlQcml2YXRlIDogTlNPYmplY3QgewogQHByaXZhdGUKICAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICpfZW50cmllc0J5VVJMOwotICAgIERhdGVUb0VudHJpZXNNYXAqIF9lbnRyaWVzQnlEYXRlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVG9FbnRyaWVzTWFwPiBfZW50cmllc0J5RGF0ZTsKICAg
ICBOU011dGFibGVBcnJheSAqX29yZGVyZWRMYXN0VmlzaXRlZERheXM7CiAgICAgQk9PTCBpdGVt
TGltaXRTZXQ7CiAgICAgaW50IGl0ZW1MaW1pdDsKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChpZClp
bml0CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBuZXcg
RGF0ZVRvRW50cmllc01hcDsKKyAgICBfZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8
RGF0ZVRvRW50cmllc01hcD4oKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTQxLDEzICsx
NDEsMTEgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW19lbnRyaWVzQnlVUkwgcmVsZWFzZV07
CiAgICAgW19vcmRlcmVkTGFzdFZpc2l0ZWREYXlzIHJlbGVhc2VdOwotICAgIGRlbGV0ZSBfZW50
cmllc0J5RGF0ZTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUK
IHsKLSAgICBkZWxldGUgX2VudHJpZXNCeURhdGU7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0K
IApAQCAtNjM2LDcgKzYzNCw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKICAgICAKICAgICAvLyBJZ25v
cmVzIHRoZSBkYXRlIGFuZCBpdGVtIGNvdW50IGxpbWl0czsgdGhlc2UgYXJlIHJlc3BlY3RlZCB3
aGVuIGxvYWRpbmcgaW5zdGVhZCBvZiB3aGVuIHNhdmluZywgc28KICAgICAvLyB0aGF0IGNsaWVu
dHMgY2FuIGxlYXJuIG9mIGRpc2NhcmRlZCBpdGVtcyBieSBsaXN0ZW5pbmcgdG8gV2ViSGlzdG9y
eUl0ZW1zRGlzY2FyZGVkV2hpbGVMb2FkaW5nTm90aWZpY2F0aW9uLgotICAgIFdlYkhpc3RvcnlX
cml0ZXIgd3JpdGVyKF9lbnRyaWVzQnlEYXRlKTsKKyAgICBXZWJIaXN0b3J5V3JpdGVyIHdyaXRl
cihfZW50cmllc0J5RGF0ZS5nZXQoKSk7CiAgICAgd3JpdGVyLndyaXRlUHJvcGVydHlMaXN0KCk7
CiAgICAgcmV0dXJuIFtbKE5TRGF0YSAqKXdyaXRlci5yZWxlYXNlRGF0YSgpLmdldCgpIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggNGFkNzdj
NmIzNGQ0OWM2MmZkMjliNjc0M2RkYjAzODVlMzk3NzUzMi4uYWE5NTcyN2M3Y2QxNjVhY2NjNzA3
NDg0ZGNkYzZjNmU1MmQyYzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0zMiwy
NyArMzIsMzEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1z
dGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbjsKK3N0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAogdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKQorICAg
IGlmIChwcml2YXRlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2YXRlU2Vz
c2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKS5sZWFrUHRyKCk7Cisg
ICAgcHJpdmF0ZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJd
KTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGRl
bGV0ZSBwcml2YXRlU2Vzc2lvbjsKLSAgICBwcml2YXRlU2Vzc2lvbiA9IDA7CisgICAgcHJpdmF0
ZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdApAQCAtOTQsNyArOTgsNyBAQCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1l
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247CisgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Np
b24oKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNjhm
NTljZmRkMjBjNjk4YjllYzExMGVjMGY1YjMwYTA3YjM2NWQ2ZS4uZDE5Mjc3NjIxOTQ1N2NhNTgw
MTMwNmRhZTMxNTI0OGVkZGNlNWI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0xNjQsMTUgKzE2NCwxMSBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbd2ViRnJh
bWVWaWV3IHJlbGVhc2VdOwogCi0gICAgZGVsZXRlIHNjcmlwdERlYnVnZ2VyOwotCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCiAtICh2b2lkKWZpbmFsaXplCiB7Ci0gICAgZGVsZXRlIHNjcmlw
dERlYnVnZ2VyOwotCiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIApAQCAtMzIyLDIwICszMTgs
MTYgQEAgLSAodm9pZClfYXR0YWNoU2NyaXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlcikgewotICAgICAgICBBU1NFUlQoX3ByaXZh
dGUtPnNjcmlwdERlYnVnZ2VyID09IGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSk7CisgICAgICAg
IEFTU0VSVChfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIuZ2V0KCkgPT0gZ2xvYmFsT2JqZWN0LT5k
ZWJ1Z2dlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3Jp
cHREZWJ1Z2dlciA9IG5ldyBXZWJTY3JpcHREZWJ1Z2dlcihnbG9iYWxPYmplY3QpOworICAgIF9w
cml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdn
ZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAKIC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCiB7
Ci0gICAgaWYgKCFfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGRlbGV0ZSBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXI7Ci0gICAgX3ByaXZhdGUtPnNjcmlw
dERlYnVnZ2VyID0gMDsKKyAgICBfcHJpdmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBudWxscHRyOwog
fQogCiAtIChpZClfaW5pdFdpdGhXZWJGcmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZ2IHdlYlZp
ZXc6KFdlYlZpZXcgKil2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRl
cm5hbC5oCmluZGV4IGFiOGM1YzI4MTgxYjY0NDA0ODFjM2VlY2JlY2I2MTY5YmU4YWMyZTguLmZj
Y2JlYWExY2FiZGRmZmQ3M2U0M2Q5NDNmZjdjMmYzODQyNWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCkBAIC03OCw3ICs3OCw3IEBAIFdlYlZp
ZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZyYW1lKTsKIEBwdWJsaWMKICAgICBXZWJDb3Jl
OjpGcmFtZSogY29yZUZyYW1lOwogICAgIFdlYkZyYW1lVmlldyAqd2ViRnJhbWVWaWV3OwotICAg
IFdlYlNjcmlwdERlYnVnZ2VyKiBzY3JpcHREZWJ1Z2dlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViU2NyaXB0RGVidWdnZXI+IHNjcmlwdERlYnVnZ2VyOwogICAgIGlkIGludGVybmFsTG9hZERl
bGVnYXRlOwogICAgIEJPT0wgc2hvdWxkQ3JlYXRlUmVuZGVyZXJzOwogICAgIEJPT0wgaW5jbHVk
ZWRJbldlYktpdFN0YXRpc3RpY3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDVl
ZTQ3MDYzZGUzY2JlNjUxNzM4NzkwM2M4YjA5OGZjMWFkNTQxNjEuLmUwMjljMDNhYzQ5ZmM4OTJm
MmU0NjVhYTE0ZjFlZTAyODA0ZWQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBA
IC00MSw4ICs0MSwxNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJpdmF0ZVNlc3Npb247Ci1zdGF0aWMgU3RyaW5nKiBpZGVu
dGlmaWVyQmFzZTsKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiYgcHJpdmF0ZVNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vz
c2lvbjsKK30KKworc3RhdGljIFN0cmluZyYgaWRlbnRpZmllckJhc2UoKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CiAKICNp
ZiBVU0UoQ0ZORVRXT1JLKQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29r
aWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5IHBvbGljeSkKQEAgLTUwLDggKzU5LDggQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhXZWJLaXRDb29raWUKICAg
ICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3Jh
Z2UoKSkKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKQot
ICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KHByaXZhdGVT
ZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgaWYgKHByaXZhdGVT
ZXNzaW9uKCkpCisgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xp
Y3kocHJpdmF0ZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQog
I2VuZGlmCiAKQEAgLTU5LDkgKzY4LDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGMKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgZGVsZXRlIGlkZW50aWZpZXJCYXNlOwot
Ci0gICAgaWRlbnRpZmllckJhc2UgPSBuZXcgU3RyaW5nKGJhc2UpOworICAgIGlkZW50aWZpZXJC
YXNlKCkgPSBiYXNlOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpAQCAtNjksMTkgKzc2LDE4IEBAIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiAjaWYg
VVNFKENGTkVUV09SSykKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKHBy
aXZhdGVTZXNzaW9uKQorICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoIWlkZW50aWZpZXJCYXNlKSB7CisgICAgaWYg
KGlkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKENGVHlwZVJlZiBidW5k
bGVWYWx1ZSA9IENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdl
dE1haW5CdW5kbGUoKSwga0NGQnVuZGxlSWRlbnRpZmllcktleSkpCiAgICAgICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQoYnVuZGxlVmFsdWUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCiAgICAgICAg
ICAgICAgICAgYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KGJ1bmRsZVZhbHVl
KTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gKmlkZW50aWZpZXJCYXNlOworICAg
IH0gZWxzZQorICAgICAgICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVT
ZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGJhc2UpLmxlYWtQdHIoKTsKKyAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwogI2VuZGlmCiB9
CiAKQEAgLTg5LDggKzk1LDcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgIGRlbGV0ZSBwcml2YXRlU2Vzc2lvbjsKLSAgICBwcml2YXRlU2Vzc2lvbiA9IDA7
CisgICAgcHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKIFJlc291cmNlRXJyb3IgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKQEAgLTEwOSw3ICsxMTQsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJp
dmF0ZVNlc3Npb247CisgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJl
dHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IGYxY2MwNjVjYTExMTBjOGJhZTJmNmU0NTc0MDg2
ZTBkYzc2ZTY3YjguLjI0YjI4OTgyYzE5MDk1NTRiZWJmOWRiMWEwZDE0MjE0MGEyMjAxOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTMwLDE3ICszMCwxNiBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
ICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgot
I2ltcG9ydCA8d3RmL093blB0ci5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGlj
IE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4sIHNlc3Npb24sICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247CiAgICAgcmV0dXJuIHNlc3Npb247
CiB9CiAKQEAgLTExMiw3ICsxMTEsNyBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKICAgICBBU1NFUlQoIXByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0
cmluZygpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkgPSBzdGQ6Om1vdmUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKSkpOwogfQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMDZhZmVlY2RjYTk3ZTU4ZTUzYzli
NDRlZjZiMDEwNWY1ZjVhNTgyMS4uZGYzNTNkODc3Y2M2N2M4NDY4YzQ3NzE0OTUyNzA2MjE4MTIy
ZDFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6c3Rh
cnREb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgZG93bmxvYWQtPnN0YXJ0KCk7CiAKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5z
KGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxvYWRJRCwgZG93bmxvYWQu
cmVsZWFzZSgpKTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgc3RkOjptb3ZlKGRv
d25sb2FkKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRsZVRv
RG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCwgUmVzb3VyY2VIYW5kbAogCiAgICAgZG93bmxv
YWQtPnN0YXJ0V2l0aEhhbmRsZShoYW5kbGUsIHJlc3BvbnNlKTsKICAgICBBU1NFUlQoIW1fZG93
bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKLSAgICBtX2Rvd25sb2Fkcy5zZXQoZG93bmxv
YWRJRCwgZG93bmxvYWQucmVsZWFzZSgpKTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJ
RCwgc3RkOjptb3ZlKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5j
ZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpAQCAtNjksOCArNjksNiBAQCB2b2lkIERv
d25sb2FkTWFuYWdlcjo6ZG93bmxvYWRGaW5pc2hlZChEb3dubG9hZCogZG93bmxvYWQpCiB7CiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkLT5kb3dubG9hZElEKCkpKTsK
ICAgICBtX2Rvd25sb2Fkcy5yZW1vdmUoZG93bmxvYWQtPmRvd25sb2FkSUQoKSk7Ci0KLSAgICBk
ZWxldGUgZG93bmxvYWQ7CiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkaWRDcmVhdGVEb3du
bG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaAppbmRleCBjYTdlZThhMjEzODE5YjNhMmRhZDVlNGZiZWJkZDUxMWJhZThiYjJkLi5l
NWZmZmZhOTQ2ZjhlNTc4ODc4MzI5M2IzODg3ZDBiMTY2NTkzM2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIENsaWVudCogbV9jbGllbnQ7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgRG93bmxvYWQqPiBtX2Rvd25sb2FkczsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+PiBtX2Rvd25sb2FkczsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRi
b3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgK
aW5kZXggMTAzYmFkZTRmZThmYjdhODZkYjhjMDFmMDhjMTU4NDUyZmI0NGJhOS4uMmQ5NmMyNzc3
MzRmYzY5ZDFmNzVkNmM5OGM0MmFiZTM1MmM2Mzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2FuZGJveEV4dGVuc2lvbi5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAKICAg
ICBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQotICAgICAgICBIYW5k
bGUqIG1fZGF0YTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7CiAg
ICAgICAgIHNpemVfdCBtX3NpemU7CiAjZWxzZQogICAgICAgICBIYW5kbGUgbV9lbXB0eUhhbmRs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bQppbmRleCAzM2Q0MDAwOTQ3NjkxNWNjZWYyNmY3MzgwMjQ3MmM5M2VkZTllNmVmLi41M2Q5NmI4
MzE5YzcxN2U4YzRmMTIwZTQxZGRlYWJhOTY5YjVkODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC04NywxNSArODcsMTIgQEAg
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIEhhbmRsZSYKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OkhhbmRsZUFycmF5KCkKLSAgICA6IG1fZGF0YSgwKQotICAgICwgbV9zaXplKDApCisgICAg
OiBtX3NpemUoMCkKIHsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6On5IYW5k
bGVBcnJheSgpCiB7Ci0gICAgaWYgKG1fZGF0YSkKLSAgICAgICAgZGVsZXRlW10gbV9kYXRhOwog
fQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZShzaXplX3Qg
c2l6ZSkKQEAgLTEwNSw3ICsxMDIsNyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKIAogICAgIEFTU0VSVCghbV9kYXRhKTsKIAotICAg
IG1fZGF0YSA9IG5ldyBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbc2l6ZV07CisgICAgbV9kYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbXT4oc2l6ZSk7CiAg
ICAgbV9zaXplID0gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0KaW5kZXggMGNmNjgwMDc2MDA4NGNmZmIyYmQ2NzljNzUyNGEwOTg1NGQ3
OGU0MC4uZjgwODY3YzQwZDdmZDk0YzE0ZGJiZmY0MjJjY2Q1YWRhZDUyYTE1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0zNCw0NSArMzQs
NTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogcHJp
dmF0ZVNlc3Npb247Ci1zdGF0aWMgU3RyaW5nKiBpZGVudGlmaWVyQmFzZTsKK3N0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKworc3RhdGljIFN0cmlu
ZyYgaWRlbnRpZmllckJhc2UoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGJhc2U7CisgICAgcmV0dXJuIGJhc2U7Cit9CiAgICAgCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
Y29uc3QgU3RyaW5nJiBiYXNlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBkZWxldGUgaWRlbnRpZmllckJhc2U7Ci0KLSAgICBpZGVudGlmaWVyQmFzZSA9IG5ldyBTdHJp
bmcoYmFzZSk7CisgICAgaWRlbnRpZmllckJhc2UoKSA9IGJhc2U7CiB9CiAKIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChwcml2YXRlU2Vzc2lvbikKKyAg
ICBpZiAocHJpdmF0ZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJh
c2U7Ci0gICAgaWYgKCFpZGVudGlmaWVyQmFzZSkKKyAgICBpZiAoaWRlbnRpZmllckJhc2UoKS5p
c051bGwoKSkKICAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRl
bnRpZmllcl07CiAgICAgZWxzZQotICAgICAgICBiYXNlID0gKmlkZW50aWZpZXJCYXNlOworICAg
ICAgICBiYXNlID0gaWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVTZXNzaW9uID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpLmxl
YWtQdHIoKTsKKyAgICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGJhc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgZGVsZXRlIHByaXZhdGVTZXNzaW9uOwotICAg
IHByaXZhdGVTZXNzaW9uID0gMDsKKyAgICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lG
b3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKQEAgLTgyLDggKzg5
LDggQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xp
Y3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWMKICAgICBpZiAoUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgV0tTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBp
ZiAocHJpdmF0ZVNlc3Npb24pCi0gICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShw
cml2YXRlU2Vzc2lvbi0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOworICAgIGlmIChw
cml2YXRlU2Vzc2lvbigpKQorICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJp
dmF0ZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogICAgIAog
Ym9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygp
IGNvbnN0CkBAIC0xMTgsNyArMTI1LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9u
OworICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214043</attachid>
            <date>2013-10-11 19:31:03 -0700</date>
            <delta_ts>2013-10-11 20:02:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122639-20131011193101.patch</filename>
            <type>text/plain</type>
            <size>55334</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA5MjA0ZDFiNmYzMmY0
NTJjMzhkMmZiYzU4NGY2ZjEzNmQ4NGJhMy4uZTdiY2VhZTdjYjg4YTMxOWEyMTVkNzlkMTlkNzBk
NmRkNWQ2YTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTEwLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0
ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2d1aWQsIHdoaWNoIGlzIHNldCBpbiB0aGUg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgZXhwbGljaXRseSBhbnl3YXkuIFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC4gVXNl
IHRoZSBhZGQgaWRpb20gaW5zdGVhZCBvZiB0aGUgZ2V0L3NldCBpZGlvbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UpOiBVc2UgdGhlIGZpbmQv
cmVtb3ZlIGlkaW9tIGluc3RlYWQgb2YgdGhlCisgICAgICAgIGdldC9yZW1vdmUgaWRpb20uCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IFVzZSBhdXRvIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbWFw
IHR5cGUgYnkgbmFtZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQpOiBEb24ndCBpbml0aWFs
aXplIG1fZm9udERhdGEgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6IERvbid0IGRlbGV0ZSBtX2ZvbnREYXRh
LiB1bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKTogQWRkIGEgZ2V0LgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEb24ndCBkZWxldGUgbV9mb250RGF0YS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6IENoYW5nZWQgbV9mb250RGF0YSB0byBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOiBEb24ndCBpbml0aWFsaXplIG1fZnJhbWVUaW1lciB0byAwOyB1
bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
dGFydEFuaW1hdGlvbik6IFVzZSBtYWtlX3VuaXF1ZSB0byBjcmVhdGUgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24pOiBEb24ndCBkZWxldGUg
bV9mcmFtZVRpbWVyLiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQ2hhbmdlZCBtX0ZyYW1lVGltZXIgdG8gYSB1bmlx
dWVfcHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRG9uJ3QgaW5p
dGlhbGl6ZSBtX2ZyYW1lVGltZXIgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IERvbid0IGNhbGwgQ0dGb250UmVsZWFzZSBvbiBtX2NnRm9udC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOiBV
c2UgZ2V0IG9uIG1fY2dGb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCwgYW5kIG1ha2VfdW5pcXVlIGlu
c3RlYWQgb2YgbmV3LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6IENobmFnZWQgbV9jZ0ZvbnQgdG8gYmUgYSBSZXRhaW5QdHIsIGFuZCB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB0byBiZSBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgIFNhbWUgdGhpbmcg
b24gYWxsIHRoZSBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uCisgICAgICAgIHRvIGEgdW5pcXVlX3B0ciwgYW5kIG1hZGUg
Y29uc3RydWN0b3JzIHB1YmxpYy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIG1ha2VfdW5p
cXVlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgU2FtZSB0aGluZyBvbiBhbGwgdGhlIG90aGVyIHBs
YXRmb3Jtcy4KKwogMjAxMy0xMC0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBEcmFtYXRpY2FsbHkgc2ltcGxpZnkgY2FsY3VsYXRlQWRqdXN0ZWROb2Rlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IGZhODE3YmFiMjg2YTYxMmM3NDg0NTFkNzU4MTNiMjdmYTc3MDcy
YzMuLjlhNjFkOWE4MDE0NjgzYTRlM2M4ZmY5OWNmNDRiOGJkYzc0MzdlZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBkZWxldGUgaW4g
YSBmZXcgcGxhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI2MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeS5tbToKKyAgICAgICAgKC1bV2ViSGlzdG9yeVByaXZh
dGUgaW5pdF0pOiBVc2UgbWFrZV91bmlxdWUuCisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRl
IGRlYWxsb2NdKTogRG9uJ3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBm
aW5hbGl6ZV0pOiBEb24ndCBkZWxldGUuCisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIGRh
dGFdKTogVXNlIGdldC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW06CisgICAgICAgIChwcml2YXRlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ry
b3llZCBoZXJlIGluc3RlYWQgb2YgYSByYXcgcG9pbnRlci4KKyAgICAgICAgKFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBVc2UgdGhlCisg
ICAgICAgIG5ldyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGRpcmVjdCBnbG9iYWwgdmFyaWFibGUgYWNj
ZXNzLgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN0b3JhZ2VTZXNzaW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZGVhbGxvY10pOiBEb24ndCBkZWxldGUu
CisgICAgICAgICgtW1dlYkZyYW1lUHJpdmF0ZSBmaW5hbGl6ZV0pOiBEb24ndCBkZWxldGUuCisg
ICAgICAgICgtW1dlYkZyYW1lIF9hdHRhY2hTY3JpcHREZWJ1Z2dlcl0pOiBVc2UgbWFrZV91bmlx
dWUuCisgICAgICAgICgtW1dlYkZyYW1lIF9kZXRhY2hTY3JpcHREZWJ1Z2dlcl0pOiBEb24ndCBk
ZWxldGUuCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6IFVzZSB1bmlxdWVf
cHRyLgorCiAyMDEzLTEwLTExICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgcHJlZmVyZW5jZSBzdXBwb3J0IGZvciBwaWNraW5nIHRoZSBvbGQg
V2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBmMTBiYWMyYjdlZWUyNWRiNThiMWY5
ZjcxYTIzZDVhN2IxNWZmYTJjLi4yOTdmOWExYzc4ZmJiNWJhYWE3MmM0NGFmM2I0NGYwZDJjMzg5
NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMTAtMTEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlxdWVfcHRyIGluc3Rl
YWQgb2YgZGVsZXRlIGluIGEgZmV3IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKHByaXZhdGVTZXNzaW9uKToKKyAgICAgICAgKGlkZW50aWZp
ZXJCYXNlKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UpOgor
ICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbik6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIwMTMtMTAtMTAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Q2ZGZh
ZmM5MTdkMzRmZmVmZTc3NThhNzk4MDA1ODNiMWFjNzY3NS4uNjUzZTk3ZjEzYWQ0NjZkNWY1OTZk
M2QzOGY0OGQzYzExNTVjNTJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTEw
LTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVl
X3B0ciBpbnN0ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24pOiBVc2Ugc3RkOjptb3ZlLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQpOiBVc2Ugc3RkOjptb3ZlLiBBbHNvIGFkZCBpbnN0ZWFkIG9mIHNldC4KKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRmluaXNo
ZWQpOiBEb24ndCBkZWxldGUuCisKKyAgICAgICAgKiBTaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oOiBDaGFuZ2VkIG1fZG93bmxvYWRzIHRvIGhvbGQgdW5pcXVlX3B0ciBpbnN0ZWFk
CisgICAgICAgIG9mIHJhdyBwb2ludGVycy4KKworICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmg6IFVzZSBzdGQ6OnVuaXF1ZV9wdHIgZm9yIG1fZGF0YS4KKworICAgICAgICAqIFNo
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OkhhbmRsZUFycmF5KTogRG9uJ3QgaW5pdGlhbGl6ZSBt
X2RhdGEgdG8gMC4KKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6On5IYW5kbGVBcnJheSk6IERvbid0IGRlbGV0ZSBtX2RhdGEuCisgICAgICAgIChXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6IFVzZSBtYWtlX3VuaXF1
ZSB0byBhbGxvY2F0ZSBtX2RhdGEuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpw
cml2YXRlU2Vzc2lvbik6IFVzZSBOZXZlckRlc3Ryb3llZCBhbmQgdW5pcXVlX3B0ci4KKyAgICAg
ICAgKFdlYktpdDo6aWRlbnRpZmllckJhc2UpOiBVc2UgTmV2ZXJEZXN0cm95ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSB0aGUg
YWJvdmUuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2ll
QWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOiBEaXR0by4KKwogMjAxMy0x
MC0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIHByZWZlcmVuY2Ugc3VwcG9ydCBmb3IgcGlja2luZyB0aGUgb2xkIFdlYiBJbnNwZWN0b3Iu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmRCYXNlLmNwcAppbmRleCBiNWFiZTEwMWNjNWJjY2M2MTkwMWY0YTY2NjIxOTI0
N2VlYTNhOGNkLi41YTlmNzFlMWJhOTg1ZWM1ZmZjOTRjMmZmNDAyOTQ1YmNhZjEwMzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2Vu
ZEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQmFzZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CkBAIC0xNjcsMTIgKzE2OCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlR3Vp
ZFZlcnNpb25NYXAoRGF0YWJhc2VHdWlkIGd1aWQsIFN0cmluZyBuZXdWZXJzaW9uKQogICAgIGd1
aWRUb1ZlcnNpb25NYXAoKS5zZXQoZ3VpZCwgbmV3VmVyc2lvbi5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IG5ld1ZlcnNpb24uaXNvbGF0ZWRDb3B5KCkpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8RGF0
YWJhc2VHdWlkLCBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPio+IEd1aWREYXRhYmFzZU1h
cDsKK3R5cGVkZWYgSGFzaE1hcDxEYXRhYmFzZUd1aWQsIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0
PERhdGFiYXNlQmFja2VuZEJhc2UqPj4+IEd1aWREYXRhYmFzZU1hcDsKKwogc3RhdGljIEd1aWRE
YXRhYmFzZU1hcCYgZ3VpZFRvRGF0YWJhc2VNYXAoKQogewogICAgIC8vIEVuc3VyZSB0aGUgdGhl
IG11dGV4IGlzIGxvY2tlZC4KICAgICBBU1NFUlQoIWd1aWRNdXRleCgpLnRyeUxvY2soKSk7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChHdWlkRGF0YWJhc2VNYXAsIG1hcCwgKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxHdWlkRGF0YWJhc2VNYXA+IG1hcDsKICAgICByZXR1cm4gbWFw
OwogfQogCkBAIC0xODQsMTIgKzE4NiwxMiBAQCBzdGF0aWMgRGF0YWJhc2VHdWlkIGd1aWRGb3JP
cmlnaW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbQogICAg
IFN0cmluZyBzdHJpbmdJRCA9IG9yaWdpbiArICIvIiArIG5hbWU7CiAKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+IElER3VpZE1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElE
R3VpZE1hcCwgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCwgKCkpOwotICAgIERhdGFiYXNlR3Vp
ZCBndWlkID0gc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5nZXQoc3RyaW5nSUQpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgaW50Pj4gbWFwOworICAgIERhdGFi
YXNlR3VpZCBndWlkID0gbWFwLmdldCgpLmdldChzdHJpbmdJRCk7CiAgICAgaWYgKCFndWlkKSB7
CiAgICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dVSUQgPSAxOwogICAgICAgICBndWlkID0g
Y3VycmVudE5ld0dVSUQrKzsKLSAgICAgICAgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcC5zZXQo
c3RyaW5nSUQsIGd1aWQpOworICAgICAgICBtYXAuZ2V0KCkuc2V0KHN0cmluZ0lELCBndWlkKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZ3VpZDsKQEAgLTIxNSw3ICsyMTcsNiBAQCBEYXRhYmFzZUJh
Y2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5k
Q29udGV4dD4gZGF0YQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRWZXJzaW9uLmlz
b2xhdGVkQ29weSgpKQogICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZS5pc29sYXRlZENv
cHkoKSkKICAgICAsIG1fZXN0aW1hdGVkU2l6ZShlc3RpbWF0ZWRTaXplKQotICAgICwgbV9ndWlk
KDApCiAgICAgLCBtX29wZW5lZChmYWxzZSkKICAgICAsIG1fbmV3KGZhbHNlKQogICAgICwgbV9p
c1N5bmNEYXRhYmFzZShkYXRhYmFzZVR5cGUgPT0gRGF0YWJhc2VUeXBlOjpTeW5jKQpAQCAtMjI1
LDE3ICsyMjYsMTQgQEAgRGF0YWJhc2VCYWNrZW5kQmFzZTo6RGF0YWJhc2VCYWNrZW5kQmFzZShQ
YXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGEKICAgICBtX2RhdGFiYXNlQXV0
aG9yaXplciA9IERhdGFiYXNlQXV0aG9yaXplcjo6Y3JlYXRlKGluZm9UYWJsZU5hbWUpOwogCiAg
ICAgaWYgKG1fbmFtZS5pc051bGwoKSkKLSAgICAgICAgbV9uYW1lID0gIiI7CisgICAgICAgIG1f
bmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihndWlkTXV0ZXgoKSk7CiAgICAgICAgIG1fZ3VpZCA9IGd1aWRGb3JPcmlnaW5BbmROYW1lKHNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5hbWUpOwotICAgICAgICBIYXNoU2V0PERhdGFi
YXNlQmFja2VuZEJhc2UqPiogaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3Vp
ZCk7Ci0gICAgICAgIGlmICghaGFzaFNldCkgewotICAgICAgICAgICAgaGFzaFNldCA9IG5ldyBI
YXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPjsKLSAgICAgICAgICAgIGd1aWRUb0RhdGFiYXNl
TWFwKCkuc2V0KG1fZ3VpZCwgaGFzaFNldCk7Ci0gICAgICAgIH0KLQorICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+JiBoYXNoU2V0ID0gZ3VpZFRv
RGF0YWJhc2VNYXAoKS5hZGQobV9ndWlkLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGlmICghaGFzaFNldCkKKyAgICAgICAgICAgIGhhc2hTZXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEhhc2hTZXQ8RGF0YWJhc2VCYWNrZW5kQmFzZSo+PigpOwogICAgICAgICBoYXNoU2V0LT5hZGQo
dGhpcyk7CiAgICAgfQogCkBAIC0yNjgsMTMgKzI2NiwxMyBAQCB2b2lkIERhdGFiYXNlQmFja2Vu
ZEJhc2U6OmNsb3NlRGF0YWJhc2UoKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KGd1aWRNdXRleCgpKTsKIAotICAgICAgICBIYXNoU2V0PERhdGFiYXNlQmFja2VuZEJhc2UqPiog
aGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuZ2V0KG1fZ3VpZCk7Ci0gICAgICAgIEFTU0VS
VChoYXNoU2V0KTsKLSAgICAgICAgQVNTRVJUKGhhc2hTZXQtPmNvbnRhaW5zKHRoaXMpKTsKLSAg
ICAgICAgaGFzaFNldC0+cmVtb3ZlKHRoaXMpOwotICAgICAgICBpZiAoaGFzaFNldC0+aXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnJlbW92ZShtX2d1aWQpOwot
ICAgICAgICAgICAgZGVsZXRlIGhhc2hTZXQ7CisgICAgICAgIGF1dG8gaXQgPSBndWlkVG9EYXRh
YmFzZU1hcCgpLmZpbmQobV9ndWlkKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IGd1aWRUb0RhdGFi
YXNlTWFwKCkuZW5kKCkpOworICAgICAgICBBU1NFUlQoaXQtPnZhbHVlKTsKKyAgICAgICAgQVNT
RVJUKGl0LT52YWx1ZS0+Y29udGFpbnModGhpcykpOworICAgICAgICBpdC0+dmFsdWUtPnJlbW92
ZSh0aGlzKTsKKyAgICAgICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBndWlkVG9EYXRhYmFzZU1hcCgpLnJlbW92ZShpdCk7CiAgICAgICAgICAgICBndWlkVG9WZXJz
aW9uTWFwKCkucmVtb3ZlKG1fZ3VpZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMjksNyArMzI3
LDcgQEAgYm9vbCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29s
IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXMKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihndWlkTXV0ZXgoKSk7CiAKLSAgICAgICAgR3VpZFZlcnNpb25NYXA6Oml0ZXJhdG9y
IGVudHJ5ID0gZ3VpZFRvVmVyc2lvbk1hcCgpLmZpbmQobV9ndWlkKTsKKyAgICAgICAgYXV0byBl
bnRyeSA9IGd1aWRUb1ZlcnNpb25NYXAoKS5maW5kKG1fZ3VpZCk7CiAgICAgICAgIGlmIChlbnRy
eSAhPSBndWlkVG9WZXJzaW9uTWFwKCkuZW5kKCkpIHsKICAgICAgICAgICAgIC8vIE1hcCBudWxs
IHN0cmluZyB0byBlbXB0eSBzdHJpbmcgKHNlZSB1cGRhdGVHdWlkVmVyc2lvbk1hcCgpKS4KICAg
ICAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gZW50cnktPnZhbHVlLmlzTnVsbCgpID8gZW1wdHlT
dHJpbmcoKSA6IGVudHJ5LT52YWx1ZS5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzU1ZGQxOWEyOGVkNjU3YzhjMTZkOGNh
NzlkZGJiZDE0NjQwNGQ0Li5lMDcwMTBhNmU3NGU1ZDg1ZmIzNGJlMTM0YzM0ZTU3NDcyMDMwNDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC01MCw3
ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkRm9udDo6Q2FjaGVkRm9udChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKICAgICA6IENhY2hlZFJlc291
cmNlKHJlc291cmNlUmVxdWVzdCwgRm9udFJlc291cmNlKQotICAgICwgbV9mb250RGF0YSgwKQog
ICAgICwgbV9sb2FkSW5pdGlhdGVkKGZhbHNlKQogICAgICwgbV9oYXNDcmVhdGVkRm9udERhdGEo
ZmFsc2UpCiB7CkBAIC01OCw3ICs1Nyw2IEBAIENhY2hlZEZvbnQ6OkNhY2hlZEZvbnQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAKIENhY2hlZEZvbnQ6On5DYWNoZWRG
b250KCkKIHsKLSAgICBkZWxldGUgbV9mb250RGF0YTsKIH0KIAogdm9pZCBDYWNoZWRGb250Ojps
b2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQpAQCAtMTAwLDcgKzk4LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21G
b250RGF0YSgpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFN0YXR1cyhEZWNvZGVFcnJv
cik7CiAgICAgfQotICAgIHJldHVybiBtX2ZvbnREYXRhOworICAgIHJldHVybiBtX2ZvbnREYXRh
LmdldCgpOwogfQogCiBGb250UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIEZvbnRS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCkBAIC0xNjQsMTAgKzE2Miw3IEBAIFNWR0ZvbnRF
bGVtZW50KiBDYWNoZWRGb250OjpnZXRTVkdGb250QnlJZChjb25zdCBTdHJpbmcmIGZvbnROYW1l
KSBjb25zdAogCiB2b2lkIENhY2hlZEZvbnQ6OmFsbENsaWVudHNSZW1vdmVkKCkKIHsKLSAgICBp
ZiAobV9mb250RGF0YSkgewotICAgICAgICBkZWxldGUgbV9mb250RGF0YTsKLSAgICAgICAgbV9m
b250RGF0YSA9IDA7Ci0gICAgfQorICAgIG1fZm9udERhdGEgPSBudWxscHRyOwogfQogCiB2b2lk
IENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCmluZGV4IDU0ODE3OWZkYWRiYjA3MzUzNjZmYTlmMzNjZDMxN2RjZTQ1OWUxNjYu
LmNhNDMzYjYwYTE4MzM1NjQ4MDlkMjRmZGFmMGM2YjMzNGE4YjU4OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgT1ZFUlJJREU7CiAKLSAgICBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKiBtX2ZvbnREYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnREYXRhOwogICAgIGJvb2wgbV9sb2FkSW5pdGlh
dGVkOwogICAgIGJvb2wgbV9oYXNDcmVhdGVkRm9udERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBjODM1YjkyMDY2OTE1
YmY5MDhmMDgyYTMzZjkzOWI4MGVjZGRhNWRjLi44MDA1ZDhlYmIzYTM1NTU5ODA5YjExYTFjMGI3
OWZkZWRmZmE3OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCkBAIC00Myw3ICs0Myw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIo
MCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBl
dGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgw
KQpAQCAtNDI5LDcgKzQyOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OnN0YXJ0QW5pbWF0aW9uKGJv
b2wgY2F0Y2hVcElmTmVjZXNzYXJ5KQogCiAgICAgaWYgKCFjYXRjaFVwSWZOZWNlc3NhcnkgfHwg
dGltZSA8IG1fZGVzaXJlZEZyYW1lU3RhcnRUaW1lKSB7CiAgICAgICAgIC8vIEhhdmVuJ3QgeWV0
IHJlYWNoZWQgdGltZSBmb3IgbmV4dCBmcmFtZSB0byBzdGFydDsgZGVsYXkgdW50aWwgdGhlbi4K
LSAgICAgICAgbV9mcmFtZVRpbWVyID0gbmV3IFRpbWVyPEJpdG1hcEltYWdlPih0aGlzLCAmQml0
bWFwSW1hZ2U6OmFkdmFuY2VBbmltYXRpb24pOworICAgICAgICBtX2ZyYW1lVGltZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFRpbWVyPEJpdG1hcEltYWdlPj4odGhpcywgJkJpdG1hcEltYWdlOjphZHZh
bmNlQW5pbWF0aW9uKTsKICAgICAgICAgbV9mcmFtZVRpbWVyLT5zdGFydE9uZVNob3Qoc3RkOjpt
YXgobV9kZXNpcmVkRnJhbWVTdGFydFRpbWUgLSB0aW1lLCAwLikpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgcmVhY2hlZCBvciBwYXNzZWQgdGhlIHRpbWUgZm9yIHRo
ZSBuZXh0IGZyYW1lIHRvIHN0YXJ0LgpAQCAtNDc5LDggKzQ3OCw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OnN0b3BBbmltYXRpb24oKQogewogICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB0byBhbmlt
YXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGlzIGltYWdlLiAgRG9uJ3QgaW52YWxpZGF0ZQogICAg
IC8vIHRoZSB0aW1lciB1bmxlc3MgYWxsIHJlbmRlcmVycyBoYXZlIHN0b3BwZWQgZHJhd2luZy4K
LSAgICBkZWxldGUgbV9mcmFtZVRpbWVyOwotICAgIG1fZnJhbWVUaW1lciA9IDA7CisgICAgbV9m
cmFtZVRpbWVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBCaXRtYXBJbWFnZTo6cmVzZXRBbmltYXRp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggYmM5YTYzZmM0ZWU1Nzk0Zjc2Y2JkYTRmZTI5MGY0MzVlYTVhNmFkOS4uZmVjYzdiZmRi
MDYwNTViOGNhMzk5Yzc4NjM4NTJjNzk5ZDNlYzVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0
ZToKICAgICBzaXplX3QgbV9jdXJyZW50RnJhbWU7IC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVu
dCBmcmFtZSBvZiBhbmltYXRpb24uCiAgICAgVmVjdG9yPEZyYW1lRGF0YSwgMT4gbV9mcmFtZXM7
IC8vIEFuIGFycmF5IG9mIHRoZSBjYWNoZWQgZnJhbWVzIG9mIHRoZSBhbmltYXRpb24uIFdlIGhh
dmUgdG8gcmVmIGZyYW1lcyB0byBwaW4gdGhlbSBpbiB0aGUgY2FjaGUuCiAKLSAgICBUaW1lcjxC
aXRtYXBJbWFnZT4qIG1fZnJhbWVUaW1lcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI8Qml0
bWFwSW1hZ2U+PiBtX2ZyYW1lVGltZXI7CiAgICAgaW50IG1fcmVwZXRpdGlvbkNvdW50OyAvLyBI
b3cgbWFueSB0b3RhbCBhbmltYXRpb24gbG9vcHMgd2Ugc2hvdWxkIGRvLiAgVGhpcyB3aWxsIGJl
IGNBbmltYXRpb25Ob25lIGlmIHRoaXMgaW1hZ2UgdHlwZSBpcyBpbmNhcGFibGUgb2YgYW5pbWF0
aW9uLgogICAgIFJlcGV0aXRpb25Db3VudFN0YXR1cyBtX3JlcGV0aXRpb25Db3VudFN0YXR1czsK
ICAgICBpbnQgbV9yZXBldGl0aW9uc0NvbXBsZXRlOyAgLy8gSG93IG1hbnkgcmVwZXRpdGlvbnMg
d2UndmUgZmluaXNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IDFmNTYwMGVlODRjOGE2OTdlOTQwZGI1N2VmYmRjZDQ0NzVjYjI4MjcuLmI1Yzk4NTVmMDk0
YmYyZmRkZGE1ZTEyZGY2MTIwOGY2Y2U0NWI1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3BwCmluZGV4IGQxNjc4
NGNmODNiZDQyMGJiNDFhYzM0YzZhNGEyZTA1NjY4Y2Q0OGYuLjI0YTAyZmI2NTkxNzU2NDg5MzNl
OTk3MDM3MmFkMmRlMTYxYmRiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUJsYWNrQmVycnkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGJvb2wgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQp
CiAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1
ZmZlcik7CiAKQEAgLTY0LDE2ICs2NCwxNiBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIE9wZW5U
eXBlU2FuaXRpemVyIHNhbml0aXplcihidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRyYW5zY29kZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOwogICAgIGlmICghdHJhbnNj
b2RlQnVmZmVyKQotICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAg
ICAgIHJldHVybiBudWxscHRyOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KICAgICBidWZmZXIgPSB0
cmFuc2NvZGVCdWZmZXIuZ2V0KCk7CiAjZW5kaWYKIAogICAgIEZJTEVDSEFSIG5hbWVbTUFYX0ZP
TlRfTkFNRV9MRU4rMV07CiAgICAgbWVtc2V0KG5hbWUsIDAsIE1BWF9GT05UX05BTUVfTEVOKzEp
OwogICAgIGlmIChGU19sb2FkX2ZvbnQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpn
ZXRJVHlwZSgpLCAwLCBjb25zdF9jYXN0PEZTX0JZVEUqPihyZWludGVycHJldF9jYXN0PGNvbnN0
IEZTX0JZVEUqPihidWZmZXItPmRhdGEoKSkpLCAwLCBNQVhfRk9OVF9OQU1FX0xFTiwgbmFtZSkg
IT0gU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKG5hbWUsIGJ1ZmZlcik7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4obmFtZSwg
YnVmZmVyKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCAwMGEwM2RlMTgzNTRl
YzBlMDE2NTY5NmNiOWM2OTViOGJhZjQ2OTRhLi44ZTU2MjdmZTZjNjkyNmRhNDM4NzU0MGU3NjU3
NDYxNWRjMTBmM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwxMiArNDAsMTAg
QEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBu
YXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9zaXplKGNhaXJvU3VyZmFjZVNpemUobmF0aXZlSW1hZ2UuZ2V0KCkpKQogICAgICwgbV9jdXJy
ZW50RnJhbWUoMCkKLSAgICAsIG1fZnJhbWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKICAg
ICAsIG1fcmVwZXRpdGlvbkNvdW50KGNBbmltYXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9u
Q291bnRTdGF0dXMoVW5rbm93bikKICAgICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQotICAg
ICwgbV9kZWNvZGVkU2l6ZSgwKQorICAgICwgbV9kZWNvZGVkU2l6ZShtX3NpemUud2lkdGgoKSAq
IG1fc2l6ZS5oZWlnaHQoKSAqIDQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMSkKICAgICAsIG1faXNT
b2xpZENvbG9yKGZhbHNlKQogICAgICwgbV9jaGVja2VkRm9yU29saWRDb2xvcihmYWxzZSkKQEAg
LTU0LDEyICs1MywxMSBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgICwgbV9zaXplQXZh
aWxhYmxlKHRydWUpCiAgICAgLCBtX2hhdmVGcmFtZUNvdW50KHRydWUpCiB7Ci0gICAgbV9kZWNv
ZGVkU2l6ZSA9IG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogNDsKLQogICAgIG1f
ZnJhbWVzLmdyb3coMSk7CiAgICAgbV9mcmFtZXNbMF0ubV9oYXNBbHBoYSA9IGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQobmF0aXZlSW1hZ2UuZ2V0KCkpICE9IENBSVJPX0NPTlRFTlRfQ09MT1I7
CiAgICAgbV9mcmFtZXNbMF0ubV9mcmFtZSA9IG5hdGl2ZUltYWdlOwogICAgIG1fZnJhbWVzWzBd
Lm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsKKwogICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNTgwNzEwMjY4NzZkYTQ5Zjc5MWU5
NzM5ZjdkNzdjNzUyY2Q0YWMxMy4uZjdhMDU1YTVjOGM1MzUyMjcwNGNmNWU1NTZjNmFlNjk3NjI4
OTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDksNyArNDksNyBAQCBw
cml2YXRlOgogICAgIGNhaXJvX2ZvbnRfZmFjZV90KiBtX2ZvbnRGYWNlOwogfTsKIAotRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
CmluZGV4IDZjNjljZTA4ODc4YTVlMDc5NGNiNTJiYjc1MDliM2RjY2MwODRiYTkuLjkyY2NmZGEz
YTYwMzMyNTRlMDk4Y2JmZDgwMDIwNGQ4YWJlMDMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC02Nyw3ICs2
Nyw2IEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2N1cnJl
bnRGcmFtZSgwKQogICAgICwgbV9mcmFtZXMoMCkKLSAgICAsIG1fZnJhbWVUaW1lcigwKQogICAg
ICwgbV9yZXBldGl0aW9uQ291bnQoY0FuaW1hdGlvbk5vbmUpCiAgICAgLCBtX3JlcGV0aXRpb25D
b3VudFN0YXR1cyhVbmtub3duKQogICAgICwgbV9yZXBldGl0aW9uc0NvbXBsZXRlKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA4
NDFjOGEzYWRmZmY4OGJlMzIzZDNkZDYzYTZmYjY1ZWNmMjRkNjFlLi5lMTM5YWE1NjZkODA1OTIx
YTA2ZTVhYjkzMWQwZWQ4NmUzNmVhZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRm9udFBsYXRmb3Jt
RGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBi
b29sIGJvbGQsIGIKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX2ZvbnRGYWNlLCBzaXpl
LCBib2xkLCBpdGFsaWMpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
QEAgLTcyLDIyICs3MiwyMiBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIGlmIChpc1dPRkYoYnVm
ZmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsKICAgICAgICAgaWYgKCFjb252ZXJ0
V09GRlRvU2ZudChidWZmZXIsIHNmbnQpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZm50QnVmZmVyID0gU2hhcmVkQnVmZmVy
OjphZG9wdFZlY3RvcihzZm50KTsKICAgICAgICAgYnVmZmVyID0gc2ZudEJ1ZmZlci5nZXQoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5ID0gMDsKKyAgICBzdGF0aWMg
RlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiBGVF9Jbml0X0ZyZWVUeXBl
KCZsaWJyYXJ5KSkgewotICAgICAgICBsaWJyYXJ5ID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIGxpYnJhcnkgPSBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZTsKICAgICBpZiAoRlRfTmV3X01lbW9yeV9GYWNl
KGxpYnJhcnksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRlRfQnl0ZSo+KGJ1ZmZlci0+ZGF0YSgp
KSwgYnVmZmVyLT5zaXplKCksIDAsICZmcmVlVHlwZUZhY2UpKQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZnJlZVR5cGVGYWNlLCBidWZm
ZXIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmcmVlVHlwZUZhY2UsIGJ1ZmZlcik7CiB9CiAKIGJv
b2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBm
b3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggZDU2MjExODJhODAwOWIw
MDc2ZWZhYTVlM2RjNjFjMWY5ZGNmNmMzMi4uN2IxZjg5OGJiMTcxMjRjMzhhODQzMzRkNDRhNzk4
ZTVjZmJiZTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMzEsMTUgKzMx
LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6fkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoKQogewotICAgIENHRm9udFJlbGVhc2UobV9jZ0ZvbnQpOwog
fQogCiBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9y
bURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIEZvbnRPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQsIEZvbnRSZW5kZXJpbmdN
b2RlKQogewotICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKG1fY2dGb250LCBzaXplLCBib2xk
LCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQpOworICAgIHJldHVybiBGb250UGxh
dGZvcm1EYXRhKG1fY2dGb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9u
LCB3aWR0aFZhcmlhbnQpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
QEAgLTQ3LDE0ICs0NiwxNCBAQCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgIE9wZW5UeXBlU2FuaXRp
emVyIHNhbml0aXplcihidWZmZXIpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyYW5zY29k
ZUJ1ZmZlciA9IHNhbml0aXplci5zYW5pdGl6ZSgpOwogICAgIGlmICghdHJhbnNjb2RlQnVmZmVy
KQotICAgICAgICByZXR1cm4gMDsgLy8gdmFsaWRhdGlvbiBmYWlsZWQuCisgICAgICAgIHJldHVy
biBudWxscHRyOyAvLyB2YWxpZGF0aW9uIGZhaWxlZC4KICAgICBidWZmZXIgPSB0cmFuc2NvZGVC
dWZmZXIuZ2V0KCk7CiAjZWxzZQogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNmbnRCdWZmZXI7
CiAgICAgaWYgKGlzV09GRihidWZmZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBzZm50Owog
ICAgICAgICBpZiAoIWNvbnZlcnRXT0ZGVG9TZm50KGJ1ZmZlciwgc2ZudCkpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHNmbnRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmFkb3B0VmVjdG9yKHNmbnQpOwogICAgICAgICBidWZmZXIg
PSBzZm50QnVmZmVyLmdldCgpOwpAQCAtNjgsMTAgKzY3LDkgQEAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
IAogICAgIFJldGFpblB0cjxDR0ZvbnRSZWY+IGNnRm9udFJlZiA9IGFkb3B0Q0YoQ0dGb250Q3Jl
YXRlV2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9u
dFJlZikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IG5ldyBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnRhaW5lclJlZiwgY2dGb250UmVmLmxlYWtSZWYoKSk7Ci0g
ICAgcmV0dXJuIGZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oY29udGFpbmVyUmVmLCBjZ0ZvbnRSZWYuZ2V0
KCkpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNv
bnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggYzdhZTFj
YTFmNDBlNzFhYTk3MGM4ZjNlZmJiYzEwMTEyYTc0YzlkOC4uYzg3Y2NkODk5MGI1OWY2YjFhNmIz
Njk3YmE2NGEzZGZkMTM2M2JhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogdHlw
ZWRlZiBVSW50MzIgQVRTRm9udENvbnRhaW5lclJlZjsKQEAgLTUzLDEwICs1NCwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CiAKICAg
ICBBVFNGb250Q29udGFpbmVyUmVmIG1fYXRzQ29udGFpbmVyOwotICAgIENHRm9udFJlZiBtX2Nn
Rm9udDsKKyAgICBSZXRhaW5QdHI8Q0dGb250UmVmPiBtX2NnRm9udDsKIH07CiAKLUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
Kik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKaW5kZXggMmU1NDEyNDFiMTBlOTEwYzMwNTQxYzVkNzQxZjU4NTZiNDEwNjU1
OC4uNDk3NTY0OGUzNWQ2MzA2N2NlMTU1YjFlNzU4OTBjODZjYjA1ZDJkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRf
QVJHKGJ1ZmZlciwgYnVmZmVyKTsKIApAQCAtODksNyArODksNyBAQCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogICAgIGlmIChpc1dPRkYoYnVmZmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsK
ICAgICAgICAgaWYgKCFjb252ZXJ0V09GRlRvU2ZudChidWZmZXIsIHNmbnQpKQotICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZm50
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihzZm50KTsKICAgICAgICAgYnVmZmVy
ID0gc2ZudEJ1ZmZlci5nZXQoKTsKQEAgLTk5LDggKzk5LDggQEAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
ICAgICBIQU5ETEUgZm9udFJlZmVyZW5jZTsKICAgICBmb250UmVmZXJlbmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwogICAgIGlmICghZm9udFJlZmVyZW5jZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVy
ZW5jZSwgZm9udE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBv
cnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggMTg4OTUxYmM4MTUxOTMxMzk3YmIxZGRkZTM5NWNmZTVmYjUxYTY0MC4uMjI4MDk0OTA4
ODMzMWE1ODRkZjlhNGRkYmFmOTc5Yzc0NjUxNGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciopOwogCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjFhODIyNTBkYTA2MzQwYjAxY2U0
OGUxMjBlYWFjMmYwZjhkYjU5My4uN2ZjNTVmYTQwNjZjMWNlNDZlOGY3NzU3MWY5Zjk0Y2Y4MGY4
ZjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJu
IGZvbnROYW1lOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAKQEAgLTg4
LDkgKzg4LDkgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBIQU5ETEUgZm9udFJlZmVyZW5jZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKIAogICAgIGlmICghZm9u
dFJlZmVyZW5jZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIG5ldyBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRSZWZlcmVuY2UsIGZv
bnROYW1lKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPihmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGUxZTVhZmE4NTZlZDNjYzlkY2FhZmFmZTY3NWEw
Nzc4NDExZWZlN2MuLjljODliM2M5MDAwY2ZlOWI0ZTUxMjNiN2U2OTg3OTk3NGIxZGZkNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC03MCwxNSArNzAsMTUgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lLnJl
cGxhY2UoJy8nLCAnXycpOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKGdfY3VzdG9tRm9udENh
Y2hlKSB7CiAgICAgICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvY2FsQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgaWYgKHJl
bmFtZUZvbnQobG9jYWxCdWZmZXIuZ2V0KCksIGZvbnROYW1lKSAmJiBnX2N1c3RvbUZvbnRDYWNo
ZS0+cmVnaXN0ZXJGb250KGZvbnROYW1lLCBsb2NhbEJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udE5hbWUpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udE5h
bWUpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9v
bCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZv
cm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBhM2E4YTI5NjJmM2YyNmMx
NjQ3ODZlMDY1MjM1ZDcwOTk3ODk4MzM2Li44NGQ1ZDczNWU0MTM4MDcxNDNhZWIyYzc3MjczNTVh
NTA0MGQ5ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC01Niw3ICs1Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICB9Owog
Ci0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShjb25zdCBTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXIqKTsKICAgICB2b2lkIHNldEN1c3RvbUZvbnRDYWNoZShDdXN0b21Gb250Q2FjaGUqKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggZWU3NzcyNjNlZDQxM2RlODZhODQ3MTY4ZTZhYzFmM2NhYzgz
YTcyMC4uNTZhMGE1OTc1MThhN2Q2YTk2YzI0MDk4NmI1ZGM4NmFlNWU3MzkxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiBjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllckJhc2UgPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSA9IFN0cmluZygpKTsKIAogICAgIHN0YXRpYyB2b2lk
IHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAtNTUsMTAgKzU1LDEyIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbihSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4pOwog
ICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNo
b3VsZCBiZSB1c2VkLgogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzaW9u
KCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCk7IH0KICAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSgpIGNvbnN0OwogI2VsaWYgVVNFKFNP
VVApCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKik7CiAgICAgdm9pZCBz
ZXRTb3VwU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lvbikgeyBtX3Nlc3Npb24gPSBzZXNzaW9u
OyB9CiAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNz
aW9uLmdldCgpOyB9CiAjZWxzZQpAQCAtNjksMTEgKzcxLDkgQEAgcHVibGljOgogCiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+KTsKICAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9wbGF0Zm9ybVNlc3Npb247CiAjZWxpZiBVU0UoU09VUCkKLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU291cFNlc3Npb24qKTsKICAgICBHUmVmUHRyPFNvdXBTZXNzaW9uPiBtX3Nlc3Npb247
CiAjZWxzZQogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBlZjU5NDdkZThmMTNmZDAwNzI5Njc4NWNm
MjdkY2JiODIwNTRjOGQ0Li5hMTNmMzE2NWFjODZkOWIxZjkwYzhiN2I0YjhmMTc2MzcwOTBlNTlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtODksMTggKzg5LDE4IEBA
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKQogICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
OwogfQogCi1QYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllckJhc2UpCitzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyQmFzZSkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllciA9IFN0cmluZyhpZGVudGlmaWVyQmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRl
Q0ZTdHJpbmcoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBzZXNzaW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihh
ZG9wdENGKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSkp
KSk7CisgICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+KGFkb3B0Q0Yod2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOwogI2Vsc2UKLSAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihhZG9wdENGKHdrQ3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSwgZGVmYXVsdE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKSkpKSk7CisgICAgYXV0byBzZXNzaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KGFkb3B0Q0Yod2tDcmVh
dGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOwogI2VuZGlmCiAgICAgc2Vz
c2lvbi0+bV9pc1ByaXZhdGUgPSB0cnVlOwogCi0gICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgp
OworICAgIHJldHVybiBzZXNzaW9uOwogfQogCiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCA3NTAxNTY5ZTRkN2QzZWVkYzVmMzM4
ZjllODU5NjM1NjY2ZWMyNjY1Li44Yjc3NTI1NGIyZDg4N2E0MzRhMDUzZmRlNjk5NWEzNmUyZjAx
NTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOSw4ICsyOSw3
IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDMzICszOSwzMCBAQCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lvbikKIHsKIH0K
IAotc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigp
CitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHRT
ZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAg
ICBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4g
c2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiB7CiAgICAg
aWYgKCFkZWZhdWx0U2Vzc2lvbigpKQotICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gYWRvcHRQ
dHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Np
b24oKSkpOworICAgICAgICBkZWZhdWx0U2Vzc2lvbigpID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpKTsKICAg
ICByZXR1cm4gKmRlZmF1bHRTZXNzaW9uKCk7CiB9CiAKLVBhc3NPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oY29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihj
b25zdCBTdHJpbmcmKQogewotICAgIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Np
b24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4oUmVzb3VyY2VIYW5kbGU6OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSk7CiAgICAgc2Vzc2lvbi0+bV9pc1ByaXZhdGUgPSB0
cnVlOwotCi0gICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgpOworICAgIHJldHVybiBzZXNzaW9u
OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpCiB7Ci0gICAgLy8gQSBudWxsIHNlc3Npb24gd2lsbCBtYWtlIHVzIGZhbGwgYmFjayB0
byB0aGUgZGVmYXVsdCBjb29raWUgamFyLCB3aGljaCBpcyBjdXJyZW50bHkKLSAgICAvLyB0aGUg
ZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHRlc3RzLgotICAgIGRlZmF1bHRTZXNzaW9uKCkgPSBhZG9w
dFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjcmVhdGVUZXN0
aW5nU2Vzc2lvbigpKSk7CisgICAgZGVmYXVsdFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nlc3Np
b24oKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQppbmRl
eCBlMDM3OGI3Njc5ZDU1ZmJiYzE3ZmM5MDdmM2VkMzU4MWFlNDgzNWJjLi42ZmIzNjJlMWYwZmQz
OGE0MDI5MWM2ZDgxNjU5MzBjNDhlZjgwOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tCkBAIC03NCw3ICs3NCw3IEBAIEBlbmQKIEBpbnRlcmZhY2UgV2ViSGlzdG9y
eVByaXZhdGUgOiBOU09iamVjdCB7CiBAcHJpdmF0ZQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
Kl9lbnRyaWVzQnlVUkw7Ci0gICAgRGF0ZVRvRW50cmllc01hcCogX2VudHJpZXNCeURhdGU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGVUb0VudHJpZXNNYXA+IF9lbnRyaWVzQnlEYXRlOwogICAg
IE5TTXV0YWJsZUFycmF5ICpfb3JkZXJlZExhc3RWaXNpdGVkRGF5czsKICAgICBCT09MIGl0ZW1M
aW1pdFNldDsKICAgICBpbnQgaXRlbUxpbWl0OwpAQCAtMTMyLDcgKzEzMiw3IEBAIC0gKGlkKWlu
aXQKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBfZW50cmllc0J5VVJMID0gW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKLSAgICBfZW50cmllc0J5RGF0ZSA9IG5ldyBE
YXRlVG9FbnRyaWVzTWFwOworICAgIF9lbnRyaWVzQnlEYXRlID0gc3RkOjptYWtlX3VuaXF1ZTxE
YXRlVG9FbnRyaWVzTWFwPigpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0xNDEsMTMgKzE0
MSwxMSBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbX2VudHJpZXNCeVVSTCByZWxlYXNlXTsK
ICAgICBbX29yZGVyZWRMYXN0VmlzaXRlZERheXMgcmVsZWFzZV07Ci0gICAgZGVsZXRlIF9lbnRy
aWVzQnlEYXRlOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZClmaW5hbGl6ZQog
ewotICAgIGRlbGV0ZSBfZW50cmllc0J5RGF0ZTsKICAgICBbc3VwZXIgZmluYWxpemVdOwogfQog
CkBAIC02MzYsNyArNjM0LDcgQEAgLSAoTlNEYXRhICopZGF0YQogICAgIAogICAgIC8vIElnbm9y
ZXMgdGhlIGRhdGUgYW5kIGl0ZW0gY291bnQgbGltaXRzOyB0aGVzZSBhcmUgcmVzcGVjdGVkIHdo
ZW4gbG9hZGluZyBpbnN0ZWFkIG9mIHdoZW4gc2F2aW5nLCBzbwogICAgIC8vIHRoYXQgY2xpZW50
cyBjYW4gbGVhcm4gb2YgZGlzY2FyZGVkIGl0ZW1zIGJ5IGxpc3RlbmluZyB0byBXZWJIaXN0b3J5
SXRlbXNEaXNjYXJkZWRXaGlsZUxvYWRpbmdOb3RpZmljYXRpb24uCi0gICAgV2ViSGlzdG9yeVdy
aXRlciB3cml0ZXIoX2VudHJpZXNCeURhdGUpOworICAgIFdlYkhpc3RvcnlXcml0ZXIgd3JpdGVy
KF9lbnRyaWVzQnlEYXRlLmdldCgpKTsKICAgICB3cml0ZXIud3JpdGVQcm9wZXJ0eUxpc3QoKTsK
ICAgICByZXR1cm4gW1soTlNEYXRhICopd3JpdGVyLnJlbGVhc2VEYXRhKCkuZ2V0KCkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCA0YWQ3N2M2
YjM0ZDQ5YzYyZmQyOWI2NzQzZGRiMDM4NWUzOTc3NTMyLi5hYTk1NzI3YzdjZDE2NWFjY2M3MDc0
ODRkY2RjNmM2ZTUyZDJjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTMyLDI3
ICszMiwzMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0
YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIHByaXZhdGVTZXNzaW9uOworc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+PiBzZXNzaW9uOworICAgIHJldHVybiBzZXNzaW9uOworfQogCiB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24pCisgICAg
aWYgKHByaXZhdGVTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXZhdGVTZXNz
aW9uID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pLmxlYWtQdHIoKTsKKyAg
ICBwcml2YXRlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0p
OwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgZGVs
ZXRlIHByaXZhdGVTZXNzaW9uOwotICAgIHByaXZhdGVTZXNzaW9uID0gMDsKKyAgICBwcml2YXRl
U2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CkBAIC05NCw3ICs5OCw3IEBAIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoZnJhbWUo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAg
ICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbjsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lv
bigpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA2OGY1
OWNmZGQyMGM2OThiOWVjMTEwZWMwZjViMzBhMDdiMzY1ZDZlLi5kMTkyNzc2MjE5NDU3Y2E1ODAx
MzA2ZGFlMzE1MjQ4ZWRkY2U1YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTE2NCwxNSArMTY0LDExIEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIFt3ZWJGcmFt
ZVZpZXcgcmVsZWFzZV07CiAKLSAgICBkZWxldGUgc2NyaXB0RGVidWdnZXI7Ci0KICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAgICBkZWxldGUgc2NyaXB0
RGVidWdnZXI7Ci0KICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCkBAIC0zMjIsMjAgKzMxOCwx
NiBAQCAtICh2b2lkKV9hdHRhY2hTY3JpcHREZWJ1Z2dlcgogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyKSB7Ci0gICAgICAgIEFTU0VSVChfcHJpdmF0
ZS0+c2NyaXB0RGVidWdnZXIgPT0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKTsKKyAgICAgICAg
QVNTRVJUKF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlci5nZXQoKSA9PSBnbG9iYWxPYmplY3QtPmRl
YnVnZ2VyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3ByaXZhdGUtPnNjcmlw
dERlYnVnZ2VyID0gbmV3IFdlYlNjcmlwdERlYnVnZ2VyKGdsb2JhbE9iamVjdCk7CisgICAgX3By
aXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTY3JpcHREZWJ1Z2dl
cj4oZ2xvYmFsT2JqZWN0KTsKIH0KIAogLSAodm9pZClfZGV0YWNoU2NyaXB0RGVidWdnZXIKIHsK
LSAgICBpZiAoIV9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZGVsZXRlIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlcjsKLSAgICBfcHJpdmF0ZS0+c2NyaXB0
RGVidWdnZXIgPSAwOworICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG51bGxwdHI7CiB9
CiAKIC0gKGlkKV9pbml0V2l0aFdlYkZyYW1lVmlldzooV2ViRnJhbWVWaWV3ICopZnYgd2ViVmll
dzooV2ViVmlldyAqKXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVy
bmFsLmgKaW5kZXggYWI4YzVjMjgxODFiNjQ0MDQ4MWMzZWVjYmVjYjYxNjliZThhYzJlOC4uZmNj
YmVhYTFjYWJkZGZmZDczZTQzZDk0M2ZmN2MyZjM4NDI1ZTllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmgKQEAgLTc4LDcgKzc4LDcgQEAgV2ViVmll
dyAqZ2V0V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUpOwogQHB1YmxpYwogICAgIFdlYkNvcmU6
OkZyYW1lKiBjb3JlRnJhbWU7CiAgICAgV2ViRnJhbWVWaWV3ICp3ZWJGcmFtZVZpZXc7Ci0gICAg
V2ViU2NyaXB0RGVidWdnZXIqIHNjcmlwdERlYnVnZ2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJTY3JpcHREZWJ1Z2dlcj4gc2NyaXB0RGVidWdnZXI7CiAgICAgaWQgaW50ZXJuYWxMb2FkRGVs
ZWdhdGU7CiAgICAgQk9PTCBzaG91bGRDcmVhdGVSZW5kZXJlcnM7CiAgICAgQk9PTCBpbmNsdWRl
ZEluV2ViS2l0U3RhdGlzdGljczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggNWVl
NDcwNjNkZTNjYmU2NTE3Mzg3OTAzYzhiMDk4ZmMxYWQ1NDE2MS4uZTAyOWMwM2FjNDlmYzg5MmYy
ZTQ2NWFhMTRmMWVlMDI4MDRlZDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAg
LTQxLDggKzQxLDE3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbjsKLXN0YXRpYyBTdHJpbmcqIGlkZW50
aWZpZXJCYXNlOworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+
JiBwcml2YXRlU2Vzc2lvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOworICAgIHJldHVybiBzZXNz
aW9uOworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKKyAgICByZXR1cm4gYmFzZTsKK30KIAogI2lm
IFVTRShDRk5FVFdPUkspCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tp
ZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xp
Y3kgcG9saWN5KQpAQCAtNTAsOCArNTksOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZQogICAg
IGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFn
ZSgpKQogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNv
b2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24pCi0g
ICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNl
c3Npb24tPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZVNl
c3Npb24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGlj
eShwcml2YXRlU2Vzc2lvbigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAj
ZW5kaWYKIApAQCAtNTksOSArNjgsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoYwogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgaWRlbnRpZmllckJhc2U7Ci0K
LSAgICBpZGVudGlmaWVyQmFzZSA9IG5ldyBTdHJpbmcoYmFzZSk7CisgICAgaWRlbnRpZmllckJh
c2UoKSA9IGJhc2U7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCkBAIC02OSwxOSArNzYsMTggQEAgdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKICNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAocHJp
dmF0ZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBiYXNlOwotICAgIGlmICghaWRlbnRpZmllckJhc2UpIHsKKyAgICBpZiAo
aWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkgewogICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRs
ZVZhbHVlID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0
TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkKICAgICAgICAgICAgIGlmIChD
RkdldFR5cGVJRChidW5kbGVWYWx1ZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKICAgICAgICAg
ICAgICAgICBiYXNlID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlVmFsdWUp
OwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGJhc2UgPSAqaWRlbnRpZmllckJhc2U7CisgICAg
fSBlbHNlCisgICAgICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZVNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oYmFzZSkubGVha1B0cigpOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7CiAjZW5kaWYKIH0K
IApAQCAtODksOCArOTUsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgZGVsZXRlIHByaXZhdGVTZXNzaW9uOwotICAgIHByaXZhdGVTZXNzaW9uID0gMDsK
KyAgICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KSBjb25zdApAQCAtMTA5LDcgKzExNCw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2
YXRlU2Vzc2lvbjsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjFjYzA2NWNhMTExMGM4YmFlMmY2ZTQ1NzQwODZl
MGRjNzZlNjdiOC4uMjRiMjg5ODJjMTkwOTU1NGJlYmY5ZGIxYTBkMTQyMTQwYTIyMDE5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMzAsMTcgKzMwLDE2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+Ci0j
aW1wb3J0IDx3dGYvT3duUHRyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Piwgc2Vzc2lvbiwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsK
IH0KIApAQCAtMTEyLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZSgpKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAwNmFmZWVjZGNhOTdlNThlNTNjOWI0
NGVmNmIwMTA1ZjVmNWE1ODIxLi5kZjM1M2Q4NzdjYzY3Yzg0NjhjNDc3MTQ5NTI3MDYyMTgxMjJk
MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFy
dERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAg
ICBkb3dubG9hZC0+c3RhcnQoKTsKIAogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMo
ZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZElELCBkb3dubG9hZC5y
ZWxlYXNlKCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1vdmUoZG93
bmxvYWQpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25s
b2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9E
b3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsCiAKICAgICBkb3dubG9h
ZC0+c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9uc2UpOwogICAgIEFTU0VSVCghbV9kb3du
bG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9h
ZElELCBkb3dubG9hZC5yZWxlYXNlKCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElE
LCBzdGQ6Om1vdmUoZG93bmxvYWQpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNl
bERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCkBAIC02OSw4ICs2OSw2IEBAIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkKIHsKICAg
ICBBU1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWQtPmRvd25sb2FkSUQoKSkpOwog
ICAgIG1fZG93bmxvYWRzLnJlbW92ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKLQotICAgIGRl
bGV0ZSBkb3dubG9hZDsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRpZENyZWF0ZURvd25s
b2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCmluZGV4IGNhN2VlOGEyMTM4MTliM2EyZGFkNWU0ZmJlYmRkNTExYmFlOGJiMmQuLmU1
ZmZmZmE5NDZmOGU1Nzg4NzgzMjkzYjM4ODdkMGIxNjY1OTMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBEb3dubG9hZCo+IG1fZG93bmxvYWRzOworICAgIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaApp
bmRleCAxMDNiYWRlNGZlOGZiN2E4NmRiOGMwMWYwOGMxNTg0NTJmYjQ0YmE5Li4yZDk2YzI3Nzcz
NGZjNjlkMWY3NWQ2Yzk4YzQyYWJlMzUyYzYzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgIAogICAg
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCi0gICAgICAgIEhhbmRs
ZSogbV9kYXRhOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFuZGxlW10+IG1fZGF0YTsKICAg
ICAgICAgc2l6ZV90IG1fc2l6ZTsKICNlbHNlCiAgICAgICAgIEhhbmRsZSBtX2VtcHR5SGFuZGxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1t
CmluZGV4IDMzZDQwMDA5NDc2OTE1Y2NlZjI2ZjczODAyNDcyYzkzZWRlOWU2ZWYuLjUzZDk2Yjgz
MTljNzE3ZThjNGYxMjBlNDFkZGVhYmE5NjliNWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTg3LDE1ICs4NywxMiBAQCBi
b29sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJgogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6SGFuZGxlQXJyYXkoKQotICAgIDogbV9kYXRhKDApCi0gICAgLCBtX3NpemUoMCkKKyAgICA6
IG1fc2l6ZSgwKQogewogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRs
ZUFycmF5KCkKIHsKLSAgICBpZiAobV9kYXRhKQotICAgICAgICBkZWxldGVbXSBtX2RhdGE7CiB9
CiAKIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFsbG9jYXRlKHNpemVfdCBz
aXplKQpAQCAtMTA1LDcgKzEwMiw3IEBAIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogCiAgICAgQVNTRVJUKCFtX2RhdGEpOwogCi0gICAg
bV9kYXRhID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXplXTsKKyAgICBtX2RhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsKICAg
ICBtX3NpemUgPSBzaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQppbmRleCAwY2Y2ODAwNzYwMDg0Y2ZmYjJiZDY3OWM3NTI0YTA5ODU0ZDc4
ZTQwLi5mODA4NjdjNDBkN2ZkOTRjMTRkYmJmZjQyMmNjZDVhZGFkNTJhMTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTM0LDQ1ICszNCw1
MiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2
YXRlU2Vzc2lvbjsKLXN0YXRpYyBTdHJpbmcqIGlkZW50aWZpZXJCYXNlOworc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+PiBzZXNzaW9uOworICAgIHJldHVybiBzZXNzaW9uOworfQorCitzdGF0aWMgU3RyaW5n
JiBpZGVudGlmaWVyQmFzZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
YmFzZTsKKyAgICByZXR1cm4gYmFzZTsKK30KICAgICAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
b25zdCBTdHJpbmcmIGJhc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGRlbGV0ZSBpZGVudGlmaWVyQmFzZTsKLQotICAgIGlkZW50aWZpZXJCYXNlID0gbmV3IFN0cmlu
ZyhiYXNlKTsKKyAgICBpZGVudGlmaWVyQmFzZSgpID0gYmFzZTsKIH0KIAogdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKQorICAg
IGlmIChwcml2YXRlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFz
ZTsKLSAgICBpZiAoIWlkZW50aWZpZXJCYXNlKQorICAgIGlmIChpZGVudGlmaWVyQmFzZSgpLmlz
TnVsbCgpKQogICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVu
dGlmaWVyXTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UgPSAqaWRlbnRpZmllckJhc2U7CisgICAg
ICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZVNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSkubGVh
a1B0cigpOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNy
ZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgcHJpdmF0ZVNlc3Npb247Ci0gICAg
cHJpdmF0ZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOwogfQog
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZv
ckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtODIsOCArODks
OCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGlj
eUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBYwogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlm
IChwcml2YXRlU2Vzc2lvbikKLSAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBy
aXZhdGVTZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgaWYgKHBy
aXZhdGVTZXNzaW9uKCkpCisgICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwcml2
YXRlU2Vzc2lvbigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAgICAgCiBi
b29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkg
Y29uc3QKQEAgLTExOCw3ICsxMjUsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247
CisgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214045</attachid>
            <date>2013-10-11 20:03:01 -0700</date>
            <delta_ts>2013-10-12 07:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122639-20131011200300.patch</filename>
            <type>text/plain</type>
            <size>58448</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA5MjA0ZDFiNmYzMmY0
NTJjMzhkMmZiYzU4NGY2ZjEzNmQ4NGJhMy4uZGFkNDRmMzk4YjQzMTgyM2E1NWM4OWM0ZWE2Y2Y4
YzBkZWQ3Yzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEzLTEwLTExICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5pcXVlX3B0ciBpbnN0
ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRUb0RhdGFiYXNlTWFwKTogVXNlIE5l
dmVyRGVzdHJveWVkIGluc3RlYWQgb2YgREVGSU5FX1NUQVRJQ19MT0NBTC4KKyAgICAgICAgKFdl
YkNvcmU6Omd1aWRGb3JPcmlnaW5BbmROYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUJhY2tlbmRCYXNlOjpEYXRhYmFzZUJhY2tlbmRCYXNlKTogUmVtb3ZlZCB1bm5lZWRl
ZCBpbml0aWFsaXphdGlvbgorICAgICAgICBvZiBtX2d1aWQsIHdoaWNoIGlzIHNldCBpbiB0aGUg
Ym9keSBvZiB0aGUgY29uc3RydWN0b3IgZXhwbGljaXRseSBhbnl3YXkuIFVzZSBlbXB0eVN0cmlu
Zy4KKyAgICAgICAgVXNlIHVuaXF1ZV9wdHIgZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIG1hcC4gVXNl
IHRoZSBhZGQgaWRpb20gaW5zdGVhZCBvZiB0aGUgZ2V0L3NldCBpZGlvbS4KKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlQmFja2VuZEJhc2U6OmNsb3NlRGF0YWJhc2UpOiBVc2UgdGhlIGZpbmQv
cmVtb3ZlIGlkaW9tIGluc3RlYWQgb2YgdGhlCisgICAgICAgIGdldC9yZW1vdmUgaWRpb20uCisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmRCYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlm
eSk6IFVzZSBhdXRvIGhlcmUgdG8gYXZvaWQgaGF2aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbWFw
IHR5cGUgYnkgbmFtZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OkNhY2hlZEZvbnQpOiBEb24ndCBpbml0aWFs
aXplIG1fZm9udERhdGEgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCk6IERvbid0IGRlbGV0ZSBtX2ZvbnREYXRh
LiB1bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKTogQWRkIGEgZ2V0LgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6YWxsQ2xpZW50c1JlbW92ZWQpOiBEb24ndCBkZWxldGUgbV9mb250RGF0YS4gVXNl
IG51bGxwdHIgaW5zdGVhZCBvZiAwLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
Lmg6IENoYW5nZWQgbV9mb250RGF0YSB0byBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJ
bWFnZTo6Qml0bWFwSW1hZ2UpOiBEb24ndCBpbml0aWFsaXplIG1fZnJhbWVUaW1lciB0byAwOyB1
bmlxdWVfcHRyIHdpbGwgZG8gdGhhdC4KKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpz
dGFydEFuaW1hdGlvbik6IFVzZSBtYWtlX3VuaXF1ZSB0byBjcmVhdGUgdGhlIHRpbWVyLgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OnN0b3BBbmltYXRpb24pOiBEb24ndCBkZWxldGUg
bV9mcmFtZVRpbWVyLiBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogQ2hhbmdlZCBtX0ZyYW1lVGltZXIgdG8gYSB1bmlx
dWVfcHRyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKTogRG9uJ3QgaW5p
dGlhbGl6ZSBtX2ZyYW1lVGltZXIgdG8gMDsgdW5pcXVlX3B0ciB3aWxsIGRvIHRoYXQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IERvbid0IGNhbGwgQ0dGb250UmVsZWFzZSBvbiBtX2NnRm9udC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEpOiBV
c2UgZ2V0IG9uIG1fY2dGb250LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6IFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCwgYW5kIG1ha2VfdW5pcXVlIGlu
c3RlYWQgb2YgbmV3LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmg6IENobmFnZWQgbV9jZ0ZvbnQgdG8gYmUgYSBSZXRhaW5QdHIsIGFuZCB0
aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlIGZyb20gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSB0byBiZSBhIHVuaXF1ZV9wdHIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgIFNhbWUgdGhpbmcg
b24gYWxsIHRoZSBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOiBDaGFuZ2VkIHJldHVybiB2YWx1ZSBvZiBjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uCisgICAgICAgIHRvIGEgdW5pcXVlX3B0ciwgYW5kIG1hZGUg
Y29uc3RydWN0b3JzIHB1YmxpYy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIG1ha2VfdW5p
cXVlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbik6CisgICAgICAgIFNhbWUgdGhpbmcgb24gYWxs
IHRoZSBvdGhlciBwbGF0Zm9ybXMuCisKIDIwMTMtMTAtMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRHJhbWF0aWNhbGx5IHNpbXBsaWZ5IGNhbGN1bGF0ZUFk
anVzdGVkTm9kZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBmYTgxN2JhYjI4NmE2MTJjNzQ4NDUxZDc1
ODEzYjI3ZmE3NzA3MmMzLi45YTYxZDlhODAxNDY4M2E0ZTNjOGZmOTljZjQ0YjhiZGM3NDM3ZWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMTAtMTEgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSB1bmlxdWVfcHRyIGluc3RlYWQg
b2YgZGVsZXRlIGluIGEgZmV3IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNjM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAgICAgICgtW1dl
Ykhpc3RvcnlQcml2YXRlIGluaXRdKTogVXNlIG1ha2VfdW5pcXVlLgorICAgICAgICAoLVtXZWJI
aXN0b3J5UHJpdmF0ZSBkZWFsbG9jXSk6IERvbid0IGRlbGV0ZS4KKyAgICAgICAgKC1bV2ViSGlz
dG9yeVByaXZhdGUgZmluYWxpemVdKTogRG9uJ3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJIaXN0
b3J5UHJpdmF0ZSBkYXRhXSk6IFVzZSBnZXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAocHJpdmF0ZVNlc3Npb24pOiBV
c2UgTmV2ZXJEZXN0cm95ZWQgaGVyZSBpbnN0ZWFkIG9mIGEgcmF3IHBvaW50ZXIuCisgICAgICAg
IChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KTogVXNlIHRoZQorICAgICAgICBuZXcgZnVuY3Rpb24gaW5zdGVhZCBvZiBkaXJlY3QgZ2xvYmFs
IHZhcmlhYmxlIGFjY2Vzcy4KKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6IERpdHRvLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWVQcml2YXRlIGRlYWxsb2NdKTog
RG9uJ3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJGcmFtZVByaXZhdGUgZmluYWxpemVdKTogRG9u
J3QgZGVsZXRlLgorICAgICAgICAoLVtXZWJGcmFtZSBfYXR0YWNoU2NyaXB0RGVidWdnZXJdKTog
VXNlIG1ha2VfdW5pcXVlLgorICAgICAgICAoLVtXZWJGcmFtZSBfZGV0YWNoU2NyaXB0RGVidWdn
ZXJdKTogRG9uJ3QgZGVsZXRlLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5o
OiBVc2UgdW5pcXVlX3B0ci4KKwogMjAxMy0xMC0xMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHByZWZlcmVuY2Ugc3VwcG9ydCBmb3IgcGlj
a2luZyB0aGUgb2xkIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjEwYmFjMmI3
ZWVlMjVkYjU4YjFmOWY3MWEyM2Q1YTdiMTVmZmEyYy4uMjk3ZjlhMWM3OGZiYjViYWFhNzJjNDRh
ZjNiNDRmMGQyYzM4OTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEz
LTEwLTExICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgdW5p
cXVlX3B0ciBpbnN0ZWFkIG9mIGRlbGV0ZSBpbiBhIGZldyBwbGFjZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjYzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChwcml2YXRlU2Vzc2lvbik6CisgICAg
ICAgIChpZGVudGlmaWVyQmFzZSk6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyk6CisgICAgICAgIChXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24pOgorICAgICAgICAoV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorCiAyMDEzLTEwLTEwICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDNkNmRmYWZjOTE3ZDM0ZmZlZmU3NzU4YTc5ODAwNTgzYjFhYzc2NzUuLmViYTI2Yjdk
ZDFhMDIyYWM3NjA2YWNjM2Y0MmQzN2FjZjg4MzkxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NyBAQAorMjAxMy0xMC0xMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIHVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBkZWxldGUgaW4gYSBmZXcgcGxhY2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI2MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6cHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOiBVc2UgTmV2ZXJEZXN0cm95ZWQgYW5kIHVuaXF1
ZV9wdHIuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKTogVXNlIHN0ZDo6bW92ZS4KKworICAgICAgICAqIFNoYXJl
ZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKTogVXNlIHN0ZDo6bW92ZS4gQWxzbyBhZGQgaW5zdGVh
ZCBvZiBzZXQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29udmVydEhhbmRs
ZVRvRG93bmxvYWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpk
b3dubG9hZEZpbmlzaGVkKTogRG9uJ3QgZGVsZXRlLgorCisgICAgICAgICogU2hhcmVkL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDogQ2hhbmdlZCBtX2Rvd25sb2FkcyB0byBob2xkIHVuaXF1
ZV9wdHIgaW5zdGVhZAorICAgICAgICBvZiByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgKiBTaGFy
ZWQvU2FuZGJveEV4dGVuc2lvbi5oOiBVc2Ugc3RkOjp1bmlxdWVfcHRyIGZvciBtX2RhdGEuCisK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpIYW5kbGVBcnJheSk6IERvbid0
IGluaXRpYWxpemUgbV9kYXRhIHRvIDAuCisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5Ojp+SGFuZGxlQXJyYXkpOiBEb24ndCBkZWxldGUgbV9kYXRhLgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOiBV
c2UgbWFrZV91bmlxdWUgdG8gYWxsb2NhdGUgbV9kYXRhLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAg
ICAgKFdlYktpdDo6cHJpdmF0ZVNlc3Npb24pOiBVc2UgTmV2ZXJEZXN0cm95ZWQgYW5kIHVuaXF1
ZV9wdHIuCisgICAgICAgIChXZWJLaXQ6OmlkZW50aWZpZXJCYXNlKTogVXNlIE5ldmVyRGVzdHJv
eWVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKToKKyAgICAgICAgVXBkYXRl
ZCB0byB1c2UgdGhlIGFib3ZlLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKTogRGl0
dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVTZXNzaW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNsaWVudCk6Cisg
ICAgICAgIE1vcmUgb2YgdGhlIHNhbWUuCisKIDIwMTMtMTAtMTEgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBwcmVmZXJlbmNlIHN1cHBvcnQg
Zm9yIHBpY2tpbmcgdGhlIG9sZCBXZWIgSW5zcGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQmFzZS5jcHAKaW5k
ZXggYjVhYmUxMDFjYzViY2NjNjE5MDFmNGE2NjYyMTkyNDdlZWEzYThjZC4uNWE5ZjcxZTFiYTk4
NWVjNWZmYzk0YzJmZjQwMjk0NWJjYWYxMDMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZEJhc2UuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMTY3LDEyICsxNjgs
MTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKERhdGFiYXNlR3Vp
ZCBndWlkLCBTdHJpbmcgbmV3VmVyc2lvbikKICAgICBndWlkVG9WZXJzaW9uTWFwKCkuc2V0KGd1
aWQsIG5ld1ZlcnNpb24uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBuZXdWZXJzaW9uLmlzb2xhdGVk
Q29weSgpKTsKIH0KIAotdHlwZWRlZiBIYXNoTWFwPERhdGFiYXNlR3VpZCwgSGFzaFNldDxEYXRh
YmFzZUJhY2tlbmRCYXNlKj4qPiBHdWlkRGF0YWJhc2VNYXA7Cit0eXBlZGVmIEhhc2hNYXA8RGF0
YWJhc2VHdWlkLCBzdGQ6OnVuaXF1ZV9wdHI8SGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4+
PiBHdWlkRGF0YWJhc2VNYXA7CisKIHN0YXRpYyBHdWlkRGF0YWJhc2VNYXAmIGd1aWRUb0RhdGFi
YXNlTWFwKCkKIHsKICAgICAvLyBFbnN1cmUgdGhlIHRoZSBtdXRleCBpcyBsb2NrZWQuCiAgICAg
QVNTRVJUKCFndWlkTXV0ZXgoKS50cnlMb2NrKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
R3VpZERhdGFiYXNlTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8R3Vp
ZERhdGFiYXNlTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApAQCAtMTg0LDEyICsxODYs
MTIgQEAgc3RhdGljIERhdGFiYXNlR3VpZCBndWlkRm9yT3JpZ2luQW5kTmFtZShjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW0KICAgICBTdHJpbmcgc3RyaW5nSUQgPSBvcmln
aW4gKyAiLyIgKyBuYW1lOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBJREd1
aWRNYXA7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChJREd1aWRNYXAsIHN0cmluZ0lkZW50aWZp
ZXJUb0dVSURNYXAsICgpKTsKLSAgICBEYXRhYmFzZUd1aWQgZ3VpZCA9IHN0cmluZ0lkZW50aWZp
ZXJUb0dVSURNYXAuZ2V0KHN0cmluZ0lEKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxTdHJpbmcsIGludD4+IG1hcDsKKyAgICBEYXRhYmFzZUd1aWQgZ3VpZCA9IG1hcC5nZXQo
KS5nZXQoc3RyaW5nSUQpOwogICAgIGlmICghZ3VpZCkgewogICAgICAgICBzdGF0aWMgaW50IGN1
cnJlbnROZXdHVUlEID0gMTsKICAgICAgICAgZ3VpZCA9IGN1cnJlbnROZXdHVUlEKys7Ci0gICAg
ICAgIHN0cmluZ0lkZW50aWZpZXJUb0dVSURNYXAuc2V0KHN0cmluZ0lELCBndWlkKTsKKyAgICAg
ICAgbWFwLmdldCgpLnNldChzdHJpbmdJRCwgZ3VpZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGd1
aWQ7CkBAIC0yMTUsNyArMjE3LDYgQEAgRGF0YWJhc2VCYWNrZW5kQmFzZTo6RGF0YWJhc2VCYWNr
ZW5kQmFzZShQYXNzUmVmUHRyPERhdGFiYXNlQmFja2VuZENvbnRleHQ+IGRhdGEKICAgICAsIG1f
ZXhwZWN0ZWRWZXJzaW9uKGV4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKSkKICAgICAsIG1f
ZGlzcGxheU5hbWUoZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX2VzdGltYXRl
ZFNpemUoZXN0aW1hdGVkU2l6ZSkKLSAgICAsIG1fZ3VpZCgwKQogICAgICwgbV9vcGVuZWQoZmFs
c2UpCiAgICAgLCBtX25ldyhmYWxzZSkKICAgICAsIG1faXNTeW5jRGF0YWJhc2UoZGF0YWJhc2VU
eXBlID09IERhdGFiYXNlVHlwZTo6U3luYykKQEAgLTIyNSwxNyArMjI2LDE0IEBAIERhdGFiYXNl
QmFja2VuZEJhc2U6OkRhdGFiYXNlQmFja2VuZEJhc2UoUGFzc1JlZlB0cjxEYXRhYmFzZUJhY2tl
bmRDb250ZXh0PiBkYXRhCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXIgPSBEYXRhYmFzZUF1dGhv
cml6ZXI6OmNyZWF0ZShpbmZvVGFibGVOYW1lKTsKIAogICAgIGlmIChtX25hbWUuaXNOdWxsKCkp
Ci0gICAgICAgIG1fbmFtZSA9ICIiOworICAgICAgICBtX25hbWUgPSBlbXB0eVN0cmluZygpOwog
CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwogICAgICAg
ICBtX2d1aWQgPSBndWlkRm9yT3JpZ2luQW5kTmFtZShzZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpLCBuYW1lKTsKLSAgICAgICAgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4qIGhhc2hT
ZXQgPSBndWlkVG9EYXRhYmFzZU1hcCgpLmdldChtX2d1aWQpOwotICAgICAgICBpZiAoIWhhc2hT
ZXQpIHsKLSAgICAgICAgICAgIGhhc2hTZXQgPSBuZXcgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRC
YXNlKj47Ci0gICAgICAgICAgICBndWlkVG9EYXRhYmFzZU1hcCgpLnNldChtX2d1aWQsIGhhc2hT
ZXQpOwotICAgICAgICB9Ci0KKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8RGF0YWJh
c2VCYWNrZW5kQmFzZSo+PiYgaGFzaFNldCA9IGd1aWRUb0RhdGFiYXNlTWFwKCkuYWRkKG1fZ3Vp
ZCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBpZiAoIWhhc2hTZXQpCisgICAg
ICAgICAgICBoYXNoU2V0ID0gc3RkOjptYWtlX3VuaXF1ZTxIYXNoU2V0PERhdGFiYXNlQmFja2Vu
ZEJhc2UqPj4oKTsKICAgICAgICAgaGFzaFNldC0+YWRkKHRoaXMpOwogICAgIH0KIApAQCAtMjY4
LDEzICsyNjYsMTMgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRCYXNlOjpjbG9zZURhdGFiYXNlKCkK
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CiAKLSAgICAg
ICAgSGFzaFNldDxEYXRhYmFzZUJhY2tlbmRCYXNlKj4qIGhhc2hTZXQgPSBndWlkVG9EYXRhYmFz
ZU1hcCgpLmdldChtX2d1aWQpOwotICAgICAgICBBU1NFUlQoaGFzaFNldCk7Ci0gICAgICAgIEFT
U0VSVChoYXNoU2V0LT5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIGhhc2hTZXQtPnJlbW92ZSh0
aGlzKTsKLSAgICAgICAgaWYgKGhhc2hTZXQtPmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZ3Vp
ZFRvRGF0YWJhc2VNYXAoKS5yZW1vdmUobV9ndWlkKTsKLSAgICAgICAgICAgIGRlbGV0ZSBoYXNo
U2V0OworICAgICAgICBhdXRvIGl0ID0gZ3VpZFRvRGF0YWJhc2VNYXAoKS5maW5kKG1fZ3VpZCk7
CisgICAgICAgIEFTU0VSVChpdCAhPSBndWlkVG9EYXRhYmFzZU1hcCgpLmVuZCgpKTsKKyAgICAg
ICAgQVNTRVJUKGl0LT52YWx1ZSk7CisgICAgICAgIEFTU0VSVChpdC0+dmFsdWUtPmNvbnRhaW5z
KHRoaXMpKTsKKyAgICAgICAgaXQtPnZhbHVlLT5yZW1vdmUodGhpcyk7CisgICAgICAgIGlmIChp
dC0+dmFsdWUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZ3VpZFRvRGF0YWJhc2VNYXAoKS5y
ZW1vdmUoaXQpOwogICAgICAgICAgICAgZ3VpZFRvVmVyc2lvbk1hcCgpLnJlbW92ZShtX2d1aWQp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzI5LDcgKzMyNyw3IEBAIGJvb2wgRGF0YWJhc2VCYWNr
ZW5kQmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdE
YXRhYmFzCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwog
Ci0gICAgICAgIEd1aWRWZXJzaW9uTWFwOjppdGVyYXRvciBlbnRyeSA9IGd1aWRUb1ZlcnNpb25N
YXAoKS5maW5kKG1fZ3VpZCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBndWlkVG9WZXJzaW9uTWFw
KCkuZmluZChtX2d1aWQpOwogICAgICAgICBpZiAoZW50cnkgIT0gZ3VpZFRvVmVyc2lvbk1hcCgp
LmVuZCgpKSB7CiAgICAgICAgICAgICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5n
IChzZWUgdXBkYXRlR3VpZFZlcnNpb25NYXAoKSkuCiAgICAgICAgICAgICBjdXJyZW50VmVyc2lv
biA9IGVudHJ5LT52YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBlbnRyeS0+dmFsdWUu
aXNvbGF0ZWRDb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKaW5kZXggOGM1NWRkMTlhMjhlZDY1N2M4YzE2ZDhjYTc5ZGRiYmQxNDY0MDRkNC4uZTA3MDEw
YTZlNzRlNWQ4NWZiMzRiZTEzNGMzNGU1NzQ3MjAzMDQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNTAsNyArNTAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIENhY2hlZEZvbnQ6OkNhY2hlZEZvbnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIEZv
bnRSZXNvdXJjZSkKLSAgICAsIG1fZm9udERhdGEoMCkKICAgICAsIG1fbG9hZEluaXRpYXRlZChm
YWxzZSkKICAgICAsIG1faGFzQ3JlYXRlZEZvbnREYXRhKGZhbHNlKQogewpAQCAtNTgsNyArNTcs
NiBAQCBDYWNoZWRGb250OjpDYWNoZWRGb250KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3Vy
Y2VSZXF1ZXN0KQogCiBDYWNoZWRGb250Ojp+Q2FjaGVkRm9udCgpCiB7Ci0gICAgZGVsZXRlIG1f
Zm9udERhdGE7CiB9CiAKIHZvaWQgQ2FjaGVkRm9udDo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTEwMCw3ICs5OCw3
IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoKQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzZXRTdGF0dXMoRGVjb2RlRXJyb3IpOwogICAgIH0KLSAgICByZXR1cm4g
bV9mb250RGF0YTsKKyAgICByZXR1cm4gbV9mb250RGF0YS5nZXQoKTsKIH0KIAogRm9udFBsYXRm
b3JtRGF0YSBDYWNoZWRGb250OjpwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShmbG9hdCBzaXpl
LCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZv
bnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50LCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlKQpAQCAtMTY0LDEwICsxNjIsNyBAQCBTVkdGb250RWxlbWVudCogQ2FjaGVkRm9udDo6Z2V0
U1ZHRm9udEJ5SWQoY29uc3QgU3RyaW5nJiBmb250TmFtZSkgY29uc3QKIAogdm9pZCBDYWNoZWRG
b250OjphbGxDbGllbnRzUmVtb3ZlZCgpCiB7Ci0gICAgaWYgKG1fZm9udERhdGEpIHsKLSAgICAg
ICAgZGVsZXRlIG1fZm9udERhdGE7Ci0gICAgICAgIG1fZm9udERhdGEgPSAwOwotICAgIH0KKyAg
ICBtX2ZvbnREYXRhID0gbnVsbHB0cjsKIH0KIAogdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlm
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCA1NDgxNzlm
ZGFkYmIwNzM1MzY2ZmE5ZjMzY2QzMTdkY2U0NTllMTY2Li5jYTQzM2I2MGExODMzNTY0ODA5ZDI0
ZmRhZjBjNmIzMzRhOGI1ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhbGxD
bGllbnRzUmVtb3ZlZCgpIE9WRVJSSURFOwogCi0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSog
bV9mb250RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
bV9mb250RGF0YTsKICAgICBib29sIG1fbG9hZEluaXRpYXRlZDsKICAgICBib29sIG1faGFzQ3Jl
YXRlZEZvbnREYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKaW5kZXggYzgzNWI5MjA2NjkxNWJmOTA4ZjA4MmEzM2Y5MzliODBlY2Rk
YTVkYy4uODAwNWQ4ZWJiM2EzNTU1OTgwOWIxMWExYzBiNzlmZGVkZmZhNzhkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtNDMs
NyArNDMsNiBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAg
LCBtX2ZyYW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCiAgICAgLCBtX3JlcGV0aXRpb25D
b3VudChjQW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25v
d24pCiAgICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKQEAgLTQyOSw3ICs0MjgsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpzdGFydEFuaW1hdGlvbihib29sIGNhdGNoVXBJZk5lY2Vzc2FyeSkK
IAogICAgIGlmICghY2F0Y2hVcElmTmVjZXNzYXJ5IHx8IHRpbWUgPCBtX2Rlc2lyZWRGcmFtZVN0
YXJ0VGltZSkgewogICAgICAgICAvLyBIYXZlbid0IHlldCByZWFjaGVkIHRpbWUgZm9yIG5leHQg
ZnJhbWUgdG8gc3RhcnQ7IGRlbGF5IHVudGlsIHRoZW4uCi0gICAgICAgIG1fZnJhbWVUaW1lciA9
IG5ldyBUaW1lcjxCaXRtYXBJbWFnZT4odGhpcywgJkJpdG1hcEltYWdlOjphZHZhbmNlQW5pbWF0
aW9uKTsKKyAgICAgICAgbV9mcmFtZVRpbWVyID0gc3RkOjptYWtlX3VuaXF1ZTxUaW1lcjxCaXRt
YXBJbWFnZT4+KHRoaXMsICZCaXRtYXBJbWFnZTo6YWR2YW5jZUFuaW1hdGlvbik7CiAgICAgICAg
IG1fZnJhbWVUaW1lci0+c3RhcnRPbmVTaG90KHN0ZDo6bWF4KG1fZGVzaXJlZEZyYW1lU3RhcnRU
aW1lIC0gdGltZSwgMC4pKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5
IHJlYWNoZWQgb3IgcGFzc2VkIHRoZSB0aW1lIGZvciB0aGUgbmV4dCBmcmFtZSB0byBzdGFydC4K
QEAgLTQ3OSw4ICs0NzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpzdG9wQW5pbWF0aW9uKCkKIHsK
ICAgICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgdG8gYW5pbWF0ZSBhbGwgb2NjdXJyZW5jZXMgb2Yg
dGhpcyBpbWFnZS4gIERvbid0IGludmFsaWRhdGUKICAgICAvLyB0aGUgdGltZXIgdW5sZXNzIGFs
bCByZW5kZXJlcnMgaGF2ZSBzdG9wcGVkIGRyYXdpbmcuCi0gICAgZGVsZXRlIG1fZnJhbWVUaW1l
cjsKLSAgICBtX2ZyYW1lVGltZXIgPSAwOworICAgIG1fZnJhbWVUaW1lciA9IG51bGxwdHI7CiB9
CiAKIHZvaWQgQml0bWFwSW1hZ2U6OnJlc2V0QW5pbWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IGJjOWE2M2ZjNGVlNTc5NGY3
NmNiZGE0ZmUyOTBmNDM1ZWE1YTZhZDkuLmZlY2M3YmZkYjA2MDU1YjhjYTM5OWM3ODYzODUyYzc5
OWQzZWM1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaApAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fY3VycmVu
dEZyYW1lOyAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZnJhbWUgb2YgYW5pbWF0aW9uLgog
ICAgIFZlY3RvcjxGcmFtZURhdGEsIDE+IG1fZnJhbWVzOyAvLyBBbiBhcnJheSBvZiB0aGUgY2Fj
aGVkIGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uLiBXZSBoYXZlIHRvIHJlZiBmcmFtZXMgdG8gcGlu
IHRoZW0gaW4gdGhlIGNhY2hlLgogCi0gICAgVGltZXI8Qml0bWFwSW1hZ2U+KiBtX2ZyYW1lVGlt
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPEJpdG1hcEltYWdlPj4gbV9mcmFtZVRpbWVy
OwogICAgIGludCBtX3JlcGV0aXRpb25Db3VudDsgLy8gSG93IG1hbnkgdG90YWwgYW5pbWF0aW9u
IGxvb3BzIHdlIHNob3VsZCBkby4gIFRoaXMgd2lsbCBiZSBjQW5pbWF0aW9uTm9uZSBpZiB0aGlz
IGltYWdlIHR5cGUgaXMgaW5jYXBhYmxlIG9mIGFuaW1hdGlvbi4KICAgICBSZXBldGl0aW9uQ291
bnRTdGF0dXMgbV9yZXBldGl0aW9uQ291bnRTdGF0dXM7CiAgICAgaW50IG1fcmVwZXRpdGlvbnND
b21wbGV0ZTsgIC8vIEhvdyBtYW55IHJlcGV0aXRpb25zIHdlJ3ZlIGZpbmlzaGVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCAxZjU2MDBlZTg0YzhhNjk3ZTk0
MGRiNTdlZmJkY2Q0NDc1Y2IyODI3Li5iNWM5ODU1ZjA5NGJmMmZkZGRhNWUxMmRmNjEyMDhmNmNl
NDViNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9
OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciopOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFCbGFja0JlcnJ5LmNwcAppbmRleCBkMTY3ODRjZjgzYmQ0MjBiYjQxYWMzNGM2YTRh
MmUwNTY2OGNkNDhmLi4yNGEwMmZiNjU5MTc1NjQ4OTMzZTk5NzAzNzJhZDJkZTE2MWJkYmVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFCbGFja0Jl
cnJ5LmNwcApAQCAtNTYsNyArNTYsNyBAQCBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1
cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQogICAgIHJldHVybiBpc1N1cHBvcnRl
ZDsKIH0KIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogewogICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCkBAIC02NCwxNiArNjQs
MTYgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIo
YnVmZmVyKTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5p
dGl6ZXIuc2FuaXRpemUoKTsKICAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKLSAgICAgICAgcmV0
dXJuIDA7IC8vIHZhbGlkYXRpb24gZmFpbGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8g
dmFsaWRhdGlvbiBmYWlsZWQuCiAgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOwog
I2VuZGlmCiAKICAgICBGSUxFQ0hBUiBuYW1lW01BWF9GT05UX05BTUVfTEVOKzFdOwogICAgIG1l
bXNldChuYW1lLCAwLCBNQVhfRk9OVF9OQU1FX0xFTisxKTsKICAgICBpZiAoRlNfbG9hZF9mb250
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6Z2V0SVR5cGUoKSwgMCwgY29uc3RfY2Fz
dDxGU19CWVRFKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBGU19CWVRFKj4oYnVmZmVyLT5kYXRh
KCkpKSwgMCwgTUFYX0ZPTlRfTkFNRV9MRU4sIG5hbWUpICE9IFNVQ0NFU1MpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBuZXcgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShuYW1lLCBidWZmZXIpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KG5hbWUsIGJ1ZmZlcik7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKaW5kZXggMDBhMDNkZTE4MzU0ZWMwZTAxNjU2OTZjYjljNjk1YjhiYWY0
Njk0YS4uOGU1NjI3ZmU2YzY5MjZkYTQzODc1NDBlNzY1NzQ2MTVkYzEwZjNiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFw
SW1hZ2VDYWlyby5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWlyb1V0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksMTIgKzQwLDEwIEBAIEJpdG1hcEltYWdlOjpCaXRtYXBJ
bWFnZShQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqCiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fc2l6ZShjYWlyb1N1cmZhY2VTaXpl
KG5hdGl2ZUltYWdlLmdldCgpKSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCi0gICAgLCBtX2Zy
YW1lcygwKQotICAgICwgbV9mcmFtZVRpbWVyKDApCiAgICAgLCBtX3JlcGV0aXRpb25Db3VudChj
QW5pbWF0aW9uTm9uZSkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50U3RhdHVzKFVua25vd24pCiAg
ICAgLCBtX3JlcGV0aXRpb25zQ29tcGxldGUoMCkKLSAgICAsIG1fZGVjb2RlZFNpemUoMCkKKyAg
ICAsIG1fZGVjb2RlZFNpemUobV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiA0KQog
ICAgICwgbV9mcmFtZUNvdW50KDEpCiAgICAgLCBtX2lzU29saWRDb2xvcihmYWxzZSkKICAgICAs
IG1fY2hlY2tlZEZvclNvbGlkQ29sb3IoZmFsc2UpCkBAIC01NCwxMiArNTMsMTEgQEAgQml0bWFw
SW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFn
ZSwgSW1hZ2VPYnNlcnZlcioKICAgICAsIG1fc2l6ZUF2YWlsYWJsZSh0cnVlKQogICAgICwgbV9o
YXZlRnJhbWVDb3VudCh0cnVlKQogewotICAgIG1fZGVjb2RlZFNpemUgPSBtX3NpemUud2lkdGgo
KSAqIG1fc2l6ZS5oZWlnaHQoKSAqIDQ7Ci0KICAgICBtX2ZyYW1lcy5ncm93KDEpOwogICAgIG1f
ZnJhbWVzWzBdLm1faGFzQWxwaGEgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KG5hdGl2ZUlt
YWdlLmdldCgpKSAhPSBDQUlST19DT05URU5UX0NPTE9SOwogICAgIG1fZnJhbWVzWzBdLm1fZnJh
bWUgPSBuYXRpdmVJbWFnZTsKICAgICBtX2ZyYW1lc1swXS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7
CisKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDU4MDcxMDI2ODc2ZGE0OWY3OTFlOTczOWY3ZDc3Yzc1MmNkNGFjMTMuLmY3
YTA1NWE1YzhjNTM1MjI3MDRjZjVlNTU2YzZhZTY5NzYyODk3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBjYWlyb19mb250
X2ZhY2VfdCogbV9mb250RmFjZTsKIH07CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpOworc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyKik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcAppbmRleCA2YzY5Y2UwODg3OGE1ZTA3
OTRjYjUyYmI3NTA5YjNkY2NjMDg0YmE5Li45MmNjZmRhM2E2MDMzMjU0ZTA5OGNiZmQ4MDAyMDRk
OGFiZTAzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9CaXRtYXBJbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9CaXRtYXBJbWFnZUNHLmNwcApAQCAtNjcsNyArNjcsNiBAQCBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAg
ICA6IEltYWdlKG9ic2VydmVyKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJh
bWVzKDApCi0gICAgLCBtX2ZyYW1lVGltZXIoMCkKICAgICAsIG1fcmVwZXRpdGlvbkNvdW50KGNB
bmltYXRpb25Ob25lKQogICAgICwgbV9yZXBldGl0aW9uQ291bnRTdGF0dXMoVW5rbm93bikKICAg
ICAsIG1fcmVwZXRpdGlvbnNDb21wbGV0ZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggODQxYzhhM2FkZmZmODhiZTMyM2QzZGQ2
M2E2ZmI2NWVjZjI0ZDYxZS4uZTEzOWFhNTY2ZDgwNTkyMWEwNmU1YWI5MzFkMGVkODZlMzZlYWRh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Zm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBiCiAgICAgcmV0dXJu
IEZvbnRQbGF0Zm9ybURhdGEobV9mb250RmFjZSwgc2l6ZSwgYm9sZCwgaXRhbGljKTsKIH0KIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewog
ICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCkBAIC03MiwyMiArNzIsMjIgQEAgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKICAgICBpZiAoaXNXT0ZGKGJ1ZmZlcikpIHsKICAgICAgICAgVmVjdG9y
PGNoYXI+IHNmbnQ7CiAgICAgICAgIGlmICghY29udmVydFdPRkZUb1NmbnQoYnVmZmVyLCBzZm50
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICAgICAgc2ZudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRWZWN0b3Ioc2ZudCk7CiAg
ICAgICAgIGJ1ZmZlciA9IHNmbnRCdWZmZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgc3RhdGljIEZU
X0xpYnJhcnkgbGlicmFyeSA9IDA7CisgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAg
ICBpZiAoIWxpYnJhcnkgJiYgRlRfSW5pdF9GcmVlVHlwZSgmbGlicmFyeSkpIHsKLSAgICAgICAg
bGlicmFyeSA9IDA7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBsaWJyYXJ5ID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgRlRfRmFjZSBmcmVlVHlw
ZUZhY2U7CiAgICAgaWYgKEZUX05ld19NZW1vcnlfRmFjZShsaWJyYXJ5LCByZWludGVycHJldF9j
YXN0PGNvbnN0IEZUX0J5dGUqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpLCAwLCAm
ZnJlZVR5cGVGYWNlKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5ldyBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKGZyZWVUeXBlRmFjZSwgYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4oZnJlZVR5cGVGYWNlLCBidWZmZXIpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCmluZGV4IGQ1NjIxMTgyYTgwMDliMDA3NmVmYWE1ZTNkYzYxYzFmOWRjZjZj
MzIuLjdiMWY4OThiYjE3MTI0YzM4YTg0MzM0ZDQ0YTc5OGU1Y2ZiYmU3ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTMxLDE1ICszMSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6On5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkK
IHsKLSAgICBDR0ZvbnRSZWxlYXNlKG1fY2dGb250KTsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSBG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEZvbnRXaWR0aFZh
cmlhbnQgd2lkdGhWYXJpYW50LCBGb250UmVuZGVyaW5nTW9kZSkKIHsKLSAgICByZXR1cm4gRm9u
dFBsYXRmb3JtRGF0YShtX2NnRm9udCwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwg
d2lkdGhWYXJpYW50KTsKKyAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShtX2NnRm9udC5nZXQo
KSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50KTsKIH0KIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewog
ICAgIEFTU0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCkBAIC00NywxNCArNDYsMTQgQEAgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKICAgICBPcGVuVHlwZVNhbml0aXplciBzYW5pdGl6ZXIoYnVmZmVyKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cmFuc2NvZGVCdWZmZXIgPSBzYW5pdGl6ZXIuc2Fu
aXRpemUoKTsKICAgICBpZiAoIXRyYW5zY29kZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7IC8v
IHZhbGlkYXRpb24gZmFpbGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8gdmFsaWRhdGlv
biBmYWlsZWQuCiAgICAgYnVmZmVyID0gdHJhbnNjb2RlQnVmZmVyLmdldCgpOwogI2Vsc2UKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZm50QnVmZmVyOwogICAgIGlmIChpc1dPRkYoYnVmZmVy
KSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gc2ZudDsKICAgICAgICAgaWYgKCFjb252ZXJ0V09G
RlRvU2ZudChidWZmZXIsIHNmbnQpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZm50QnVmZmVyID0gU2hhcmVkQnVmZmVyOjph
ZG9wdFZlY3RvcihzZm50KTsKICAgICAgICAgYnVmZmVyID0gc2ZudEJ1ZmZlci5nZXQoKTsKQEAg
LTY4LDEwICs2Nyw5IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAKICAgICBSZXRhaW5QdHI8Q0dGb250
UmVmPiBjZ0ZvbnRSZWYgPSBhZG9wdENGKENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0
YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgaWYgKCFjZ0ZvbnRSZWYpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEq
IGZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb250
YWluZXJSZWYsIGNnRm9udFJlZi5sZWFrUmVmKCkpOwotICAgIHJldHVybiBmb250Q3VzdG9tUGxh
dGZvcm1EYXRhOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE+KGNvbnRhaW5lclJlZiwgY2dGb250UmVmLmdldCgpKTsKIH0KIAogYm9vbCBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGM3YWUxY2ExZjQwZTcxYWE5NzBjOGYzZWZiYmMx
MDExMmE3NGM5ZDguLmM4N2NjZDg5OTBiNTlmNmIxYTZiMzY5N2JhNjRhM2RmZDEzNjNiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIHR5cGVkZWYgVUludDMyIEFUU0ZvbnRDb250
YWluZXJSZWY7CkBAIC01MywxMCArNTQsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYpOwogCiAgICAgQVRTRm9udENvbnRhaW5lclJlZiBt
X2F0c0NvbnRhaW5lcjsKLSAgICBDR0ZvbnRSZWYgbV9jZ0ZvbnQ7CisgICAgUmV0YWluUHRyPENH
Rm9udFJlZj4gbV9jZ0ZvbnQ7CiB9OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciopOworc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyKik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDJlNTQx
MjQxYjEwZTkxMGMzMDU0MWM1ZDc0MWY1ODU2YjQxMDY1NTguLjQ5NzU2NDhlMzVkNjMwNjdjZTE1
NWIxZTc1ODkwYzg2Y2IwNWQyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAg
cmV0dXJuIGZvbnROYW1lOwogfQogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgQVNTRVJUX0FSRyhidWZmZXIsIGJ1ZmZlcik7CiAK
QEAgLTg5LDcgKzg5LDcgQEAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICBpZiAoaXNXT0ZGKGJ1ZmZl
cikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IHNmbnQ7CiAgICAgICAgIGlmICghY29udmVydFdP
RkZUb1NmbnQoYnVmZmVyLCBzZm50KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgc2ZudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
YWRvcHRWZWN0b3Ioc2ZudCk7CiAgICAgICAgIGJ1ZmZlciA9IHNmbnRCdWZmZXIuZ2V0KCk7CkBA
IC05OSw4ICs5OSw4IEBAIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgSEFORExFIGZvbnRSZWZlcmVu
Y2U7CiAgICAgZm9udFJlZmVyZW5jZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZv
bnROYW1lKTsKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBuZXcgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFt
ZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnRSZWZlcmVuY2UsIGZvbnROYW1lKTsKIH0KIAog
Ym9vbCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
IGZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDE4ODk1MWJjODE1MTkzMTM5
N2JiMWRkZGUzOTVjZmU1ZmI1MWE2NDAuLjIyODA5NDkwODgzMzFhNTg0ZGY5YTRkZGJhZjk3OWM3
NDY1MTRmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIG1fbmFtZTsKIH07CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGEq
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKik7CitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXIqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCmluZGV4IGYxYTgyMjUwZGEwNjM0MGIwMWNlNDhlMTIwZWFhYzJmMGY4ZGI1OTMuLjdm
YzU1ZmE0MDY2YzFjZTQ2ZThmNzc1NzFmOWY5NGNmODBmOGYzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBTdHJpbmcg
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIEFT
U0VSVF9BUkcoYnVmZmVyLCBidWZmZXIpOwogCkBAIC04OCw5ICs4OCw5IEBAIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiAgICAgSEFORExFIGZvbnRSZWZlcmVuY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
YnVmZmVyLCBmb250TmFtZSk7CiAKICAgICBpZiAoIWZvbnRSZWZlcmVuY2UpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBuZXcgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShmb250UmVmZXJlbmNlLCBmb250TmFtZSk7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udFJlZmVyZW5jZSwgZm9u
dE5hbWUpOwogfQogCiBib29sIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0
KGNvbnN0IFN0cmluZyYgZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApp
bmRleCBlMWU1YWZhODU2ZWQzY2M5ZGNhYWZhZmU2NzVhMDc3ODQxMWVmZTdjLi45Yzg5YjNjOTAw
MGNmZTliNGU1MTIzYjdlNjk4Nzk5NzRiMWRmZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKIH0KIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQogewogICAgIGlmIChnX2N1c3RvbUZvbnRDYWNoZSkgewogICAgICAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBsb2NhbEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGlmIChyZW5hbWVGb250KGxvY2FsQnVmZmVyLmdl
dCgpLCBmb250TmFtZSkgJiYgZ19jdXN0b21Gb250Q2FjaGUtPnJlZ2lzdGVyRm9udChmb250TmFt
ZSwgbG9jYWxCdWZmZXIuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKGZvbnROYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+KGZvbnROYW1lKTsKICAgICB9Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGJvb2wgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6c3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKaW5kZXggYTNhOGEyOTYyZjNmMjZjMTY0Nzg2ZTA2NTIzNWQ3MDk5Nzg5ODMz
Ni4uODRkNWQ3MzVlNDEzODA3MTQzYWViMmM3NzI3MzU1YTUwNDBkOWVlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgfTsKIAotICAgIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEqIGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyKik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoY29uc3QgU2hhcmVkQnVmZmVyKik7CiAgICAgdm9pZCBzZXRDdXN0
b21Gb250Q2FjaGUoQ3VzdG9tRm9udENhY2hlKik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGVl
Nzc3MjYzZWQ0MTNkZTg2YTg0NzE2OGU2YWMxZjNjYWM4M2E3MjAuLjU2YTBhNTk3NTE4YTdkNmE5
NmMyNDA5ODZiNWRjODZhZTVlNzM5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIGRlZmF1bHRTdG9yYWdlU2Vzc2lv
bigpOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlID0gU3Ry
aW5nKCkpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiBjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJh
c2UgPSBTdHJpbmcoKSk7CiAKICAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCk7CiAKQEAgLTU1LDEwICs1NSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUmV0
YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+KTsKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4g
d2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KICAgICBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1T
ZXNzaW9uLmdldCgpOyB9CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNv
b2tpZVN0b3JhZ2UoKSBjb25zdDsKICNlbGlmIFVTRShTT1VQKQorICAgIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbihTb3VwU2Vzc2lvbiopOwogICAgIHZvaWQgc2V0U291cFNlc3Npb24oU291cFNlc3Np
b24qIHNlc3Npb24pIHsgbV9zZXNzaW9uID0gc2Vzc2lvbjsgfQogICAgIFNvdXBTZXNzaW9uKiBz
b3VwU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQogI2Vsc2UKQEAg
LTY5LDExICs3MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpIHx8
IFVTRShDRk5FVFdPUkspCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJldGFpblB0cjxDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmPik7CiAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAg
UmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogI2Vs
aWYgVVNFKFNPVVApCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFNvdXBTZXNzaW9uKik7CiAg
ICAgR1JlZlB0cjxTb3VwU2Vzc2lvbj4gbV9zZXNzaW9uOwogI2Vsc2UKICAgICBSZWZQdHI8TmV0
d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHAKaW5kZXggZWY1OTQ3ZGU4ZjEzZmQwMDcyOTY3ODVjZjI3ZGNiYjgyMDU0YzhkNC4uYTEzZjMx
NjVhYzg2ZDliMWY5MGM4YjdiNGI4ZjE3NjM3MDkwZTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAKQEAgLTg5LDE4ICs4OSwxOCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKICAgICByZXR1
cm4gKmRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKIH0KIAotUGFzc093blB0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQorc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCiB7CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmll
ckJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFk
b3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihhZG9wdENGKHdrQ3JlYXRl
UHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSkpKTsKICNlbHNlCi0gICAg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24oYWRvcHRDRih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxhdGZv
cm1TZXNzaW9uKCkpKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPihhZG9wdENGKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KGNmSWRlbnRpZmllci5nZXQoKSwgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5wbGF0
Zm9ybVNlc3Npb24oKSkpKTsKICNlbmRpZgogICAgIHNlc3Npb24tPm1faXNQcml2YXRlID0gdHJ1
ZTsKIAotICAgIHJldHVybiBzZXNzaW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsK
IH0KIAogUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llU3RvcmFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAKaW5kZXggNzUwMTU2OWU0ZDdkM2VlZGM1ZjMzOGY5ZTg1OTYzNTY2NmVjMjY2NS4uOGI3
NzUyNTRiMmQ4ODdhNDM0YTA1M2ZkZTY5OTVhMzZlMmYwMTU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMjksOCArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00MCwzMyArMzksMzAgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oU291cFNlc3Npb24qIHNlc3Npb24pCiB7CiB9CiAKLXN0YXRpYyBPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQorc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHNlc3Npb247CiAgICAgcmV0dXJuIHNl
c3Npb247CiB9CiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQogewogICAgIGlmICghZGVmYXVsdFNlc3Npb24oKSkK
LSAgICAgICAgZGVmYXVsdFNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNl
c3Npb24oUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCkpKTsKKyAgICAgICAgZGVmYXVs
dFNlc3Npb24oKSA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihSZXNv
dXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSk7CiAgICAgcmV0dXJuICpkZWZhdWx0U2Vzc2lv
bigpOwogfQogCi1QYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCitz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJikKIHsKLSAgICBP
d25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uID0gYWRvcHRQdHIobmV3IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpKSk7CisgICAgYXV0byBzZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+KFJlc291cmNlSGFuZGxlOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkpOwogICAgIHNlc3Npb24tPm1faXNQcml2YXRlID0gdHJ1ZTsKLQotICAgIHJldHVybiBzZXNz
aW9uLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQogewotICAgIC8vIEEgbnVs
bCBzZXNzaW9uIHdpbGwgbWFrZSB1cyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgY29va2llIGph
ciwgd2hpY2ggaXMgY3VycmVudGx5Ci0gICAgLy8gdGhlIGV4cGVjdGVkIGJlaGF2aW9yIGZvciB0
ZXN0cy4KLSAgICBkZWZhdWx0U2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlVGVzdGluZ1Nlc3Npb24oKSkpOworICAgIGRl
ZmF1bHRTZXNzaW9uKCkgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4o
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZVRlc3RpbmdTZXNzaW9uKCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggZTAzNzhiNzY3OWQ1NWZiYmMxN2Zj
OTA3ZjNlZDM1ODFhZTQ4MzViYy4uNmZiMzYyZTFmMGZkMzhhNDAyOTFjNmQ4MTY1OTMwYzQ4ZWY4
MDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtNzQsNyAr
NzQsNyBAQCBAZW5kCiBAaW50ZXJmYWNlIFdlYkhpc3RvcnlQcml2YXRlIDogTlNPYmplY3Qgewog
QHByaXZhdGUKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZW50cmllc0J5VVJMOwotICAgIERh
dGVUb0VudHJpZXNNYXAqIF9lbnRyaWVzQnlEYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRl
VG9FbnRyaWVzTWFwPiBfZW50cmllc0J5RGF0ZTsKICAgICBOU011dGFibGVBcnJheSAqX29yZGVy
ZWRMYXN0VmlzaXRlZERheXM7CiAgICAgQk9PTCBpdGVtTGltaXRTZXQ7CiAgICAgaW50IGl0ZW1M
aW1pdDsKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChpZClpbml0CiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgCiAgICAgX2VudHJpZXNCeVVSTCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07Ci0gICAgX2VudHJpZXNCeURhdGUgPSBuZXcgRGF0ZVRvRW50cmllc01hcDsKKyAgICBf
ZW50cmllc0J5RGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0ZVRvRW50cmllc01hcD4oKTsKIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTQxLDEzICsxNDEsMTEgQEAgLSAodm9pZClkZWFsbG9j
CiB7CiAgICAgW19lbnRyaWVzQnlVUkwgcmVsZWFzZV07CiAgICAgW19vcmRlcmVkTGFzdFZpc2l0
ZWREYXlzIHJlbGVhc2VdOwotICAgIGRlbGV0ZSBfZW50cmllc0J5RGF0ZTsKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKIC0gKHZvaWQpZmluYWxpemUKIHsKLSAgICBkZWxldGUgX2VudHJpZXNC
eURhdGU7CiAgICAgW3N1cGVyIGZpbmFsaXplXTsKIH0KIApAQCAtNjM2LDcgKzYzNCw3IEBAIC0g
KE5TRGF0YSAqKWRhdGEKICAgICAKICAgICAvLyBJZ25vcmVzIHRoZSBkYXRlIGFuZCBpdGVtIGNv
dW50IGxpbWl0czsgdGhlc2UgYXJlIHJlc3BlY3RlZCB3aGVuIGxvYWRpbmcgaW5zdGVhZCBvZiB3
aGVuIHNhdmluZywgc28KICAgICAvLyB0aGF0IGNsaWVudHMgY2FuIGxlYXJuIG9mIGRpc2NhcmRl
ZCBpdGVtcyBieSBsaXN0ZW5pbmcgdG8gV2ViSGlzdG9yeUl0ZW1zRGlzY2FyZGVkV2hpbGVMb2Fk
aW5nTm90aWZpY2F0aW9uLgotICAgIFdlYkhpc3RvcnlXcml0ZXIgd3JpdGVyKF9lbnRyaWVzQnlE
YXRlKTsKKyAgICBXZWJIaXN0b3J5V3JpdGVyIHdyaXRlcihfZW50cmllc0J5RGF0ZS5nZXQoKSk7
CiAgICAgd3JpdGVyLndyaXRlUHJvcGVydHlMaXN0KCk7CiAgICAgcmV0dXJuIFtbKE5TRGF0YSAq
KXdyaXRlci5yZWxlYXNlRGF0YSgpLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggNGFkNzdjNmIzNGQ0OWM2MmZkMjliNjc0M2RkYjAz
ODVlMzk3NzUzMi4uYWE5NTcyN2M3Y2QxNjVhY2NjNzA3NDg0ZGNkYzZjNmU1MmQyYzA4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0zMiwyNyArMzIsMzEgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBwcml2YXRlU2Vzc2lvbjsKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiYgcHJpdmF0ZVNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICBy
ZXR1cm4gc2Vzc2lvbjsKK30KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKQorICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcml2YXRlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVd
IGJ1bmRsZUlkZW50aWZpZXJdKS5sZWFrUHRyKCk7CisgICAgcHJpdmF0ZVNlc3Npb24oKSA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGRlbGV0ZSBwcml2YXRlU2Vzc2lvbjsKLSAg
ICBwcml2YXRlU2Vzc2lvbiA9IDA7CisgICAgcHJpdmF0ZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9
CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MoKSBjb25zdApAQCAtOTQsNyArOTgsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Np
b247CisgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNjhmNTljZmRkMjBjNjk4YjllYzExMGVjMGY1
YjMwYTA3YjM2NWQ2ZS4uZDE5Mjc3NjIxOTQ1N2NhNTgwMTMwNmRhZTMxNTI0OGVkZGNlNWI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNjQsMTUgKzE2NCwxMSBA
QCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBbd2ViRnJhbWVWaWV3IHJlbGVhc2VdOwogCi0gICAg
ZGVsZXRlIHNjcmlwdERlYnVnZ2VyOwotCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtICh2
b2lkKWZpbmFsaXplCiB7Ci0gICAgZGVsZXRlIHNjcmlwdERlYnVnZ2VyOwotCiAgICAgW3N1cGVy
IGZpbmFsaXplXTsKIH0KIApAQCAtMzIyLDIwICszMTgsMTYgQEAgLSAodm9pZClfYXR0YWNoU2Ny
aXB0RGVidWdnZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKF9wcml2YXRlLT5zY3JpcHRE
ZWJ1Z2dlcikgewotICAgICAgICBBU1NFUlQoX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID09IGds
b2JhbE9iamVjdC0+ZGVidWdnZXIoKSk7CisgICAgICAgIEFTU0VSVChfcHJpdmF0ZS0+c2NyaXB0
RGVidWdnZXIuZ2V0KCkgPT0gZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9IG5ldyBXZWJTY3Jp
cHREZWJ1Z2dlcihnbG9iYWxPYmplY3QpOworICAgIF9wcml2YXRlLT5zY3JpcHREZWJ1Z2dlciA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViU2NyaXB0RGVidWdnZXI+KGdsb2JhbE9iamVjdCk7CiB9CiAK
IC0gKHZvaWQpX2RldGFjaFNjcmlwdERlYnVnZ2VyCiB7Ci0gICAgaWYgKCFfcHJpdmF0ZS0+c2Ny
aXB0RGVidWdnZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRlbGV0ZSBfcHJpdmF0ZS0+c2Ny
aXB0RGVidWdnZXI7Ci0gICAgX3ByaXZhdGUtPnNjcmlwdERlYnVnZ2VyID0gMDsKKyAgICBfcHJp
dmF0ZS0+c2NyaXB0RGVidWdnZXIgPSBudWxscHRyOwogfQogCiAtIChpZClfaW5pdFdpdGhXZWJG
cmFtZVZpZXc6KFdlYkZyYW1lVmlldyAqKWZ2IHdlYlZpZXc6KFdlYlZpZXcgKil2CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJbnRlcm5hbC5oCmluZGV4IGFiOGM1YzI4MTgx
YjY0NDA0ODFjM2VlY2JlY2I2MTY5YmU4YWMyZTguLmZjY2JlYWExY2FiZGRmZmQ3M2U0M2Q5NDNm
ZjdjMmYzODQyNWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVJ
bnRlcm5hbC5oCkBAIC03OCw3ICs3OCw3IEBAIFdlYlZpZXcgKmdldFdlYlZpZXcoV2ViRnJhbWUg
KndlYkZyYW1lKTsKIEBwdWJsaWMKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lOwogICAg
IFdlYkZyYW1lVmlldyAqd2ViRnJhbWVWaWV3OwotICAgIFdlYlNjcmlwdERlYnVnZ2VyKiBzY3Jp
cHREZWJ1Z2dlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU2NyaXB0RGVidWdnZXI+IHNjcmlw
dERlYnVnZ2VyOwogICAgIGlkIGludGVybmFsTG9hZERlbGVnYXRlOwogICAgIEJPT0wgc2hvdWxk
Q3JlYXRlUmVuZGVyZXJzOwogICAgIEJPT0wgaW5jbHVkZWRJbldlYktpdFN0YXRpc3RpY3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDVlZTQ3MDYzZGUzY2JlNjUxNzM4NzkwM2M4
YjA5OGZjMWFkNTQxNjEuLmJmNTllZTczYzI2NGYxYWE0ZDMxNzNiYjM0ZjU1NjIzZWY3MjZkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0yNSwyNCArMjUsMzQgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIK
KwogI2luY2x1ZGUgIldlYlZpZXcuaCIKLSNpZiBVU0UoQ0ZORVRXT1JLKQotI2luY2x1ZGUgPENG
TmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgotI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwog
I2lmIFVTRShDRk5FVFdPUkspCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRlU2Vzc2lvbjsKLXN0YXRpYyBTdHJpbmcqIGlkZW50aWZp
ZXJCYXNlOworc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBw
cml2YXRlU2Vzc2lvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiBzZXNzaW9uOworICAgIHJldHVybiBzZXNzaW9u
OworfQorCitzdGF0aWMgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYmFzZTsKKyAgICByZXR1cm4gYmFzZTsKK30KIAogI2lmIFVT
RShDRk5FVFdPUkspCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFj
Y2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kg
cG9saWN5KQpAQCAtNTAsOCArNjAsOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKFdlYktpdENvb2tpZQogICAgIGlm
IChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgp
KQogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tp
ZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZVNlc3Npb24pCi0gICAg
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZVNlc3Np
b24tPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZVNlc3Np
b24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShw
cml2YXRlU2Vzc2lvbigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAjZW5k
aWYKIApAQCAtNTksOSArNjksNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNl
dFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoYwogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgaWRlbnRpZmllckJhc2U7Ci0KLSAg
ICBpZGVudGlmaWVyQmFzZSA9IG5ldyBTdHJpbmcoYmFzZSk7CisgICAgaWRlbnRpZmllckJhc2Uo
KSA9IGJhc2U7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCkBAIC02OSwxOSArNzcsMTggQEAgdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKICNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAocHJpdmF0
ZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZyBiYXNlOwotICAgIGlmICghaWRlbnRpZmllckJhc2UpIHsKKyAgICBpZiAoaWRl
bnRpZmllckJhc2UoKS5pc051bGwoKSkgewogICAgICAgICBpZiAoQ0ZUeXBlUmVmIGJ1bmRsZVZh
bHVlID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFp
bkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkKICAgICAgICAgICAgIGlmIChDRkdl
dFR5cGVJRChidW5kbGVWYWx1ZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKICAgICAgICAgICAg
ICAgICBiYXNlID0gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlVmFsdWUpOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGJhc2UgPSAqaWRlbnRpZmllckJhc2U7CisgICAgfSBl
bHNlCisgICAgICAgIGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
YmFzZSkubGVha1B0cigpOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7CiAjZW5kaWYKIH0KIApA
QCAtODksOCArOTYsNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgZGVsZXRlIHByaXZhdGVTZXNzaW9uOwotICAgIHByaXZhdGVTZXNzaW9uID0gMDsKKyAg
ICBwcml2YXRlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdApAQCAtMTA5LDcgKzExNSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuICpwcml2YXRl
U2Vzc2lvbjsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0dXJu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQubW0KaW5kZXggZjFjYzA2NWNhMTExMGM4YmFlMmY2ZTQ1NzQwODZlMGRj
NzZlNjdiOC4uMjRiMjg5ODJjMTkwOTU1NGJlYmY5ZGIxYTBkMTQyMTQwYTIyMDE5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMzAsMTcgKzMwLDE2IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW1w
b3J0IDx3dGYvT3duUHRyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgT3du
UHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCkKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwg
c2Vzc2lvbiwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
IApAQCAtMTEyLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5n
KCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKSA9IHN0ZDo6bW92ZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZSgpKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAwNmFmZWVjZGNhOTdlNThlNTNjOWI0NGVm
NmIwMTA1ZjVmNWE1ODIxLi5kZjM1M2Q4NzdjYzY3Yzg0NjhjNDc3MTQ5NTI3MDYyMTgxMjJkMWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICBk
b3dubG9hZC0+c3RhcnQoKTsKIAogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93
bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZElELCBkb3dubG9hZC5yZWxl
YXNlKCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBzdGQ6Om1vdmUoZG93bmxv
YWQpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KHVpbnQ2NF90IGRvd25sb2FkSUQsIFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBA
IC01Myw3ICs1Myw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0SGFuZGxlVG9Eb3du
bG9hZCh1aW50NjRfdCBkb3dubG9hZElELCBSZXNvdXJjZUhhbmRsCiAKICAgICBkb3dubG9hZC0+
c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9uc2UpOwogICAgIEFTU0VSVCghbV9kb3dubG9h
ZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLnNldChkb3dubG9hZElE
LCBkb3dubG9hZC5yZWxlYXNlKCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBz
dGQ6Om1vdmUoZG93bmxvYWQpKTsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNhbmNlbERv
d25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCkBAIC02OSw4ICs2OSw2IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkKiBkb3dubG9hZCkKIHsKICAgICBB
U1NFUlQobV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWQtPmRvd25sb2FkSUQoKSkpOwogICAg
IG1fZG93bmxvYWRzLnJlbW92ZShkb3dubG9hZC0+ZG93bmxvYWRJRCgpKTsKLQotICAgIGRlbGV0
ZSBkb3dubG9hZDsKIH0KIAogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRpZENyZWF0ZURvd25sb2Fk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5oCmluZGV4IGNhN2VlOGEyMTM4MTliM2EyZGFkNWU0ZmJlYmRkNTExYmFlOGJiMmQuLmU1ZmZm
ZmE5NDZmOGU1Nzg4NzgzMjkzYjM4ODdkMGIxNjY1OTMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBEb3dubG9hZCo+IG1fZG93bmxvYWRzOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IHN0ZDo6dW5pcXVlX3B0cjxEb3dubG9hZD4+IG1fZG93bmxvYWRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2FuZGJveEV4
dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRl
eCAxMDNiYWRlNGZlOGZiN2E4NmRiOGMwMWYwOGMxNTg0NTJmYjQ0YmE5Li4yZDk2YzI3NzczNGZj
NjlkMWY3NWQ2Yzk4YzQyYWJlMzUyYzYzNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TYW5k
Ym94RXh0ZW5zaW9uLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgIAogICAgIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9QUk9DRVNTX1NBTkRCT1gpCi0gICAgICAgIEhhbmRsZSog
bV9kYXRhOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFuZGxlW10+IG1fZGF0YTsKICAgICAg
ICAgc2l6ZV90IG1fc2l6ZTsKICNlbHNlCiAgICAgICAgIEhhbmRsZSBtX2VtcHR5SGFuZGxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmlu
ZGV4IDMzZDQwMDA5NDc2OTE1Y2NlZjI2ZjczODAyNDcyYzkzZWRlOWU2ZWYuLjUzZDk2YjgzMTlj
NzE3ZThjNGYxMjBlNDFkZGVhYmE5NjliNWQ4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTg3LDE1ICs4NywxMiBAQCBib29s
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgSGFuZGxlJgogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6
SGFuZGxlQXJyYXkoKQotICAgIDogbV9kYXRhKDApCi0gICAgLCBtX3NpemUoMCkKKyAgICA6IG1f
c2l6ZSgwKQogewogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6fkhhbmRsZUFy
cmF5KCkKIHsKLSAgICBpZiAobV9kYXRhKQotICAgICAgICBkZWxldGVbXSBtX2RhdGE7CiB9CiAK
IHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFsbG9jYXRlKHNpemVfdCBzaXpl
KQpAQCAtMTA1LDcgKzEwMiw3IEBAIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OmFsbG9jYXRlKHNpemVfdCBzaXplKQogCiAgICAgQVNTRVJUKCFtX2RhdGEpOwogCi0gICAgbV9k
YXRhID0gbmV3IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtzaXplXTsKKyAgICBtX2RhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsKICAgICBt
X3NpemUgPSBzaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQppbmRleCAwY2Y2ODAwNzYwMDg0Y2ZmYjJiZDY3OWM3NTI0YTA5ODU0ZDc4ZTQw
Li5mODA4NjdjNDBkN2ZkOTRjMTRkYmJmZjQyMmNjZDVhZGFkNTJhMTU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTM0LDQ1ICszNCw1MiBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2YXRl
U2Vzc2lvbjsKLXN0YXRpYyBTdHJpbmcqIGlkZW50aWZpZXJCYXNlOworc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlU2Vzc2lvbigpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+PiBzZXNzaW9uOworICAgIHJldHVybiBzZXNzaW9uOworfQorCitzdGF0aWMgU3RyaW5nJiBp
ZGVudGlmaWVyQmFzZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gYmFz
ZTsKKyAgICByZXR1cm4gYmFzZTsKK30KICAgICAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25z
dCBTdHJpbmcmIGJhc2UpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGRl
bGV0ZSBpZGVudGlmaWVyQmFzZTsKLQotICAgIGlkZW50aWZpZXJCYXNlID0gbmV3IFN0cmluZyhi
YXNlKTsKKyAgICBpZGVudGlmaWVyQmFzZSgpID0gYmFzZTsKIH0KIAogdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKHByaXZhdGVTZXNzaW9uKQorICAgIGlm
IChwcml2YXRlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZTsK
LSAgICBpZiAoIWlkZW50aWZpZXJCYXNlKQorICAgIGlmIChpZGVudGlmaWVyQmFzZSgpLmlzTnVs
bCgpKQogICAgICAgICBiYXNlID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXTsKICAgICBlbHNlCi0gICAgICAgIGJhc2UgPSAqaWRlbnRpZmllckJhc2U7CisgICAgICAg
IGJhc2UgPSBpZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZVNlc3Npb24gPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSkubGVha1B0
cigpOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBkZWxldGUgcHJpdmF0ZVNlc3Npb247Ci0gICAgcHJp
dmF0ZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiB2
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFs
bENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQpAQCAtODIsOCArODksOCBA
QCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZv
ckFsbENvbnRleHRzKEhUVFBDb29raWVBYwogICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChw
cml2YXRlU2Vzc2lvbikKLSAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHByaXZh
dGVTZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CisgICAgaWYgKHByaXZh
dGVTZXNzaW9uKCkpCisgICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRl
U2Vzc2lvbigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAgICAgCiBib29s
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29u
c3QKQEAgLTExOCw3ICsxMjUsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb247Cisg
ICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDNiOGEwMzhhN2M5Zjk2
ZWNhYmM5MmNkODliNDFhZTZlZDMwMjg0MjIuLmY5NzQzNGE4MGZlYzE3M2VjMjFmZWY0YzdmZmFl
Mjk0ODNiODMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAKQEAgLTMwLDI5ICszMCwzMyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBwcml2
YXRlU2Vzc2lvbjsKK3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PiYgcHJpdmF0ZVNlc3Npb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4gc2Vzc2lvbjsKKyAgICByZXR1cm4gc2Vz
c2lvbjsKK30KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
aWYgKHByaXZhdGVTZXNzaW9uKQorICAgIGlmIChwcml2YXRlU2Vzc2lvbigpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcml2YXRlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLmxlYWtQdHIoKTsKKyAgICBwcml2YXRlU2Vzc2lv
bigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBk
ZWxldGUgcHJpdmF0ZVNlc3Npb247Ci0gICAgcHJpdmF0ZVNlc3Npb24gPSAwOworICAgIHByaXZh
dGVTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKQEAgLTY2LDcgKzcwLDcg
QEAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChX
ZWJGcmFtZSogZnJhbWUpCiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBpZiAoZnJhbWUoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuICpwcml2YXRlU2Vzc2lvbjsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwog
CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CiB9CkBAIC03OSwxMCArODMsOSBAQCB1aW50NjRfdCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Ojppbml0aWF0aW5nUGFnZUlEKCkgY29uc3QKIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Ojp3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFmcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZSgpLT5sb2FkZXIo
KS5jbGllbnQoKSk7CiB9CiAKIH0KLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>