<?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>143970</bug_id>
          
          <creation_ts>2015-04-20 15:39:53 -0700</creation_ts>
          <short_desc>Make Vector(const Vector&lt;T, otherCapacity, otherOverflowBehaviour&gt;&amp;) constructor explicit</short_desc>
          <delta_ts>2015-04-21 09:19:28 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=143925</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086929</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-20 15:39:53 -0700</bug_when>
    <thetext>Make Vector(const Vector&lt;T, otherCapacity, otherOverflowBehaviour&gt;&amp;) constructor explicit as it copies the vector and it is easy to call it by mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086930</commentid>
    <comment_count>1</comment_count>
      <attachid>251195</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-20 15:42:03 -0700</bug_when>
    <thetext>Created attachment 251195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086931</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 15:44:09 -0700</bug_when>
    <thetext>Attachment 251195 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086940</commentid>
    <comment_count>3</comment_count>
      <attachid>251199</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-20 16:14:46 -0700</bug_when>
    <thetext>Created attachment 251199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086942</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 16:16:52 -0700</bug_when>
    <thetext>Attachment 251199 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086950</commentid>
    <comment_count>5</comment_count>
      <attachid>251205</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-20 16:58:05 -0700</bug_when>
    <thetext>Created attachment 251205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086954</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-20 17:00:31 -0700</bug_when>
    <thetext>Attachment 251205 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087051</commentid>
    <comment_count>7</comment_count>
      <attachid>251205</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 08:44:27 -0700</bug_when>
    <thetext>Comment on attachment 251205
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:155
&gt; +        BlockList preOrder = m_graph.blocksInPreOrder();

How about auto?

&gt; Source/WebCore/rendering/RenderGrid.cpp:174
&gt; +                const auto&amp; children = m_grid[row][column];

I think in a case like the the &quot;const&quot; does little good. If the object is already const, then auto&amp; keeps it const. If it’s not already const, then all const does is make it non-modifiable for like one line of code below, at the expense of adding another word! Yuck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087068</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-04-21 09:19:28 -0700</bug_when>
    <thetext>Committed r183065: &lt;http://trac.webkit.org/changeset/183065&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251195</attachid>
            <date>2015-04-20 15:42:03 -0700</date>
            <delta_ts>2015-04-20 16:14:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143970-20150420154101.patch</filename>
            <type>text/plain</type>
            <size>25985</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTg2OTllMGJjNzQyNWI4ZGJjZThlMzU2ZGY0M2IyZWYzN2EyZDkxLi5lYTAzODU1ZmNmMmRlNmNh
MTc2NTdhNDYzYmMzMWEyODQyZDNkYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhl
ck92ZXJmbG93QmVoYXZpb3VyPiYpIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0
b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKQorICAgICAgICBj
b25zdHJ1Y3RvciBleHBsaWNpdCBhcyBpdCBjb3BpZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFz
eSB0byBjYWxsIGl0CisgICAgICAgIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbTo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2Vy
KToKKwogMjAxNS0wNC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBIYXNoTWFwIHN0b3JpbmcgUHJvcGVydHlLZXkgU3RyaW5nSW1wbCogbmVlZCB0
byB1c2UgSWRlbnRpZmllclJlcEhhc2ggdG8gaGFuZGxlIFN5bWJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTg1MTY2MTU2
YjExMzM0YTljNjQxYTk4ZWJkMWYyY2YwYTI0M2Y3Ny4uZDY0OWI2Yzk3Y2YxZTgxNDQzM2ViMDk0
NTQ5OGI2MTM1ZjE3ZjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0yMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZl
Y3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyPiYpIGNvbnN0cnVj
dG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVy
Zmxvd0JlaGF2aW91cj4mKQorICAgICAgICBjb25zdHJ1Y3RvciBleHBsaWNpdCBhcyBpdCBjb3Bp
ZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFzeSB0byBjYWxsIGl0CisgICAgICAgIGJ5IG1pc3Rh
a2UuCisKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJl
ZkNvdW50ZWRBcnJheTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6
CisKIDIwMTUtMDQtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBSZWZQdHIgZG9jdW1lbnRhdGlvbiBhbmQgZGVwcmVjYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA4ZGI4NDhmNDc5NTRmZmNmZmRmODIyNTI0Yjk0ODc2MjQzNjU2MzFkLi5iNzMxN2UxNDdiY2Nk
ODU0MTlhZDk2NDcyNjMzZDgwNDJhZWU0ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDEgQEAK
IDIwMTUtMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBN
YWtlIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0Jl
aGF2aW91cj4mKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3QgVmVjdG9yPFQsIG90aGVy
Q2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikKKyAgICAgICAgY29uc3RydWN0b3Ig
ZXhwbGljaXQgYXMgaXQgY29waWVzIHRoZSB2ZWN0b3IgYW5kIGl0IGlzIGVhc3kgdG8gY2FsbCBp
dAorICAgICAgICBieSBtaXN0YWtlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6
c2V0SW5kZXhlc1JlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6bWluaW11bVJlZ2lzdGVyUmVxdWlyZW1lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtZW50SGFzQ2xhc3Nlcyk6CisgICAgICAgICogY3Nzaml0L1N0YWNrQWxs
b2NhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkSXRlcmF0
b3I6Om5leHRHcmlkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkSXRl
cmF0b3I6OmlzRW1wdHlBcmVhRW5vdWdoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnBhaW50
VHlwZXNGb3JQYWludE9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpmaWxsU3Ryb2tlTWFya2Vycyk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OmFwcGVuZExpZ2F0dXJlR2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENv
bnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKworMjAxNS0wNC0yMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSgp
IGNvcGllcyB0aGUgbV9wYXJzZWRQcm9wZXJ0aWVzIHZlY3RvciBhdCBhZGRQYXJzZWRQcm9wZXJ0
aWVzKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzkyNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDA5NTU1MzEyNzNlYjg1ZDQ0M2Q5MGM2ZWVjMDE0ZDJiMzNj
YjI2ZS4uN2QyNDZlNDA0YzRkYmFkMGRhYjliOWVjMzQyZjQyNjg0MDA3ZDI2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3QgVmVjdG9yPFQsIG90aGVyQ2FwYWNp
dHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgVmVjdG9yKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyPiYpCisg
ICAgICAgIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGFzIGl0IGNvcGllcyB0aGUgdmVjdG9yIGFuZCBp
dCBpcyBlYXN5IHRvIGNhbGwgaXQKKyAgICAgICAgYnkgbWlzdGFrZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhLZXlzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5oOgorCiAyMDE1LTA0LTIwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
IAogICAgICAgICBTaG91bGQgcmVtb3ZlIG1vdXNlRm9yY2VDbGljayBhbmQgbW91c2VGb3JjZUNh
bmNlbGxlZCBmcm9tIERPTSBmb3JjZSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcAppbmRl
eCAyZTk1MmE0MWQwNmRhNGViYTFkYmVjYWE1OThiMzhkNzE1YjA0YjFlLi41NjhkYmI2ODIwZDkw
YzY5OGY4NDEyMDYxOTMxN2U0ODIzYTJkMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZDMyKHVuc2lnbmVkIGNoYXIqJiBwdHIs
IHVuc2lnbmVkIHZhbHVlKQogICAgICoocHRyKyspID0gKHZhbHVlID4+IDI0KSAmIDB4ZmY7CiB9
CiAKLVVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0o
Y29uc3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMpCitVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtOjpVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0
aW9ucykKICAgICA6IG1faW5zdHJ1Y3Rpb25Db3VudChpbnN0cnVjdGlvbnMuc2l6ZSgpKQogewog
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRl
eCA2NjQ5ZWNhNTkzYTNmZjU5YzU3MTExMTRlNzZiYmZjMTg4ZDZjYTAwLi42MzIzYzQ0NGJlZGZh
ZjllYzU1ODZiZDJjNTRkYTFiNTY3MjQ5MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0
aW9uPiYpOworICAgIGV4cGxpY2l0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0oY29uc3QgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYpOwogCiAg
ICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApp
bmRleCBlYTI5ZWI0NzZjY2E5ODM1YmVhOTJhOTlhZGMzMjJhZGE0YThkYjYxLi42OWNmNGIyNzE4
MTZjMDRiODhhNjBkZmNiZTcxNDRmMjk4YzE2OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1ZSwgc3RhY2tPdmVyZmxvdyk7CiAg
ICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOwogCi0gICAgICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKKyAgICAgICAgQmxvY2tM
aXN0IHByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAKICAgICAgICAgaW50
IG1heE51bWJlck9mQXJndW1lbnRzID0gLTE7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBwcmVPcmRlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFy
cmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCBhNTVkN2FlZWFi
ODRiOWM0OTUxOTZlOGUyMzBhMWRjMTc4NTE5M2FiLi43OTg2OWE5ZWQ0YmVhYzI0NjEyM2Y3ODdi
NjcxOTQ0MjZlODAzNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJy
YXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNzIsNyArNzIs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXpl
KGJlZ2luKCksIGVuZCgpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXko
Y29uc3QgVmVjdG9yPFQ+JiBvdGhlcikKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJy
YXkoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhl
cikKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1f
ZGF0YSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5oCmluZGV4IDdkODQyYTg2YTRhNmM3OTRmZmRhZTUwODdiYzFiNGIwYmJk
ODg4MjYuLjI5OGUyOWNiMTdkOGIxMzgxYzAzYjYyMjc5YTIzYzgxOGIzY2JkZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CkBAIC02MzksNyArNjM5LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yKGNvbnN0IFZlY3RvciYp
OwogICAgIHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92ZXJm
bG93QmVoYXZpb3VyPgotICAgIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwg
b3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKTsKKyAgICBleHBsaWNpdCBWZWN0b3IoY29uc3QgVmVj
dG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+Jik7CiAKICAgICBW
ZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3ImKTsKICAgICB0ZW1wbGF0ZTxzaXplX3Qgb3Ro
ZXJDYXBhY2l0eSwgdHlwZW5hbWUgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CmluZGV4IGVlNTM4MWFhMzRhNWVkZWVlYTAyMTVkMzZhNjQ3MmFhYThjN2YyYTQuLmM4MjkyNmFk
OThlZmQyNDI2OGYwMjA2ZGI0NzdkODZlMWEwNDY3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAtMjQ0
LDcgKzI0NCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpwdXQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSCiAgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlUHV0T3BlcmF0aW9uKG9iamVjdFN0b3JlTWV0YWRhdGEsIHZhbHVlLCBrZXksIHB1dE1v
ZGUsIGNhbGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cyk7CiB9CiAKLXZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXMsIDE+JiBpbmRleEtleXMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJEYXRh
YmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyIpOwogICAgIEFTU0VSVChwcnBQcmltYXJ5S2V5KTsK
QEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhLZXlz
KGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgIH0pOwogfQog
Ci12b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykKK3ZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdCwgMT4mIGluZGV4SWRzKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleGVzUmVhZHkiKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmQuaAppbmRleCA0M2UzNmZiZWRjZDJjYWU4MWU1ZGYwNDA1OWMyMDdkMmU4M2JmMTVjLi5m
MjQwNDZhYTg4OGRiZDFkZmZhOTc5NzAyODVjYTAxZTA1NDg4OGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAt
MTA4LDggKzEwOCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAg
ICAgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5k
ZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+Jik7Ci0gICAgdm9pZCBzZXRJbmRleEtleXMo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpOwotICAgIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzKTsKKyAgICB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXMsIDE+Jik7CisgICAgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYg
aW5kZXhJZHMpOwogICAgIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRl
bGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rp
b24uaAppbmRleCAyYjMyMDlhYzc5NGQxOWQzMmI4ODRlOWMxMTc3MGU4OTY1MTBkODdhLi43Yzc2
NGY5ZGRkN2I2ZjRlOTgwMjhhMzM1ZWY2YjFkMWQyZWQ2YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlv
bihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
Q2FsbGJhY2spID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcm9sbGJhY2tUcmFuc2FjdGlvblN5bmMo
aW50NjRfdCB0cmFuc2FjdGlvbklEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhL
ZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0
b3I8UmVmUHRyPElEQktleT4+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRh
dGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSYsIElEQktleSYgcHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3QsIDE+JiBpbmRl
eElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4sIDE+JiBpbmRleEtleXMs
IHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxl
dGlvbkNhbGxiYWNrKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24m
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBs
ZXRpb25DYWxsYmFjaykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChJREJUcmFu
c2FjdGlvbkJhY2tlbmQmLCBjb25zdCBDcmVhdGVJbmRleE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXgg
OGQwNWJmYWFiZGZmZGQ2NTQ0NzgwNDVkMmIzZjZlNjhhYjRkMjNiYy4uODg4ZDExZmUwYjQ3ZWVh
MTk3ODk1ZWVlNDljMDVmMWJjMzZjZDVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRB
dHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJp
YnV0ZUNhc2VTZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5zaXRpdml0eSwgSlNDOjpGdW5jdGlvblB0
ciBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0ciBjYXNlSW5zZW5zaXRpdmVUZXN0
KTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBjb25zdCBDU1NTZWxlY3RvciYgdGFnTWF0Y2hpbmdTZWxlY3Rvcik7
CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNJZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZFRvTWF0Y2gpOwotICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzQ2xh
c3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0
ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwqPiYgY2xhc3NOYW1lcyk7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxl
bWVudERhdGFBZGRyZXNzLCBjb25zdCBWZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDg+
JiBjbGFzc05hbWVzKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzTGluayhBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNOdGhD
aGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJh
Z21lbnQmKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzTnRoQ2hpbGRPZihBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKQEAgLTEw
OTIsNyArMTA5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtUmVxdWlyZWRSZWdp
c3RlckNvdW50Rm9yTnRoQ2hpbGRGaWx0ZXIgPSA2Owogc3RhdGljIHVuc2lnbmVkIG1pbmltdW1S
ZWdpc3RlclJlcXVpcmVtZW50cyhjb25zdCBTZWxlY3RvckZyYWdtZW50JiBzZWxlY3RvckZyYWdt
ZW50KQogewogICAgIHVuc2lnbmVkIG1pbmltdW0gPSBtaW5pbXVtUmVxdWlyZWRSZWdpc3RlckNv
dW50OwotICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGVNYXRjaGluZ0luZm8+JiBhdHRyaWJ1dGVz
ID0gc2VsZWN0b3JGcmFnbWVudC5hdHRyaWJ1dGVzOworICAgIGNvbnN0IGF1dG8mIGF0dHJpYnV0
ZXMgPSBzZWxlY3RvckZyYWdtZW50LmF0dHJpYnV0ZXM7CiAKICAgICAvLyBBdHRyaWJ1dGVzIGNh
dXNlIHNvbWUgcmVnaXN0ZXIgcHJlc3N1cmUuCiAgICAgdW5zaWduZWQgYXR0cmlidXRlQ291bnQg
PSBhdHRyaWJ1dGVzLnNpemUoKTsKQEAgLTM1MzAsNyArMzUzMCw3IEBAIHZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNJZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWlsdXJlQ2FzCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hQdHIo
QXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnREYXRhQWRkcmVz
cywgRWxlbWVudERhdGE6OmlkRm9yU3R5bGVSZXNvbHV0aW9uTWVtb3J5T2Zmc2V0KCkpLCBpZFRv
TWF0Y2hSZWdpc3RlcikpOwogfQogCi12b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVFbGVtZW50SGFzQ2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNv
bnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0
IEF0b21pY1N0cmluZ0ltcGwqPiYgY2xhc3NOYW1lcykKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBW
ZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDg+JiBjbGFzc05hbWVzKQogewogICAgIC8v
IExvYWQgbV9jbGFzc05hbWVzLgogICAgIExvY2FsUmVnaXN0ZXIgc3BhY2VTcGxpdFN0cmluZ0Rh
dGEobV9yZWdpc3RlckFsbG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvU3RhY2tBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRv
ci5oCmluZGV4IDJjNmFkYTVhZGMxNmUzNjI0MzU5NzViYmY2NGY0MTliZDMzNTdiZWIuLmE1ODU0
ZDI0NzQwYTM4M2UyMWUyZDU3OWUwOGZlYzUzN2E3NjhhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2pp
dC9TdGFja0FsbG9jYXRvci5oCkBAIC0xMDAsNyArMTAwLDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gc3RhY2tSZWZlcmVuY2VzOwogICAgIH0KIAotICAgIFN0YWNrUmVmZXJlbmNlVmVjdG9y
IHB1c2goY29uc3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+JiByZWdp
c3RlcklEcykKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4KKyAgICBTdGFja1JlZmVyZW5jZVZlY3RvciBwdXNoKGNvbnN0IFZlY3Rv
cjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyPiYgcmVnaXN0ZXJJRHMpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nKTsKIApAQCAtMTM0LDcgKzEzNSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFN0YWNrUmVmZXJlbmNlKG1fb2Zmc2V0RnJvbVRvcCk7CiAgICAgfQog
Ci0gICAgdm9pZCBwb3AoY29uc3QgU3RhY2tSZWZlcmVuY2VWZWN0b3ImIHN0YWNrUmVmZXJlbmNl
cywgY29uc3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+JiByZWdpc3Rl
cklEcykKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlcj4KKyAgICB2b2lkIHBvcChjb25zdCBTdGFja1JlZmVyZW5jZVZlY3RvciYgc3Rh
Y2tSZWZlcmVuY2VzLCBjb25zdCBWZWN0b3I8SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHJlZ2lzdGVySURzKQogICAgIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faGFzRnVuY3Rpb25DYWxsUGFkZGluZyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBjMDBkZjU4MGZjYzg1NmQz
ZDc5ZWVlZTgyNzdmMWVkNTQwNTU2YjI4Li4zMzk5MDZiZjFmNjNkMmQ1NWMxOTliMWFjNjE5MTUw
ZGJhYjgwNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCYgdmFyeWluZ1RyYWNrSW5k
ZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5J
bmRleDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9ICht
X2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0uc2l6
ZSgpOwogICAgICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFj
a0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8
UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29sdW1uSW5kZXhd
OworICAgICAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBtX2dyaWRbbV9yb3dJbmRleF1b
bV9jb2x1bW5JbmRleF07CiAgICAgICAgICAgICBpZiAobV9jaGlsZEluZGV4IDwgY2hpbGRyZW4u
c2l6ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlblttX2NoaWxkSW5kZXgrK107
CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFRoaXMgYWRkcyBhIE8o
Tl4yKSBiZWhhdmlvciB0aGF0IHNob3VsZG4ndCBiZSBhIGJpZyBkZWFsIGFzIHdlIGV4cGVjdCBz
cGFubmluZyBhcmVhcyB0byBiZSBzbWFsbC4KICAgICAgICAgZm9yICh1bnNpZ25lZCByb3cgPSBt
X3Jvd0luZGV4OyByb3cgPCBtYXhSb3dzOyArK3JvdykgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2x1bW4gPSBtX2NvbHVtbkluZGV4OyBjb2x1bW4gPCBtYXhDb2x1bW5zOyArK2NvbHVt
bikgewotICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgY2hpbGRyZW4g
PSBtX2dyaWRbcm93XVtjb2x1bW5dOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNoaWxk
cmVuID0gbV9ncmlkW3Jvd11bY29sdW1uXTsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkcmVu
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5jcHAKaW5kZXggYTg2NDkxMjRlODIxYzBiNTI2MWVhYzUwNzUyZTFhMGVjMzRiZWY5NS4uZGY3
OWFmZjY1ZTdiOGEzMjY4MzI3N2Y0ZDhhY2I1Mzk4YTZhOTc3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZH
UmVuZGVyU3R5bGUqIG90aGVyKQogICAgIHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJjZXM7CiB9
CiAKLVZlY3RvcjxQYWludFR5cGU+IFNWR1JlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRP
cmRlcigpIGNvbnN0CitWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRU
eXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdAogewogICAgIFZlY3RvcjxQYWludFR5cGUsIDM+IHBh
aW50T3JkZXI7CiAgICAgc3dpdGNoICh0aGlzLT5wYWludE9yZGVyKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5kZXggYmRkYWZmNDJh
MjI1NWYxNDM5ZDhiYmQ1MWZkZDdmYWVkMWQ1ZTk1Ny4uYmY5N2FjZTE3ZTQ1OTg0MTVkZTA1ZWEx
NTAxYThkOWI4MTUwNzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmgKQEAgLTM3OSw3ICszNzksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IG1hcmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5t
YXJrZXJFbmQ7IH0KICAgICBFTWFza1R5cGUgbWFza1R5cGUoKSBjb25zdCB7IHJldHVybiAoRU1h
c2tUeXBlKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGU7IH0KICAgICBQYWludE9y
ZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgc3ZnX2luaGVyaXRl
ZF9mbGFncy5wYWludE9yZGVyOyB9Ci0gICAgVmVjdG9yPFBhaW50VHlwZT4gcGFpbnRUeXBlc0Zv
clBhaW50T3JkZXIoKSBjb25zdDsKKyAgICBWZWN0b3I8UGFpbnRUeXBlLCAzPiBwYWludFR5cGVz
Rm9yUGFpbnRPcmRlcigpIGNvbnN0OwogCiAgICAgY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlw
ZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRl
ZExpbmtQYWludFR5cGU7IH0KICAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBl
ZjNjZWEzNjFhNTQwYTY1NTUzYzQxYzA1MTU1NDE2ODM5MjQ3ZGIyLi43YTFjYWM4NjYzYzQzNTIy
OTdlZTllYzg2ZDRlNDNmY2MwNmI5NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgUmVuZGVy
U1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIAogdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5m
bykKIHsKLSAgICBWZWN0b3I8UGFpbnRUeXBlPiBwYWludE9yZGVyID0gc3R5bGUoKS5zdmdTdHls
ZSgpLnBhaW50VHlwZXNGb3JQYWludE9yZGVyKCk7CisgICAgYXV0byBwYWludE9yZGVyID0gc3R5
bGUoKS5zdmdTdHlsZSgpLnBhaW50VHlwZXNGb3JQYWludE9yZGVyKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgc3dpdGNo
IChwYWludE9yZGVyLmF0KGkpKSB7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4
IGFjZTZmYzE5MzAwMzdmZTVmMTZmMzI1MzNhYzNkMzVmODJiNjQwYzQuLjgzYjE3NWRmYzU0ODRl
YTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0
aW9uT3ZlcmxpbmUpCiAgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRl
eHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZyYWdtZW50KTsKIAotICAgICAgICBWZWN0b3I8
UGFpbnRUeXBlPiBwYWludE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFp
bnRPcmRlcigpOworICAgICAgICBhdXRvIHBhaW50T3JkZXIgPSBzdHlsZS5zdmdTdHlsZSgpLnBh
aW50VHlwZXNGb3JQYWludE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYWludE9yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBhaW50T3Jk
ZXIuYXQoaSkpIHsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBhNGZmZDI4ZGVmOTM0
Yzg2ZjExYmE0NjYxMGZmZTVmM2E3MGU0YzkxLi5hOWI2ZjQ2ZGM0ZGVkNWY5OTNhNzkzN2Y4MDkx
NWJiZGJlMzM4MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwCkBAIC0xMzAwLDcgKzEzMDAsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRl
cjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQogICAgIGZvciAoYXV0byBjb2RlcG9pbnQgOiBsaWdh
dHVyZUNvZGVwb2ludHMpIHsKICAgICAgICAgYXV0byBjb2RlcG9pbnRzID0gY29kZXBvaW50VG9T
dHJpbmcoY29kZXBvaW50KTsKICAgICAgICAgaWYgKCFjb2RlcG9pbnRzLmlzTnVsbCgpKQotICAg
ICAgICAgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShWZWN0b3I8Y2hhciwgMTc+KG1fZW1w
dHlHbHlwaENoYXJTdHJpbmcpLCBudWxscHRyLCBtX3VuaXRzUGVyRW0sIG1fdW5pdHNQZXJFbSwg
RmxvYXRSZWN0KCksIGNvZGVwb2ludHMpKTsKKyAgICAgICAgICAgIG1fZ2x5cGhzLmFwcGVuZChH
bHlwaERhdGEoVmVjdG9yPGNoYXI+KG1fZW1wdHlHbHlwaENoYXJTdHJpbmcpLCBudWxscHRyLCBt
X3VuaXRzUGVyRW0sIG1fdW5pdHNQZXJFbSwgRmxvYXRSZWN0KCksIGNvZGVwb2ludHMpKTsKICAg
ICB9CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZH
VG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAg
ICBpZiAobV9taXNzaW5nR2x5cGhFbGVtZW50KQogICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50
KCptX21pc3NpbmdHbHlwaEVsZW1lbnQsIG51bGxwdHIsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5j
ZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgU3RyaW5nKCksIGluaXRpYWxHbHlwaCk7CiAgICAg
ZWxzZQotICAgICAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFZlY3RvcjxjaGFyLCAxNz4o
bV9lbXB0eUdseXBoQ2hhclN0cmluZyksIG51bGxwdHIsIG1fdW5pdHNQZXJFbSwgbV91bml0c1Bl
ckVtLCBGbG9hdFJlY3QoKSwgU3RyaW5nKCkpKTsKKyAgICAgICAgbV9nbHlwaHMuYXBwZW5kKEds
eXBoRGF0YShWZWN0b3I8Y2hhcj4obV9lbXB0eUdseXBoQ2hhclN0cmluZyksIG51bGxwdHIsIG1f
dW5pdHNQZXJFbSwgbV91bml0c1BlckVtLCBGbG9hdFJlY3QoKSwgU3RyaW5nKCkpKTsKIAogICAg
IGZvciAoYXV0byYgZ2x5cGhFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHR2x5cGhFbGVtZW50
PihtX2ZvbnRFbGVtZW50KSkgewogICAgICAgICBhdXRvJiB1bmljb2RlQXR0cmlidXRlID0gZ2x5
cGhFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnVuaWNvZGVBdHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2NzVlYjY0MTBk
YjBjYjBiYjk3MWVjYzUyNTNhZTMyYTEyYmQ5MWVmLi4wZTA3YjJmMjM4OTBiOTgzN2Q3NGRlNjhi
N2QzMjFlYzgxYjA4Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
Ojpyb2xsYmFja1RyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpCiAgICAgcmV0
dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhL
ZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0
b3I8UmVmUHRyPElEQktleT4+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGlu
dDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiwgSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdCwg
MT4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+
PiwgMT4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaAppbmRleCBmNjBkNjcyNGJmMTU0ZGI0ZWUxNzM4NjMw
YTUyOTUzNTZhOTk2OWFhLi4wYWVlY2RjOWUzNmI2YmU2YjllYjk5M2U3NDYwZmNkODhiNzM1YzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByb2xsYmFja1RyYW5zYWN0aW9uKGlu
dDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2Fs
bGJhY2spIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByb2xsYmFja1RyYW5zYWN0aW9uU3lu
YyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiwgV2ViQ29yZTo6SURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+Pj4mIGlu
ZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlE
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0
YWRhdGEmLCBXZWJDb3JlOjpJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90
LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktl
eT4+LCAxPiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5k
ZXgoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRl
SW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251199</attachid>
            <date>2015-04-20 16:14:46 -0700</date>
            <delta_ts>2015-04-20 16:58:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143970-20150420161345.patch</filename>
            <type>text/plain</type>
            <size>25985</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTg2OTllMGJjNzQyNWI4ZGJjZThlMzU2ZGY0M2IyZWYzN2EyZDkxLi5lYTAzODU1ZmNmMmRlNmNh
MTc2NTdhNDYzYmMzMWEyODQyZDNkYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhl
ck92ZXJmbG93QmVoYXZpb3VyPiYpIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0
b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKQorICAgICAgICBj
b25zdHJ1Y3RvciBleHBsaWNpdCBhcyBpdCBjb3BpZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFz
eSB0byBjYWxsIGl0CisgICAgICAgIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbTo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2Vy
KToKKwogMjAxNS0wNC0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBIYXNoTWFwIHN0b3JpbmcgUHJvcGVydHlLZXkgU3RyaW5nSW1wbCogbmVlZCB0
byB1c2UgSWRlbnRpZmllclJlcEhhc2ggdG8gaGFuZGxlIFN5bWJvbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMTg1MTY2MTU2
YjExMzM0YTljNjQxYTk4ZWJkMWYyY2YwYTI0M2Y3Ny4uZDY0OWI2Yzk3Y2YxZTgxNDQzM2ViMDk0
NTQ5OGI2MTM1ZjE3ZjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0yMCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZl
Y3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyPiYpIGNvbnN0cnVj
dG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDM5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVy
Zmxvd0JlaGF2aW91cj4mKQorICAgICAgICBjb25zdHJ1Y3RvciBleHBsaWNpdCBhcyBpdCBjb3Bp
ZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFzeSB0byBjYWxsIGl0CisgICAgICAgIGJ5IG1pc3Rh
a2UuCisKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJl
ZkNvdW50ZWRBcnJheTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6
CisKIDIwMTUtMDQtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFVwZGF0ZSBSZWZQdHIgZG9jdW1lbnRhdGlvbiBhbmQgZGVwcmVjYXRpb24KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA4ZGI4NDhmNDc5NTRmZmNmZmRmODIyNTI0Yjk0ODc2MjQzNjU2MzFkLi5iNzMxN2UxNDdiY2Nk
ODU0MTlhZDk2NDcyNjMzZDgwNDJhZWU0ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDEgQEAK
IDIwMTUtMDQtMjAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAorICAgICAgICBN
YWtlIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0Jl
aGF2aW91cj4mKSBjb25zdHJ1Y3RvciBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3QgVmVjdG9yPFQsIG90aGVy
Q2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikKKyAgICAgICAgY29uc3RydWN0b3Ig
ZXhwbGljaXQgYXMgaXQgY29waWVzIHRoZSB2ZWN0b3IgYW5kIGl0IGlzIGVhc3kgdG8gY2FsbCBp
dAorICAgICAgICBieSBtaXN0YWtlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZDo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6
c2V0SW5kZXhlc1JlYWR5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6bWluaW11bVJlZ2lzdGVyUmVxdWlyZW1lbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtZW50SGFzQ2xhc3Nlcyk6CisgICAgICAgICogY3Nzaml0L1N0YWNrQWxs
b2NhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cHVzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkSXRlcmF0
b3I6Om5leHRHcmlkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpHcmlkSXRl
cmF0b3I6OmlzRW1wdHlBcmVhRW5vdWdoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OnBhaW50
VHlwZXNGb3JQYWludE9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpmaWxsU3Ryb2tlTWFya2Vycyk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKiBzdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OmFwcGVuZExpZ2F0dXJlR2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENv
bnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKworMjAxNS0wNC0yMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSgp
IGNvcGllcyB0aGUgbV9wYXJzZWRQcm9wZXJ0aWVzIHZlY3RvciBhdCBhZGRQYXJzZWRQcm9wZXJ0
aWVzKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzkyNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDA5NTU1MzEyNzNlYjg1ZDQ0M2Q5MGM2ZWVjMDE0ZDJiMzNj
YjI2ZS4uN2QyNDZlNDA0YzRkYmFkMGRhYjliOWVjMzQyZjQyNjg0MDA3ZDI2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3QgVmVjdG9yPFQsIG90aGVyQ2FwYWNp
dHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikgY29uc3RydWN0b3IgZXhwbGljaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mzk3MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgVmVjdG9yKGNv
bnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyPiYpCisg
ICAgICAgIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGFzIGl0IGNvcGllcyB0aGUgdmVjdG9yIGFuZCBp
dCBpcyBlYXN5IHRvIGNhbGwgaXQKKyAgICAgICAgYnkgbWlzdGFrZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhLZXlzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5oOgorCiAyMDE1LTA0LTIwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4K
IAogICAgICAgICBTaG91bGQgcmVtb3ZlIG1vdXNlRm9yY2VDbGljayBhbmQgbW91c2VGb3JjZUNh
bmNlbGxlZCBmcm9tIERPTSBmb3JjZSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcAppbmRl
eCAyZTk1MmE0MWQwNmRhNGViYTFkYmVjYWE1OThiMzhkNzE1YjA0YjFlLi41NjhkYmI2ODIwZDkw
YzY5OGY4NDEyMDYxOTMxN2U0ODIzYTJkMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZDMyKHVuc2lnbmVkIGNoYXIqJiBwdHIs
IHVuc2lnbmVkIHZhbHVlKQogICAgICoocHRyKyspID0gKHZhbHVlID4+IDI0KSAmIDB4ZmY7CiB9
CiAKLVVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0o
Y29uc3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMpCitVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtOjpVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mIGluc3RydWN0
aW9ucykKICAgICA6IG1faW5zdHJ1Y3Rpb25Db3VudChpbnN0cnVjdGlvbnMuc2l6ZSgpKQogewog
ICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAppbmRl
eCA2NjQ5ZWNhNTkzYTNmZjU5YzU3MTExMTRlNzZiYmZjMTg4ZDZjYTAwLi42MzIzYzQ0NGJlZGZh
ZjllYzU1ODZiZDJjNTRkYTFiNTY3MjQ5MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0
aW9uPiYpOworICAgIGV4cGxpY2l0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0oY29uc3QgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiYpOwogCiAg
ICAgdW5zaWduZWQgY291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApp
bmRleCBlYTI5ZWI0NzZjY2E5ODM1YmVhOTJhOTlhZGMzMjJhZGE0YThkYjYxLi42OWNmNGIyNzE4
MTZjMDRiODhhNjBkZmNiZTcxNDRmMjk4YzE2OGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9wcm9sb2d1ZSwgc3RhY2tPdmVyZmxvdyk7CiAg
ICAgICAgIGNyZWF0ZVBoaVZhcmlhYmxlcygpOwogCi0gICAgICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKKyAgICAgICAgQmxvY2tM
aXN0IHByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAKICAgICAgICAgaW50
IG1heE51bWJlck9mQXJndW1lbnRzID0gLTE7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBwcmVPcmRlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFy
cmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAppbmRleCBhNTVkN2FlZWFi
ODRiOWM0OTUxOTZlOGUyMzBhMWRjMTc4NTE5M2FiLi43OTg2OWE5ZWQ0YmVhYzI0NjEyM2Y3ODdi
NjcxOTQ0MjZlODAzNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJy
YXkuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaApAQCAtNzIsNyArNzIs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXpl
KGJlZ2luKCksIGVuZCgpKTsKICAgICB9CiAKLSAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXko
Y29uc3QgVmVjdG9yPFQ+JiBvdGhlcikKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJy
YXkoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhl
cikKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1f
ZGF0YSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5oCmluZGV4IDdkODQyYTg2YTRhNmM3OTRmZmRhZTUwODdiYzFiNGIwYmJk
ODg4MjYuLjI5OGUyOWNiMTdkOGIxMzgxYzAzYjYyMjc5YTIzYzgxOGIzY2JkZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CkBAIC02MzksNyArNjM5LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yKGNvbnN0IFZlY3RvciYp
OwogICAgIHRlbXBsYXRlPHNpemVfdCBvdGhlckNhcGFjaXR5LCB0eXBlbmFtZSBvdGhlck92ZXJm
bG93QmVoYXZpb3VyPgotICAgIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJDYXBhY2l0eSwg
b3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKTsKKyAgICBleHBsaWNpdCBWZWN0b3IoY29uc3QgVmVj
dG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+Jik7CiAKICAgICBW
ZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3ImKTsKICAgICB0ZW1wbGF0ZTxzaXplX3Qgb3Ro
ZXJDYXBhY2l0eSwgdHlwZW5hbWUgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CmluZGV4IGVlNTM4MWFhMzRhNWVkZWVlYTAyMTVkMzZhNjQ3MmFhYThjN2YyYTQuLmM4MjkyNmFk
OThlZmQyNDI2OGYwMjA2ZGI0NzdkODZlMWEwNDY3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAtMjQ0
LDcgKzI0NCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpwdXQoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSCiAgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlUHV0T3BlcmF0aW9uKG9iamVjdFN0b3JlTWV0YWRhdGEsIHZhbHVlLCBrZXksIHB1dE1v
ZGUsIGNhbGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cyk7CiB9CiAKLXZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlz
KQordm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXMsIDE+JiBpbmRleEtleXMpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJJREJEYXRh
YmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyIpOwogICAgIEFTU0VSVChwcnBQcmltYXJ5S2V5KTsK
QEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhLZXlz
KGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgIH0pOwogfQog
Ci12b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcykKK3ZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90LCBjb25zdCBWZWN0b3I8aW50NjRfdCwgMT4mIGluZGV4SWRzKQogewogICAgIExP
RyhTdG9yYWdlQVBJLCAiSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleGVzUmVhZHkiKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmQuaAppbmRleCA0M2UzNmZiZWRjZDJjYWU4MWU1ZGYwNDA1OWMyMDdkMmU4M2JmMTVjLi5m
MjQwNDZhYTg4OGRiZDFkZmZhOTc5NzAyODVjYTAxZTA1NDg4OGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAt
MTA4LDggKzEwOCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0KGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBib29sIGtleU9ubHksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAg
ICAgdm9pZCBwdXQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5k
ZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+Jik7Ci0gICAgdm9pZCBzZXRJbmRleEtleXMo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYpOwotICAgIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SWRzKTsKKyAgICB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXMsIDE+Jik7CisgICAgdm9pZCBzZXRJbmRleGVzUmVhZHkoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYg
aW5kZXhJZHMpOwogICAgIHZvaWQgb3BlbkN1cnNvcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIGJvb2wga2V5T25seSwgVGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBjb3VudChpbnQ2NF90IHRyYW5z
YWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRl
bGV0ZVJhbmdlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rp
b24uaAppbmRleCAyYjMyMDlhYzc5NGQxOWQzMmI4ODRlOWMxMTc3MGU4OTY1MTBkODdhLi43Yzc2
NGY5ZGRkN2I2ZjRlOTgwMjhhMzM1ZWY2YjFkMWQyZWQ2YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcm9sbGJhY2tUcmFuc2FjdGlv
bihpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9u
Q2FsbGJhY2spID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcm9sbGJhY2tUcmFuc2FjdGlvblN5bmMo
aW50NjRfdCB0cmFuc2FjdGlvbklEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhL
ZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0
b3I8UmVmUHRyPElEQktleT4+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IGRh
dGFiYXNlSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSYsIElEQktleSYgcHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3QsIDE+JiBpbmRl
eElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4sIDE+JiBpbmRleEtleXMs
IHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxl
dGlvbkNhbGxiYWNrKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24m
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBs
ZXRpb25DYWxsYmFjaykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChJREJUcmFu
c2FjdGlvbkJhY2tlbmQmLCBjb25zdCBDcmVhdGVJbmRleE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXgg
OGQwNWJmYWFiZGZmZGQ2NTQ0NzgwNDVkMmIzZjZlNjhhYjRkMjNiYy4uODg4ZDExZmUwYjQ3ZWVh
MTk3ODk1ZWVlNDljMDVmMWJjMzZjZDVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
aml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRB
dHRyaWJ1dGVBZGRyZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV4cGVjdGVkVmFsdWUsIEF0dHJp
YnV0ZUNhc2VTZW5zaXRpdml0eSB2YWx1ZUNhc2VTZW5zaXRpdml0eSwgSlNDOjpGdW5jdGlvblB0
ciBjYXNlU2Vuc2l0aXZlVGVzdCwgSlNDOjpGdW5jdGlvblB0ciBjYXNlSW5zZW5zaXRpdmVUZXN0
KTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1ibGVyOjpKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBjb25zdCBDU1NTZWxlY3RvciYgdGFnTWF0Y2hpbmdTZWxlY3Rvcik7
CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNJZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZFRvTWF0Y2gpOwotICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzQ2xh
c3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0
ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmluZ0lt
cGwqPiYgY2xhc3NOYW1lcyk7CisgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxl
bWVudERhdGFBZGRyZXNzLCBjb25zdCBWZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDg+
JiBjbGFzc05hbWVzKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzTGluayhBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SXNOdGhD
aGlsZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJh
Z21lbnQmKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzTnRoQ2hpbGRPZihBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKQEAgLTEw
OTIsNyArMTA5Miw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtUmVxdWlyZWRSZWdp
c3RlckNvdW50Rm9yTnRoQ2hpbGRGaWx0ZXIgPSA2Owogc3RhdGljIHVuc2lnbmVkIG1pbmltdW1S
ZWdpc3RlclJlcXVpcmVtZW50cyhjb25zdCBTZWxlY3RvckZyYWdtZW50JiBzZWxlY3RvckZyYWdt
ZW50KQogewogICAgIHVuc2lnbmVkIG1pbmltdW0gPSBtaW5pbXVtUmVxdWlyZWRSZWdpc3RlckNv
dW50OwotICAgIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGVNYXRjaGluZ0luZm8+JiBhdHRyaWJ1dGVz
ID0gc2VsZWN0b3JGcmFnbWVudC5hdHRyaWJ1dGVzOworICAgIGNvbnN0IGF1dG8mIGF0dHJpYnV0
ZXMgPSBzZWxlY3RvckZyYWdtZW50LmF0dHJpYnV0ZXM7CiAKICAgICAvLyBBdHRyaWJ1dGVzIGNh
dXNlIHNvbWUgcmVnaXN0ZXIgcHJlc3N1cmUuCiAgICAgdW5zaWduZWQgYXR0cmlidXRlQ291bnQg
PSBhdHRyaWJ1dGVzLnNpemUoKTsKQEAgLTM1MzAsNyArMzUzMCw3IEBAIHZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNJZChBc3NlbWJsZXI6Okp1bXBMaXN0JiBm
YWlsdXJlQ2FzCiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hQdHIo
QXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnREYXRhQWRkcmVz
cywgRWxlbWVudERhdGE6OmlkRm9yU3R5bGVSZXNvbHV0aW9uTWVtb3J5T2Zmc2V0KCkpLCBpZFRv
TWF0Y2hSZWdpc3RlcikpOwogfQogCi12b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVFbGVtZW50SGFzQ2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNv
bnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0
IEF0b21pY1N0cmluZ0ltcGwqPiYgY2xhc3NOYW1lcykKK3ZvaWQgU2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1
cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNzLCBjb25zdCBW
ZWN0b3I8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIDg+JiBjbGFzc05hbWVzKQogewogICAgIC8v
IExvYWQgbV9jbGFzc05hbWVzLgogICAgIExvY2FsUmVnaXN0ZXIgc3BhY2VTcGxpdFN0cmluZ0Rh
dGEobV9yZWdpc3RlckFsbG9jYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Nq
aXQvU3RhY2tBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRv
ci5oCmluZGV4IDJjNmFkYTVhZGMxNmUzNjI0MzU5NzViYmY2NGY0MTliZDMzNTdiZWIuLmE1ODU0
ZDI0NzQwYTM4M2UyMWUyZDU3OWUwOGZlYzUzN2E3NjhhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzc2ppdC9TdGFja0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2pp
dC9TdGFja0FsbG9jYXRvci5oCkBAIC0xMDAsNyArMTAwLDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gc3RhY2tSZWZlcmVuY2VzOwogICAgIH0KIAotICAgIFN0YWNrUmVmZXJlbmNlVmVjdG9y
IHB1c2goY29uc3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+JiByZWdp
c3RlcklEcykKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4KKyAgICBTdGFja1JlZmVyZW5jZVZlY3RvciBwdXNoKGNvbnN0IFZlY3Rv
cjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyPiYgcmVnaXN0ZXJJRHMpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nKTsKIApAQCAtMTM0LDcgKzEzNSw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFN0YWNrUmVmZXJlbmNlKG1fb2Zmc2V0RnJvbVRvcCk7CiAgICAgfQog
Ci0gICAgdm9pZCBwb3AoY29uc3QgU3RhY2tSZWZlcmVuY2VWZWN0b3ImIHN0YWNrUmVmZXJlbmNl
cywgY29uc3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+JiByZWdpc3Rl
cklEcykKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJm
bG93SGFuZGxlcj4KKyAgICB2b2lkIHBvcChjb25zdCBTdGFja1JlZmVyZW5jZVZlY3RvciYgc3Rh
Y2tSZWZlcmVuY2VzLCBjb25zdCBWZWN0b3I8SlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJ
RCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHJlZ2lzdGVySURzKQogICAgIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faGFzRnVuY3Rpb25DYWxsUGFkZGluZyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBjMDBkZjU4MGZjYzg1NmQz
ZDc5ZWVlZTgyNzdmMWVkNTQwNTU2YjI4Li4zMzk5MDZiZjFmNjNkMmQ1NWMxOTliMWFjNjE5MTUw
ZGJhYjgwNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0x
NTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCYgdmFyeWluZ1RyYWNrSW5k
ZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5J
bmRleDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9ICht
X2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0uc2l6
ZSgpOwogICAgICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFj
a0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I8
UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29sdW1uSW5kZXhd
OworICAgICAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBtX2dyaWRbbV9yb3dJbmRleF1b
bV9jb2x1bW5JbmRleF07CiAgICAgICAgICAgICBpZiAobV9jaGlsZEluZGV4IDwgY2hpbGRyZW4u
c2l6ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlblttX2NoaWxkSW5kZXgrK107
CiAKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFRoaXMgYWRkcyBhIE8o
Tl4yKSBiZWhhdmlvciB0aGF0IHNob3VsZG4ndCBiZSBhIGJpZyBkZWFsIGFzIHdlIGV4cGVjdCBz
cGFubmluZyBhcmVhcyB0byBiZSBzbWFsbC4KICAgICAgICAgZm9yICh1bnNpZ25lZCByb3cgPSBt
X3Jvd0luZGV4OyByb3cgPCBtYXhSb3dzOyArK3JvdykgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBjb2x1bW4gPSBtX2NvbHVtbkluZGV4OyBjb2x1bW4gPCBtYXhDb2x1bW5zOyArK2NvbHVt
bikgewotICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgY2hpbGRyZW4g
PSBtX2dyaWRbcm93XVtjb2x1bW5dOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNoaWxk
cmVuID0gbV9ncmlkW3Jvd11bY29sdW1uXTsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkcmVu
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5jcHAKaW5kZXggYTg2NDkxMjRlODIxYzBiNTI2MWVhYzUwNzUyZTFhMGVjMzRiZWY5NS4uZGY3
OWFmZjY1ZTdiOGEzMjY4MzI3N2Y0ZDhhY2I1Mzk4YTZhOTc3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBTVkdSZW5kZXJTdHlsZTo6Y29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgU1ZH
UmVuZGVyU3R5bGUqIG90aGVyKQogICAgIHJlc291cmNlcyA9IG90aGVyLT5yZXNvdXJjZXM7CiB9
CiAKLVZlY3RvcjxQYWludFR5cGU+IFNWR1JlbmRlclN0eWxlOjpwYWludFR5cGVzRm9yUGFpbnRP
cmRlcigpIGNvbnN0CitWZWN0b3I8UGFpbnRUeXBlLCAzPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRU
eXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdAogewogICAgIFZlY3RvcjxQYWludFR5cGUsIDM+IHBh
aW50T3JkZXI7CiAgICAgc3dpdGNoICh0aGlzLT5wYWludE9yZGVyKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5kZXggYmRkYWZmNDJh
MjI1NWYxNDM5ZDhiYmQ1MWZkZDdmYWVkMWQ1ZTk1Ny4uYmY5N2FjZTE3ZTQ1OTg0MTVkZTA1ZWEx
NTAxYThkOWI4MTUwNzlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmgKQEAgLTM3OSw3ICszNzksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IG1hcmtlckVuZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkUmVzb3VyY2VzLT5t
YXJrZXJFbmQ7IH0KICAgICBFTWFza1R5cGUgbWFza1R5cGUoKSBjb25zdCB7IHJldHVybiAoRU1h
c2tUeXBlKSBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYubWFza1R5cGU7IH0KICAgICBQYWludE9y
ZGVyIHBhaW50T3JkZXIoKSBjb25zdCB7IHJldHVybiAoUGFpbnRPcmRlcikgc3ZnX2luaGVyaXRl
ZF9mbGFncy5wYWludE9yZGVyOyB9Ci0gICAgVmVjdG9yPFBhaW50VHlwZT4gcGFpbnRUeXBlc0Zv
clBhaW50T3JkZXIoKSBjb25zdDsKKyAgICBWZWN0b3I8UGFpbnRUeXBlLCAzPiBwYWludFR5cGVz
Rm9yUGFpbnRPcmRlcigpIGNvbnN0OwogCiAgICAgY29uc3QgU1ZHUGFpbnQ6OlNWR1BhaW50VHlw
ZSYgdmlzaXRlZExpbmtGaWxsUGFpbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gZmlsbC0+dmlzaXRl
ZExpbmtQYWludFR5cGU7IH0KICAgICBjb25zdCBDb2xvciYgdmlzaXRlZExpbmtGaWxsUGFpbnRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRDb2xvcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBl
ZjNjZWEzNjFhNTQwYTY1NTUzYzQxYzA1MTU1NDE2ODM5MjQ3ZGIyLi43YTFjYWM4NjYzYzQzNTIy
OTdlZTllYzg2ZDRlNDNmY2MwNmI5NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgUmVuZGVy
U1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIAogdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5m
bykKIHsKLSAgICBWZWN0b3I8UGFpbnRUeXBlPiBwYWludE9yZGVyID0gc3R5bGUoKS5zdmdTdHls
ZSgpLnBhaW50VHlwZXNGb3JQYWludE9yZGVyKCk7CisgICAgYXV0byBwYWludE9yZGVyID0gc3R5
bGUoKS5zdmdTdHlsZSgpLnBhaW50VHlwZXNGb3JQYWludE9yZGVyKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgc3dpdGNo
IChwYWludE9yZGVyLmF0KGkpKSB7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4
IGFjZTZmYzE5MzAwMzdmZTVmMTZmMzI1MzNhYzNkMzVmODJiNjQwYzQuLjgzYjE3NWRmYzU0ODRl
YTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0
aW9uT3ZlcmxpbmUpCiAgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRl
eHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZyYWdtZW50KTsKIAotICAgICAgICBWZWN0b3I8
UGFpbnRUeXBlPiBwYWludE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFp
bnRPcmRlcigpOworICAgICAgICBhdXRvIHBhaW50T3JkZXIgPSBzdHlsZS5zdmdTdHlsZSgpLnBh
aW50VHlwZXNGb3JQYWludE9yZGVyKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBwYWludE9yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKHBhaW50T3Jk
ZXIuYXQoaSkpIHsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBhNGZmZDI4ZGVmOTM0
Yzg2ZjExYmE0NjYxMGZmZTVmM2E3MGU0YzkxLi5hOWI2ZjQ2ZGM0ZGVkNWY5OTNhNzkzN2Y4MDkx
NWJiZGJlMzM4MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwCkBAIC0xMzAwLDcgKzEzMDAsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRl
cjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQogICAgIGZvciAoYXV0byBjb2RlcG9pbnQgOiBsaWdh
dHVyZUNvZGVwb2ludHMpIHsKICAgICAgICAgYXV0byBjb2RlcG9pbnRzID0gY29kZXBvaW50VG9T
dHJpbmcoY29kZXBvaW50KTsKICAgICAgICAgaWYgKCFjb2RlcG9pbnRzLmlzTnVsbCgpKQotICAg
ICAgICAgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShWZWN0b3I8Y2hhciwgMTc+KG1fZW1w
dHlHbHlwaENoYXJTdHJpbmcpLCBudWxscHRyLCBtX3VuaXRzUGVyRW0sIG1fdW5pdHNQZXJFbSwg
RmxvYXRSZWN0KCksIGNvZGVwb2ludHMpKTsKKyAgICAgICAgICAgIG1fZ2x5cGhzLmFwcGVuZChH
bHlwaERhdGEoVmVjdG9yPGNoYXI+KG1fZW1wdHlHbHlwaENoYXJTdHJpbmcpLCBudWxscHRyLCBt
X3VuaXRzUGVyRW0sIG1fdW5pdHNQZXJFbSwgRmxvYXRSZWN0KCksIGNvZGVwb2ludHMpKTsKICAg
ICB9CiB9CiAKQEAgLTEzOTAsNyArMTM5MCw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZH
VG9PVEZGb250Q29udmVydGVyKGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAg
ICBpZiAobV9taXNzaW5nR2x5cGhFbGVtZW50KQogICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50
KCptX21pc3NpbmdHbHlwaEVsZW1lbnQsIG51bGxwdHIsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5j
ZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgU3RyaW5nKCksIGluaXRpYWxHbHlwaCk7CiAgICAg
ZWxzZQotICAgICAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFZlY3RvcjxjaGFyLCAxNz4o
bV9lbXB0eUdseXBoQ2hhclN0cmluZyksIG51bGxwdHIsIG1fdW5pdHNQZXJFbSwgbV91bml0c1Bl
ckVtLCBGbG9hdFJlY3QoKSwgU3RyaW5nKCkpKTsKKyAgICAgICAgbV9nbHlwaHMuYXBwZW5kKEds
eXBoRGF0YShWZWN0b3I8Y2hhcj4obV9lbXB0eUdseXBoQ2hhclN0cmluZyksIG51bGxwdHIsIG1f
dW5pdHNQZXJFbSwgbV91bml0c1BlckVtLCBGbG9hdFJlY3QoKSwgU3RyaW5nKCkpKTsKIAogICAg
IGZvciAoYXV0byYgZ2x5cGhFbGVtZW50IDogY2hpbGRyZW5PZlR5cGU8U1ZHR2x5cGhFbGVtZW50
PihtX2ZvbnRFbGVtZW50KSkgewogICAgICAgICBhdXRvJiB1bmljb2RlQXR0cmlidXRlID0gZ2x5
cGhFbGVtZW50LmZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnVuaWNvZGVBdHRyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2NzVlYjY0MTBk
YjBjYjBiYjk3MWVjYzUyNTNhZTMyYTEyYmQ5MWVmLi4wZTA3YjJmMjM4OTBiOTgzN2Q3NGRlNjhi
N2QzMjFlYzgxYjA4Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
Ojpyb2xsYmFja1RyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpCiAgICAgcmV0
dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhL
ZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1h
cnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0
b3I8UmVmUHRyPElEQktleT4+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklE
QlNlcnZlckNvbm5lY3Rpb246OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGlu
dDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiwgSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdCwg
MT4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+
PiwgMT4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaAppbmRleCBmNjBkNjcyNGJmMTU0ZGI0ZWUxNzM4NjMw
YTUyOTUzNTZhOTk2OWFhLi4wYWVlY2RjOWUzNmI2YmU2YjllYjk5M2U3NDYwZmNkODhiNzM1YzU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByb2xsYmFja1RyYW5zYWN0aW9uKGlu
dDY0X3QgdHJhbnNhY3Rpb25JRCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2Fs
bGJhY2spIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByb2xsYmFja1RyYW5zYWN0aW9uU3lu
YyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiwgV2ViQ29yZTo6SURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+Pj4mIGlu
ZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlE
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0
YWRhdGEmLCBXZWJDb3JlOjpJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90
LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktl
eT4+LCAxPiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5k
ZXgoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRl
SW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251205</attachid>
            <date>2015-04-20 16:58:05 -0700</date>
            <delta_ts>2015-04-21 09:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143970-20150420165703.patch</filename>
            <type>text/plain</type>
            <size>26873</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NjNiYjU0ZTM2Zjg0NGFkMGM3OTQwZGI4Njg3MDRiMjNiMTQwOWJmLi40ODlmODc5ZTZmNmU2ODUw
NmE0YThjNDBhMzViODA0ZGIxOWI4ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhl
ck92ZXJmbG93QmVoYXZpb3VyPiYpIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0
b3I8VCwgb3RoZXJDYXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKQorICAgICAgICBj
b25zdHJ1Y3RvciBleHBsaWNpdCBhcyBpdCBjb3BpZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFz
eSB0byBjYWxsIGl0CisgICAgICAgIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRJbnN0
cnVjdGlvblN0cmVhbTo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSk6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAqIGZ0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2Vy
KToKKwogMjAxNS0wNC0yMCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIENsZWFudXAgc29tZSBTdHJpbmdCdWlsZGVyIHVzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxODUxNjYxNTZi
MTEzMzRhOWM2NDFhOThlYmQxZjJjZjBhMjQzZjc3Li5kNjQ5YjZjOTdjZjFlODE0NDMzZWIwOTQ1
NDk4YjYxMzVmMTdmMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTIwICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3QgVmVj
dG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikgY29uc3RydWN0
b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0Mzk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJm
bG93QmVoYXZpb3VyPiYpCisgICAgICAgIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGFzIGl0IGNvcGll
cyB0aGUgdmVjdG9yIGFuZCBpdCBpcyBlYXN5IHRvIGNhbGwgaXQKKyAgICAgICAgYnkgbWlzdGFr
ZS4KKworICAgICAgICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVm
Q291bnRlZEFycmF5OjpSZWZDb3VudGVkQXJyYXkpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoK
KwogMjAxNS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VXBkYXRlIFJlZlB0ciBkb2N1bWVudGF0aW9uIGFuZCBkZXByZWNhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDM0MjcwOWUxYzVlNmQxNjRmNjUwMzIwYzE4MmQyNmY1MzE0ODg2MWQuLmM1N2E5MTcwNDFkMGEx
NTMxNGZhOWNmMjgzOTQyZjk1YjY4N2M2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAor
MjAxNS0wNC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92ZXJmbG93QmVo
YXZpb3VyPiYpIGNvbnN0cnVjdG9yIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgb3RoZXJD
YXBhY2l0eSwgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4mKQorICAgICAgICBjb25zdHJ1Y3RvciBl
eHBsaWNpdCBhcyBpdCBjb3BpZXMgdGhlIHZlY3RvciBhbmQgaXQgaXMgZWFzeSB0byBjYWxsIGl0
CisgICAgICAgIGJ5IG1pc3Rha2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
OjpzZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpz
ZXRJbmRleGVzUmVhZHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBjc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjptaW5pbXVtUmVnaXN0ZXJSZXF1aXJlbWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRIYXNDbGFzc2VzKToKKyAgICAgICAgKiBjc3NqaXQvU3RhY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwdXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwb3ApOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRv
cjo6bmV4dEdyaWRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVy
YXRvcjo6aXNFbXB0eUFyZWFFbm91Z2gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6cGFpbnRU
eXBlc0ZvclBhaW50T3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJT
dHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJrZXJzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kTGlnYXR1cmVHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29u
dmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIpOgorCiAyMDE1LTA0LTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgT3ZlcndyaXRlIGV4
aXN0aW5nIGZpbGVzIHdpdGggbW92ZUZpbGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWY2NWJjNDMxNzlmNzFi
NGM2NWQzMzE4Yzk2MDE5NWI0ODM0NGQ4OC4uYWVmYWUyMjlhZDUwOTk4ZmNiODdhNmMzNGIyNmYy
YjVmMzYyOTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBWZWN0b3IoY29uc3Qg
VmVjdG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+JikgY29uc3Ry
dWN0b3IgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0Mzk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFjaXR5LCBvdGhlck92
ZXJmbG93QmVoYXZpb3VyPiYpCisgICAgICAgIGNvbnN0cnVjdG9yIGV4cGxpY2l0IGFzIGl0IGNv
cGllcyB0aGUgdmVjdG9yIGFuZCBpdCBpcyBlYXN5IHRvIGNhbGwgaXQKKyAgICAgICAgYnkgbWlz
dGFrZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6c2V0SW5kZXhLZXlzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oOgorCiAyMDE1LTA0LTIwICBKb3NlcGggUGVj
b3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cCBzb21lIFN0cmlu
Z0J1aWxkZXIgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKaW5kZXggMmU5NTJhNDFkMDZkYTRl
YmExZGJlY2FhNTk4YjM4ZDcxNWIwNGIxZS4uNTY4ZGJiNjgyMGQ5MGM2OThmODQxMjA2MTkzMTdl
NDgyM2EyZDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcApAQCAtNzUsNyArNzUsNyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmQzMih1bnNpZ25lZCBjaGFyKiYgcHRyLCB1bnNpZ25lZCB2YWx1ZSkK
ICAgICAqKHB0cisrKSA9ICh2YWx1ZSA+PiAyNCkgJiAweGZmOwogfQogCi1VbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtOjpVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKQorVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bTo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbShjb25zdCBWZWN0b3I8VW5saW5rZWRJbnN0cnVj
dGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+JiBpbnN0cnVjdGlvbnMpCiAgICAgOiBtX2lu
c3RydWN0aW9uQ291bnQoaW5zdHJ1Y3Rpb25zLnNpemUoKSkKIHsKICAgICBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKaW5kZXggNjY0OWVjYTU5M2EzZmY1
OWM1NzExMTE0ZTc2YmJmYzE4OGQ2Y2EwMC4uNjMyM2M0NDRiZWRmYWY5ZWM1NTg2YmQyYzU0ZGEx
YjU2NzI0OTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogY2xhc3MgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVW5saW5rZWRJbnN0cnVj
dGlvblN0cmVhbShjb25zdCBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mKTsKKyAgICBleHBs
aWNpdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKGNvbnN0IFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mKTsKIAogICAgIHVuc2lnbmVkIGNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggZWEyOWViNDc2Y2Nh
OTgzNWJlYTkyYTk5YWRjMzIyYWRhNGE4ZGI2MS4uNjljZjRiMjcxODE2YzA0Yjg4YTYwZGZjYmU3
MTQ0ZjI5OGMxNjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG1fcHJvbG9ndWUsIHN0YWNrT3ZlcmZsb3cpOwogICAgICAgICBjcmVhdGVQaGlW
YXJpYWJsZXMoKTsKIAotICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IHByZU9yZGVyID0gbV9n
cmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CisgICAgICAgIEJsb2NrTGlzdCBwcmVPcmRlciA9IG1f
Z3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogCiAgICAgICAgIGludCBtYXhOdW1iZXJPZkFyZ3Vt
ZW50cyA9IC0xOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogcHJlT3JkZXIpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oIGIvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEFycmF5LmgKaW5kZXggYTU1ZDdhZWVhYjg0YjljNDk1MTk2ZThlMjMw
YTFkYzE3ODUxOTNhYi4uNzk4NjlhOWVkNGJlYWMyNDYxMjNmNzg3YjY3MTk0NDI2ZTgwMzc5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKKysrIGIvU291cmNl
L1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgKQEAgLTcyLDcgKzcyLDggQEAgcHVibGljOgogICAg
ICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6aW5pdGlhbGl6ZShiZWdpbigpLCBlbmQoKSk7
CiAgICAgfQogCi0gICAgZXhwbGljaXQgUmVmQ291bnRlZEFycmF5KGNvbnN0IFZlY3RvcjxUPiYg
b3RoZXIpCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CisgICAgZXhwbGljaXQgUmVmQ291bnRlZEFycmF5KGNvbnN0IFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpCiAgICAgewogICAgICAg
ICBpZiAob3RoZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2RhdGEgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApp
bmRleCA3ZDg0MmE4NmE0YTZjNzk0ZmZkYWU1MDg3YmMxYjRiMGJiZDg4ODI2Li4yOThlMjljYjE3
ZDhiMTM4MWMwM2I2MjI3OWEyM2M4MThiM2NiZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNjM5LDcgKzYzOSw3
IEBAIHB1YmxpYzoKIAogICAgIFZlY3Rvcihjb25zdCBWZWN0b3ImKTsKICAgICB0ZW1wbGF0ZTxz
aXplX3Qgb3RoZXJDYXBhY2l0eSwgdHlwZW5hbWUgb3RoZXJPdmVyZmxvd0JlaGF2aW91cj4KLSAg
ICBWZWN0b3IoY29uc3QgVmVjdG9yPFQsIG90aGVyQ2FwYWNpdHksIG90aGVyT3ZlcmZsb3dCZWhh
dmlvdXI+Jik7CisgICAgZXhwbGljaXQgVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBvdGhlckNhcGFj
aXR5LCBvdGhlck92ZXJmbG93QmVoYXZpb3VyPiYpOwogCiAgICAgVmVjdG9yJiBvcGVyYXRvcj0o
Y29uc3QgVmVjdG9yJik7CiAgICAgdGVtcGxhdGU8c2l6ZV90IG90aGVyQ2FwYWNpdHksIHR5cGVu
YW1lIG90aGVyT3ZlcmZsb3dCZWhhdmlvdXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCBlZTUzODFhYTM0
YTVlZGVlZWEwMjE1ZDM2YTY0NzJhYWE4YzdmMmE0Li5jODI5MjZhZDk4ZWZkMjQyNjhmMDIwNmRi
NDc3ZDg2ZTFhMDQ2NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZDo6cHV0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUgogICAgIHRyYW5zYWN0aW9uLT5zY2hlZHVsZVB1dE9wZXJhdGlv
bihvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGlu
ZGV4SWRzLCBpbmRleEtleXMpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5k
ZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBQYXNz
UmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElEcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKK3ZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdCwgMT4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzLCAxPiYgaW5k
ZXhLZXlzKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJ
bmRleEtleXMiKTsKICAgICBBU1NFUlQocHJwUHJpbWFyeUtleSk7CkBAIC0yNjIsNyArMjYyLDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0
aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmUKICAgICB9KTsKIH0KIAotdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OnNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qs
IGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMpCit2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZDo6c2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCwgY29uc3Qg
VmVjdG9yPGludDY0X3QsIDE+JiBpbmRleElkcykKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIklE
QkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhlc1JlYWR5Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmgKaW5kZXggNDNl
MzZmYmVkY2QyY2FlODFlNWRmMDQwNTljMjA3ZDJlODNiZjE1Yy4uZjI0MDQ2YWE4ODhkYmQxZGZm
YTk3OTcwMjg1Y2EwMWUwNTQ4ODhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGdldChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgYm9v
bCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgcHV0KGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBWZWN0
b3I8SW5kZXhLZXlzPiYpOwotICAgIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFy
eUtleSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4
S2V5cz4mKTsKLSAgICB2b2lkIHNldEluZGV4ZXNSZWFkeShpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcyk7
CisgICAgdm9pZCBzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdCwgMT4mIGluZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzLCAxPiYpOwor
ICAgIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8aW50NjRfdCwgMT4mIGluZGV4SWRzKTsKICAgICB2
b2lkIG9wZW5DdXJzb3IoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uLCBib29sIGtleU9ubHksIFRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4pOwogICAgIHZvaWQgY291bnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBkZWxldGVSYW5nZShpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMmIzMjA5
YWM3OTRkMTlkMzJiODg0ZTljMTE3NzBlODk2NTEwZDg3YS4uN2M3NjRmOWRkZDdiNmY0ZTk4MDI4
YTMzNWVmNmIxZDFkMmVkNmMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rpb24uaApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24oaW50NjRfdCB0cmFuc2Fj
dGlvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJvbGxiYWNrVHJhbnNhY3Rpb25TeW5jKGludDY0X3QgdHJhbnNhY3Rp
b25JRCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5z
YWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgSURCS2V5JiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxJREJLZXk+
Pj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5k
ZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHBy
aW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZlY3Rv
cjxWZWN0b3I8UmVmUHRyPElEQktleT4+LCAxPiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGNvbnN0IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwg
Y29uc3QgQ3JlYXRlSW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCmluZGV4IDhkMDViZmFhYmRmZmRkNjU0
NDc4MDQ1ZDJiM2Y2ZTY4YWI0ZDIzYmMuLjg4OGQxMWZlMGI0N2VlYTE5Nzg5NWVlZTQ5YzA1ZjFi
YzM2Y2Q1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBp
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAK
QEAgLTMwOCw3ICszMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0
cmlidXRlRnVuY3Rpb25DYWxsVmFsdWVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWls
dXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywg
Y29uc3QgQXRvbWljU3RyaW5nJiBleHBlY3RlZFZhbHVlLCBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZp
dHkgdmFsdWVDYXNlU2Vuc2l0aXZpdHksIEpTQzo6RnVuY3Rpb25QdHIgY2FzZVNlbnNpdGl2ZVRl
c3QsIEpTQzo6RnVuY3Rpb25QdHIgY2FzZUluc2Vuc2l0aXZlVGVzdCk7CiAgICAgdm9pZCBnZW5l
cmF0ZUVsZW1lbnRIYXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
Y29uc3QgQ1NTU2VsZWN0b3ImIHRhZ01hdGNoaW5nU2VsZWN0b3IpOwogICAgIHZvaWQgZ2VuZXJh
dGVFbGVtZW50SGFzSWQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBM
b2NhbFJlZ2lzdGVyJiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRU
b01hdGNoKTsKLSAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEhhc0NsYXNzZXMoQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVyJiBlbGVtZW50RGF0YUFk
ZHJlc3MsIGNvbnN0IFZlY3Rvcjxjb25zdCBBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzTmFtZXMp
OworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzQ2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExvY2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywg
Y29uc3QgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqLCA4PiYgY2xhc3NOYW1lcyk7CiAg
ICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRJc0xpbmsoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudElzTnRoQ2hpbGQoQXNzZW1ibGVyOjpK
dW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CiAgICAgdm9p
ZCBnZW5lcmF0ZUVsZW1lbnRJc050aENoaWxkT2YoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVy
ZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CkBAIC0xMDkyLDcgKzEwOTIsNyBAQCBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bVJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvck50aENo
aWxkRmlsdGVyID0gNjsKIHN0YXRpYyB1bnNpZ25lZCBtaW5pbXVtUmVnaXN0ZXJSZXF1aXJlbWVu
dHMoY29uc3QgU2VsZWN0b3JGcmFnbWVudCYgc2VsZWN0b3JGcmFnbWVudCkKIHsKICAgICB1bnNp
Z25lZCBtaW5pbXVtID0gbWluaW11bVJlcXVpcmVkUmVnaXN0ZXJDb3VudDsKLSAgICBjb25zdCBW
ZWN0b3I8QXR0cmlidXRlTWF0Y2hpbmdJbmZvPiYgYXR0cmlidXRlcyA9IHNlbGVjdG9yRnJhZ21l
bnQuYXR0cmlidXRlczsKKyAgICBjb25zdCBhdXRvJiBhdHRyaWJ1dGVzID0gc2VsZWN0b3JGcmFn
bWVudC5hdHRyaWJ1dGVzOwogCiAgICAgLy8gQXR0cmlidXRlcyBjYXVzZSBzb21lIHJlZ2lzdGVy
IHByZXNzdXJlLgogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50ID0gYXR0cmlidXRlcy5zaXpl
KCk7CkBAIC0zNTMwLDcgKzM1MzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGVFbGVtZW50SGFzSWQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhcwogICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1
YWwsIEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50RGF0YUFkZHJlc3MsIEVsZW1lbnREYXRhOjpp
ZEZvclN0eWxlUmVzb2x1dGlvbk1lbW9yeU9mZnNldCgpKSwgaWRUb01hdGNoUmVnaXN0ZXIpKTsK
IH0KIAotdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc0NsYXNz
ZXMoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVy
JiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IFZlY3Rvcjxjb25zdCBBdG9taWNTdHJpbmdJbXBs
Kj4mIGNsYXNzTmFtZXMpCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVt
ZW50SGFzQ2xhc3NlcyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IExv
Y2FsUmVnaXN0ZXImIGVsZW1lbnREYXRhQWRkcmVzcywgY29uc3QgVmVjdG9yPGNvbnN0IEF0b21p
Y1N0cmluZ0ltcGwqLCA4PiYgY2xhc3NOYW1lcykKIHsKICAgICAvLyBMb2FkIG1fY2xhc3NOYW1l
cy4KICAgICBMb2NhbFJlZ2lzdGVyIHNwYWNlU3BsaXRTdHJpbmdEYXRhKG1fcmVnaXN0ZXJBbGxv
Y2F0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1N0YWNrQWxsb2NhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3IuaAppbmRleCAyYzZhZGE1
YWRjMTZlMzYyNDM1OTc1YmJmNjRmNDE5YmQzMzU3YmViLi5hNTg1NGQyNDc0MGEzODNlMjFlMmQ1
NzllMDhmZWM1MzdhNzY4YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3Rh
Y2tBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3Iu
aApAQCAtMTAwLDcgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YWNrUmVmZXJl
bmNlczsKICAgICB9CiAKLSAgICBTdGFja1JlZmVyZW5jZVZlY3RvciBwdXNoKGNvbnN0IFZlY3Rv
cjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPiYgcmVnaXN0ZXJJRHMpCisgICAgdGVt
cGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Cisg
ICAgU3RhY2tSZWZlcmVuY2VWZWN0b3IgcHVzaChjb25zdCBWZWN0b3I8SlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6UmVnaXN0ZXJJRCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHJlZ2lz
dGVySURzKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faGFzRnVuY3Rpb25DYWxs
UGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBT
dGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3ApOwogICAgIH0KIAotICAgIHZvaWQgcG9wKGNv
bnN0IFN0YWNrUmVmZXJlbmNlVmVjdG9yJiBzdGFja1JlZmVyZW5jZXMsIGNvbnN0IFZlY3RvcjxK
U0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPiYgcmVnaXN0ZXJJRHMpCisgICAgdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAg
dm9pZCBwb3AoY29uc3QgU3RhY2tSZWZlcmVuY2VWZWN0b3ImIHN0YWNrUmVmZXJlbmNlcywgY29u
c3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+JiByZWdpc3RlcklEcykKICAgICB7CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2hhc0Z1bmN0aW9uQ2FsbFBhZGRpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggYzAwZGY1ODBmY2M4NTZkM2Q3OWVlZWU4Mjc3ZjFlZDU0
MDU1NmIyOC4uMzM5OTA2YmYxZjYzZDJkNTVjMTk5YjFhYzYxOTE1MGRiYWI4MDc3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgdW5zaWduZWQmIHZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGlyZWN0aW9u
ID09IEZvckNvbHVtbnMpID8gbV9yb3dJbmRleCA6IG1fY29sdW1uSW5kZXg7CiAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9y
Q29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKICAgICAgICAgZm9y
ICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5n
VHJhY2tJbmRleCkgewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGls
ZHJlbiA9IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVtbkluZGV4XTsKKyAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGNoaWxkcmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29sdW1uSW5kZXhdOwog
ICAgICAgICAgICAgaWYgKG1fY2hpbGRJbmRleCA8IGNoaWxkcmVuLnNpemUoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gY2hpbGRyZW5bbV9jaGlsZEluZGV4KytdOwogCkBAIC0xNzEsNyArMTcx
LDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGlzIGFkZHMgYSBPKE5eMikgYmVoYXZpb3IgdGhh
dCBzaG91bGRuJ3QgYmUgYSBiaWcgZGVhbCBhcyB3ZSBleHBlY3Qgc3Bhbm5pbmcgYXJlYXMgdG8g
YmUgc21hbGwuCiAgICAgICAgIGZvciAodW5zaWduZWQgcm93ID0gbV9yb3dJbmRleDsgcm93IDwg
bWF4Um93czsgKytyb3cpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY29sdW1uID0gbV9j
b2x1bW5JbmRleDsgY29sdW1uIDwgbWF4Q29sdW1uczsgKytjb2x1bW4pIHsKLSAgICAgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW3Jvd11bY29s
dW1uXTsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IG1fZ3JpZFtyb3dd
W2NvbHVtbl07CiAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCmluZGV4IGE4NjQ5
MTI0ZTgyMWMwYjUyNjFlYWM1MDc1MmUxYTBlYzM0YmVmOTUuLmRmNzlhZmY2NWU3YjhhMzI2ODMy
NzdmNGQ4YWNiNTM5OGE2YTk3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgU1ZHUmVu
ZGVyU3R5bGU6OmNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBvdGhl
cikKICAgICByZXNvdXJjZXMgPSBvdGhlci0+cmVzb3VyY2VzOwogfQogCi1WZWN0b3I8UGFpbnRU
eXBlPiBTVkdSZW5kZXJTdHlsZTo6cGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBjb25zdAorVmVj
dG9yPFBhaW50VHlwZSwgMz4gU1ZHUmVuZGVyU3R5bGU6OnBhaW50VHlwZXNGb3JQYWludE9yZGVy
KCkgY29uc3QKIHsKICAgICBWZWN0b3I8UGFpbnRUeXBlLCAzPiBwYWludE9yZGVyOwogICAgIHN3
aXRjaCAodGhpcy0+cGFpbnRPcmRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IGJkZGFmZjQyYTIyNTVmMTQzOWQ4YmJkNTFm
ZGQ3ZmFlZDFkNWU5NTcuLmJmOTdhY2UxN2U0NTk4NDE1ZGUwNWVhMTUwMWE4ZDliODE1MDc5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5o
CkBAIC0zNzksNyArMzc5LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBtYXJrZXJFbmRSZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZFJlc291cmNlcy0+bWFya2VyRW5kOyB9CiAgICAg
RU1hc2tUeXBlIG1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gKEVNYXNrVHlwZSkgc3ZnX25vbmlu
aGVyaXRlZF9mbGFncy5mLm1hc2tUeXBlOyB9CiAgICAgUGFpbnRPcmRlciBwYWludE9yZGVyKCkg
Y29uc3QgeyByZXR1cm4gKFBhaW50T3JkZXIpIHN2Z19pbmhlcml0ZWRfZmxhZ3MucGFpbnRPcmRl
cjsgfQotICAgIFZlY3RvcjxQYWludFR5cGU+IHBhaW50VHlwZXNGb3JQYWludE9yZGVyKCkgY29u
c3Q7CisgICAgVmVjdG9yPFBhaW50VHlwZSwgMz4gcGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKSBj
b25zdDsKIAogICAgIGNvbnN0IFNWR1BhaW50OjpTVkdQYWludFR5cGUmIHZpc2l0ZWRMaW5rRmls
bFBhaW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZpbGwtPnZpc2l0ZWRMaW5rUGFpbnRUeXBlOyB9
CiAgICAgY29uc3QgQ29sb3ImIHZpc2l0ZWRMaW5rRmlsbFBhaW50Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBmaWxsLT52aXNpdGVkTGlua1BhaW50Q29sb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggZWYzY2VhMzYxYTU0MGE2NTU1
M2M0MWMwNTE1NTQxNjgzOTI0N2RiMi4uN2ExY2FjODY2M2M0MzUyMjk3ZWU5ZWM4NmQ0ZTQzZmNj
MDZiOTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZp
bGxTdHJva2VNYXJrZXJzKFBhaW50SW5mbyYgY2hpbGRQYWludEluZm8pCiB7Ci0gICAgVmVjdG9y
PFBhaW50VHlwZT4gcGFpbnRPcmRlciA9IHN0eWxlKCkuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9y
UGFpbnRPcmRlcigpOworICAgIGF1dG8gcGFpbnRPcmRlciA9IHN0eWxlKCkuc3ZnU3R5bGUoKS5w
YWludFR5cGVzRm9yUGFpbnRPcmRlcigpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBw
YWludE9yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIHN3aXRjaCAocGFpbnRPcmRlci5hdChp
KSkgewogICAgICAgICBjYXNlIFBhaW50VHlwZUZpbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBhY2U2ZmMxOTMwMDM3ZmU1
ZjE2ZjMyNTMzYWMzZDM1ZjgyYjY0MGM0Li44M2IxNzVkZmM1NDg0ZWE1ZWIxNWRjMjk2MWI4MmMw
NmNhY2M0ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQogICAg
ICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlv
bk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKLSAgICAgICAgVmVjdG9yPFBhaW50VHlwZT4gcGFpbnRP
cmRlciA9IHN0eWxlLnN2Z1N0eWxlKCkucGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKTsKKyAgICAg
ICAgYXV0byBwYWludE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFpbnRP
cmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgc3dpdGNoIChwYWludE9yZGVyLmF0KGkpKSB7CiAgICAg
ICAgICAgICBjYXNlIFBhaW50VHlwZUZpbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggYTRmZmQyOGRlZjkzNGM4NmYxMWJhNDY2MTBmZmU1
ZjNhNzBlNGM5MS4uYTliNmY0NmRjNGRlZDVmOTkzYTc5MzdmODA5MTViYmRiZTMzODFlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTMw
MCw3ICsxMzAwLDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJl
R2x5cGhzKCkKICAgICBmb3IgKGF1dG8gY29kZXBvaW50IDogbGlnYXR1cmVDb2RlcG9pbnRzKSB7
CiAgICAgICAgIGF1dG8gY29kZXBvaW50cyA9IGNvZGVwb2ludFRvU3RyaW5nKGNvZGVwb2ludCk7
CiAgICAgICAgIGlmICghY29kZXBvaW50cy5pc051bGwoKSkKLSAgICAgICAgICAgIG1fZ2x5cGhz
LmFwcGVuZChHbHlwaERhdGEoVmVjdG9yPGNoYXIsIDE3PihtX2VtcHR5R2x5cGhDaGFyU3RyaW5n
KSwgbnVsbHB0ciwgbV91bml0c1BlckVtLCBtX3VuaXRzUGVyRW0sIEZsb2F0UmVjdCgpLCBjb2Rl
cG9pbnRzKSk7CisgICAgICAgICAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFZlY3Rvcjxj
aGFyPihtX2VtcHR5R2x5cGhDaGFyU3RyaW5nKSwgbnVsbHB0ciwgbV91bml0c1BlckVtLCBtX3Vu
aXRzUGVyRW0sIEZsb2F0UmVjdCgpLCBjb2RlcG9pbnRzKSk7CiAgICAgfQogfQogCkBAIC0xMzkw
LDcgKzEzOTAsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRl
cihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgaWYgKG1fbWlzc2luZ0ds
eXBoRWxlbWVudCkKICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudCgqbV9taXNzaW5nR2x5cGhF
bGVtZW50LCBudWxscHRyLCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNh
bEFkdmFuY2UsIFN0cmluZygpLCBpbml0aWFsR2x5cGgpOwogICAgIGVsc2UKLSAgICAgICAgbV9n
bHlwaHMuYXBwZW5kKEdseXBoRGF0YShWZWN0b3I8Y2hhciwgMTc+KG1fZW1wdHlHbHlwaENoYXJT
dHJpbmcpLCBudWxscHRyLCBtX3VuaXRzUGVyRW0sIG1fdW5pdHNQZXJFbSwgRmxvYXRSZWN0KCks
IFN0cmluZygpKSk7CisgICAgICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoVmVjdG9yPGNo
YXI+KG1fZW1wdHlHbHlwaENoYXJTdHJpbmcpLCBudWxscHRyLCBtX3VuaXRzUGVyRW0sIG1fdW5p
dHNQZXJFbSwgRmxvYXRSZWN0KCksIFN0cmluZygpKSk7CiAKICAgICBmb3IgKGF1dG8mIGdseXBo
RWxlbWVudCA6IGNoaWxkcmVuT2ZUeXBlPFNWR0dseXBoRWxlbWVudD4obV9mb250RWxlbWVudCkp
IHsKICAgICAgICAgYXV0byYgdW5pY29kZUF0dHJpYnV0ZSA9IGdseXBoRWxlbWVudC5mYXN0R2V0
QXR0cmlidXRlKFNWR05hbWVzOjp1bmljb2RlQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKaW5kZXggZDAxZjg4NDdkY2IyNDc2NTYzZDVjODFiYjg4MjZlOTRhMzU3YzRhNC4uZGQy
NjY0OTIwMjdhZGFkZjE5MzQ4Y2FhZDVlZmFkNzEzZDM0MzEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcApAQCAtODksOCArODksOCBAQCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
cjo6V2ViS2l0Tm90aWZpY2F0aW9uUHJvdmlkZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclBybwog
dm9pZCBXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uQ2xvc2VDYWxsYmFj
ayhXZWJLaXROb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViS2l0Tm90aWZpY2F0aW9uUHJv
dmlkZXIqIHByb3ZpZGVyKQogewogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gd2Via2l0
X25vdGlmaWNhdGlvbl9nZXRfaWQobm90aWZpY2F0aW9uKTsKLSAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0PiwgMT4gYXJyYXlJRHM7Ci0gICAgYXJyYXlJRHMudW5jaGVja2VkQXBwZW5kKEFQ
STo6VUludDY0OjpjcmVhdGUobm90aWZpY2F0aW9uSUQpKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gYXJyYXlJRHM7CisgICAgYXJyYXlJRHMuYXBwZW5kKEFQSTo6VUludDY0Ojpj
cmVhdGUobm90aWZpY2F0aW9uSUQpKTsKICAgICBwcm92aWRlci0+bV9ub3RpZmljYXRpb25NYW5h
Z2VyLT5wcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5OjpjcmVhdGUoV1RG
Ojptb3ZlKGFycmF5SURzKSkuZ2V0KCkpOwogICAgIHByb3ZpZGVyLT5tX25vdGlmaWNhdGlvbnMu
cmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2NzVlYjY0MTBkYjBjYjBiYjk3MWVjYzUyNTNhZTMyYTEy
YmQ5MWVmLi4wZTA3YjJmMjM4OTBiOTgzN2Q3NGRlNjhiN2QzMjFlYzgxYjA4Yzk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURC
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRh
YmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zMDUsNyArMzA1
LDcgQEAgYm9vbCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpyb2xsYmFja1RyYW5zYWN0aW9uU3lu
YyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQpCiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKLXZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6c2V0SW5kZXhLZXlzKGludDY0X3QgdHJhbnNhY3Rpb25J
RCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmLCBJREJLZXkmIHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPElEQktleT4+PiYgaW5k
ZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4p
PiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnNldElu
ZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgSURCS2V5JiBw
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdCwgMT4mIGluZGV4SURzLCBjb25zdCBWZWN0
b3I8VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+PiwgMT4mIGluZGV4S2V5cywgc3RkOjpm
dW5jdGlvbjx2b2lkIChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNh
bGxiYWNrKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24u
aAppbmRleCBmNjBkNjcyNGJmMTU0ZGI0ZWUxNzM4NjMwYTUyOTUzNTZhOTk2OWFhLi4wYWVlY2Rj
OWUzNmI2YmU2YjllYjk5M2U3NDYwZmNkODhiNzM1YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCByb2xsYmFja1RyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JRCwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCByb2xsYmFja1RyYW5zYWN0aW9uU3luYyhpbnQ2NF90IHRyYW5zYWN0aW9uSUQp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5z
YWN0aW9uSUQsIGludDY0X3QgZGF0YWJhc2VJRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgV2ViQ29yZTo6SURCS2V5JiBwcmlt
YXJ5S2V5LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+Pj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2
b2lkIChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNh
bGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGludDY0X3Qg
dHJhbnNhY3Rpb25JRCwgaW50NjRfdCBkYXRhYmFzZUlELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBXZWJDb3JlOjpJREJLZXkm
IHByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxpbnQ2NF90LCAxPiYgaW5kZXhJRHMsIGNvbnN0IFZl
Y3RvcjxWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4+LCAxPiYgaW5kZXhLZXlzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBj
b21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6
OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21w
bGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwo=
</data>
<flag name="review"
          id="276000"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>