<?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>234327</bug_id>
          
          <creation_ts>2021-12-14 17:47:00 -0800</creation_ts>
          <short_desc>Implement Array.prototype.groupBy and Array.prototype.groupByToMap</short_desc>
          <delta_ts>2021-12-16 08:12:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824196</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-14 17:47:00 -0800</bug_when>
    <thetext>`Array.prototype.groupBy` and `Array.prototype.groupByToMap` just advanced to TC39 stage 3

Proposal: &lt;https://github.com/tc39/proposal-array-find-from-last&gt;
Spec: &lt;https://tc39.es/proposal-array-find-from-last/index.html&gt;

```
const array = [1, 2, 3, 4, 5];

array.groupBy(n =&gt; n % 2 ? &quot;odd&quot; : &quot;even&quot;) // { odd: [1, 3, 5], even: [2, 4] }
array.groupByToMap(n =&gt; n % 2 ? &quot;odd&quot; : &quot;even&quot;) // Map [[&quot;odd&quot;, [1, 3, 5]], [&quot;even&quot;, [2, 4]]
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824415</commentid>
    <comment_count>1</comment_count>
      <attachid>447253</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 10:10:35 -0800</bug_when>
    <thetext>Created attachment 447253
[Patch] WIP

I am putting this up so that I can let EWS take a stab at it while I write some specific tests :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824557</commentid>
    <comment_count>2</comment_count>
      <attachid>447289</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 15:24:05 -0800</bug_when>
    <thetext>Created attachment 447289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824563</commentid>
    <comment_count>3</comment_count>
      <attachid>447289</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-15 15:39:19 -0800</bug_when>
    <thetext>Comment on attachment 447289
Patch

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

r=me

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:192
&gt; +        var key = callback.@call(thisArg, value, i, array);

Can you include a test, returning &quot;__proto__&quot; for key string?
Like,

Array.prototype.ok = 42; // enumerable.
var result = [......].groupByToMap((value, index, array) {
    return &quot;__proto__&quot;;
});
result.has(&quot;ok&quot;); // false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824645</commentid>
    <comment_count>4</comment_count>
      <attachid>447312</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 19:01:10 -0800</bug_when>
    <thetext>Created attachment 447312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824651</commentid>
    <comment_count>5</comment_count>
      <attachid>447289</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-15 19:13:06 -0800</bug_when>
    <thetext>Comment on attachment 447289
Patch

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

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:193
&gt; +        var group = (groups[key] ??= []);

You&apos;ve probably already noticed this, but I comment either way: ToPropertyKey that is performed by `groups[key]` is not in the spec (unlike Array.prototype.groupBy), and rightfully so because Maps can have keys beyond strings &amp; symbols.
Considering step 6.d, I would suggest `var groups = new @Map` since it&apos;s how Maps sanitise keys as well.
Also, it would be nice to ensure we have test cases with throwing toString() / valueOf() and -0 / 0 keys.

The spec I&apos;m looking at is https://tc39.es/proposal-array-grouping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824668</commentid>
    <comment_count>6</comment_count>
      <attachid>447320</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 19:54:39 -0800</bug_when>
    <thetext>Created attachment 447320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824670</commentid>
    <comment_count>7</comment_count>
      <attachid>447320</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-15 20:01:02 -0800</bug_when>
    <thetext>Comment on attachment 447320
Patch

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

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:200
&gt; +        if (key === -0)

This is extra before Map.prototype.set, which performs -0 =&gt; +0 coercion at step 5 (https://tc39.es/ecma262/#sec-map.prototype.set).
I&apos;m pretty sure we can just pass `key` directly to Map&apos;s @get / @set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824671</commentid>
    <comment_count>8</comment_count>
      <attachid>447321</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 20:03:19 -0800</bug_when>
    <thetext>Created attachment 447321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824672</commentid>
    <comment_count>9</comment_count>
      <attachid>447321</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-15 20:04:42 -0800</bug_when>
    <thetext>Comment on attachment 447321
Patch

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

&gt; Source/JavaScriptCore/builtins/ArrayPrototype.js:173
&gt; +        var group = groups[key];

Aren&apos;t we performing ToPropertyKey twice here (the second time @ L176)?
A test with counter would be hugely appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824674</commentid>
    <comment_count>10</comment_count>
      <attachid>447323</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 20:13:25 -0800</bug_when>
    <thetext>Created attachment 447323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824692</commentid>
    <comment_count>11</comment_count>
      <attachid>447330</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-15 22:58:05 -0800</bug_when>
    <thetext>Created attachment 447330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824763</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-16 08:11:24 -0800</bug_when>
    <thetext>Committed r287136 (245320@main): &lt;https://commits.webkit.org/245320@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447330.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824764</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-16 08:12:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86576923&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447253</attachid>
            <date>2021-12-15 10:10:35 -0800</date>
            <delta_ts>2021-12-15 15:24:02 -0800</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>bug-234327-20211215111034.patch</filename>
            <type>text/plain</type>
            <size>10275</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMTdmNzU4ZDQ4MDUzMmY1N2M3OWFiYzlkYmUx
ZjMzY2E3ZDE5ZWEuLmY3MmM4YzFkZmQ1NzJmZWIyYTI5MDExNmEzNGRiN2Q2OTNhMzVlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnVpbHRpbnMvQXJy
YXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5KTogQWRkZWQuCisgICAgICAgIChncm91
cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKworICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICBBbGxvdyBgQE1hcGAgdG8g
YmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBwcmltb3JkaWFsIGBNYXBgIGluc3RhbmNl
LgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICBBZGQgYHVzZUFy
cmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIxLTEyLTE0ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMxMjU2ZTBhMTA3ZDQxMmM0YTAw
ZjM0MTdjZjJmZThiNS4uYTRlZWUxZDU2YWE4ZmE2MmIwNjVhNWI5ZTk0YTYxODM4ZTc5MmYxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMTUgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBBcnJh
eS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanM6CisKIDIwMjEtMTItMTQgIFJh
enZhbiBDYWxpbWFuICA8cmNhbGltYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENvbXB1dGVkIFBhbmVsOiBBZGp1c3QgY29sb3Igb2YgQ1NTIFZhcmlhYmxlcyBncm91cGlu
ZyBtb2RlIGNvbnRyb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9BcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJh
eVByb3RvdHlwZS5qcwppbmRleCBlYTIxOWE3MDI5Y2UwNjlkYWE3MjUzZjMyZjgwMzAwYmNkNDUz
NTJhLi44MmY0YzQ5MGU3ODY0YmQxMmYwNTIwZmNlN2I5MjQ0NTJkNmY3M2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0xNTYs
NiArMTU2LDUwIEBAIGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitmdW5jdGlvbiBncm91cEJ5KGNhbGxiYWNrIC8qLCB0aGlz
QXJnICovKQoreworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90
eXBlLmdyb3VwQnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYg
KCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2
YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKKworICAgIHZhciBncm91cHMgPSB7fTsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFy
cmF5W2ldOworICAgICAgICB2YXIga2V5ID0gY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUs
IGksIGFycmF5KTsKKyAgICAgICAgdmFyIGdyb3VwID0gKGdyb3Vwc1trZXldID8/PSBbXSk7Cisg
ICAgICAgIEBwdXRCeVZhbERpcmVjdChncm91cCwgZ3JvdXAubGVuZ3RoLCB2YWx1ZSk7CisgICAg
fQorICAgIHJldHVybiBncm91cHM7Cit9CisKK2Z1bmN0aW9uIGdyb3VwQnlUb01hcChjYWxsYmFj
ayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFy
cmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51
bGwgb3IgdW5kZWZpbmVkIik7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5n
dGgpOworCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcCBjYWxsYmFjayBtdXN0IGJlIGEg
ZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFy
IGdyb3VwcyA9IHt9OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaV07CisgICAgICAgIHZhciBrZXkgPSBjYWxsYmFjay5A
Y2FsbCh0aGlzQXJnLCB2YWx1ZSwgaSwgYXJyYXkpOworICAgICAgICB2YXIgZ3JvdXAgPSAoZ3Jv
dXBzW2tleV0gPz89IFtdKTsKKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGdyb3VwLCBncm91cC5s
ZW5ndGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICB2YXIgcmVzdWx0ID0gbmV3IEBNYXA7CisgICAg
Zm9yICh2YXIga2V5IGluIGdyb3VwcykKKyAgICAgICAgcmVzdWx0LkBzZXQoa2V5LCBncm91cHNb
a2V5XSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogZnVuY3Rpb24gbWFwKGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA1NjhkYTE5Yzg2NTczYjhmN2YzMGU4
OGQzZGY4ZTAxNmI4MTg5MzA1Li44MGE4N2ViMDA3YTlkMzhjNzE1NDI4OTY1OGY4ODEzODQ2YmM4
ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CkBAIC03MCw2ICs3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGRlZmluZVByb3Bl
cnR5KSBcCiAgICAgbWFjcm8oZGVmYXVsdFByb21pc2VUaGVuKSBcCiAgICAgbWFjcm8oU2V0KSBc
CisgICAgbWFjcm8oTWFwKSBcCiAgICAgbWFjcm8odGhyb3dUeXBlRXJyb3JGdW5jdGlvbikgXAog
ICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0eXBlZEFycmF5Q29udGVu
dFR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCmluZGV4IDU3YTkwZWMwZmFjYzEyZGRjZDlhYmY0YWMyZjJkY2JhYjBlMGZhZDcu
LmU2NmU4ZmRiMTZhZjBmNjg5ZjBhYmVhNDgwYWVjYjQ1MmFjOGI5ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtNzcsNiAr
NzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGFwcGVuZE1lbWNweSwgbnVsbHB0
cikgXAogICAgIHYoaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRyKSBcCiAgICAg
dihTZXQsIG51bGxwdHIpIFwKKyAgICB2KE1hcCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVW
YWx1ZSwgbnVsbHB0cikgXAogICAgIHYoaW1wb3J0SW5SZWFsbSwgbnVsbHB0cikgXAogICAgIHYo
ZXZhbEluUmVhbG0sIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA2ZWE2YjY3YTA0ZjMzZDQxOTM2MjdhZGZhNzAw
ZDExN2ZmY2EzNmQyLi4zZmJlYTQ1NDQ0Njg5ZWI0MzM0NDc2M2YzYjhkMjNhMTkyYzIzNWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0xMDAsNiArMTAwLDEwIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBhcnJheVByb3Rv
RnVuY0luZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxLCBBcnJheUluZGV4T2ZJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIGFycmF5UHJvdG9GdW5jTGFzdElu
ZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlsdGVyUHVibGljTmFtZSgpLCBhcnJheVByb3Rv
dHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0
aG9kKCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlQdWJsaWNOYW1lKCksIGFy
cmF5UHJvdG90eXBlR3JvdXBCeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdy
b3VwQnlUb01hcFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5VG9NYXBDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CisgICAgfQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0UHVibGljTmFtZSgpLCBhcnJheVBy
b3RvdHlwZUZsYXRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRNYXBQdWJsaWNO
YW1lKCksIGFycmF5UHJvdG90eXBlRmxhdE1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkucmVkdWNlUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZUNvZGVHZW5lcmF0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAg
LTEzNyw2ICsxNDEsOCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6OnVzZUFy
cmF5RmluZExhc3RNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5m
aW5kTGFzdEluZGV4UHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0TWFwUHVibGljTmFtZSgpLAorICAgICAgICBP
cHRpb25zOjp1c2VBcnJheUdyb3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5ncm91cEJ5UHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0aW9u
czo6dXNlQXJyYXlHcm91cEJ5TWV0aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ3JvdXBCeVRvTWFwUHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpLAogICAgICAg
ICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwKICAg
ICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDBlNDhlMzMwY2FmOWYxNWQyMGRlYWRmYmYyYTY4NjMxNTM1M2VhNmQuLjI4NjRhMTk1
ZjU0MmUwOTQzNmFmZjc4MzExYzQ5NmI1MzUwMjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNTAsNiArMTM1MCw5IEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0KV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKS0+c2V0Q29uc3RydWN0b3IoKSk7CiAgICAg
ICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6Ok1hcCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciktPm1hcENvbnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAgICBtX2xp
bmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojpt
YXBCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBp
bml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwg
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2
YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwogICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IGVhZjcyMzk2NGI3N2JhZTEzYWZmZjc3NzExODFiMjQxOThiY2ZmZTcuLjQ5NDM5MDU1YTk1MTJk
OTE5MjE1MGNhYThlZTEzMmExODZjNmQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw3IEBAIGJvb2wgY2FuVXNlV2ViQXNz
ZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgLyogRmVhdHVyZSBGbGFncyAqL1wKICAgICBcCiAgICAg
dihCb29sLCB1c2VBcnJheUZpbmRMYXN0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IGZpbmRMYXN0KCkgYW5kIGZpbmRMYXN0SW5kZXgoKSBtZXRob2RzIG9uIEFycmF5IGFuZCAlVHlw
ZWRBcnJheSUuIikgXAorICAgIHYoQm9vbCwgdXNlQXJyYXlHcm91cEJ5TWV0aG9kLCB0cnVlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIGdyb3VwQnkoKSBhbmQgZ3JvdXBCeVRvTWFwKCkgbWV0aG9kcyBv
biBBcnJheS4iKSBcCiAgICAgdihCb29sLCB1c2VBdE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhw
b3NlIHRoZSBhdCgpIG1ldGhvZCBvbiBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIp
IFwKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmpl
Y3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1
bmN0aW9uUGFyYW1ldGVycy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKaW5kZXggYTdiNjU5MWM2OWNkYmIy
YzBhN2NkMTJhZDFlMDAzM2U0NjI5NWE2Ny4uZjhhOTEzYzBmMjA3ODAzNjIwYTI5NDZmODNlZDFh
YzI5NjYxZTI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpz
CkBAIC0yNTIsNiArMjUyLDggQEAgV0kuTmF0aXZlUHJvdG90eXBlRnVuY3Rpb25QYXJhbWV0ZXJz
ID0gewogICAgICAgICBmaW5kTGFzdDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAgICAgICBm
aW5kTGFzdEluZGV4OiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGZvckVhY2g6ICJj
YWxsYmFjaywgW3RoaXNBcmddIiwKKyAgICAgICAgZ3JvdXBCeTogImNhbGxiYWNrLCBbdGhpc0Fy
Z10iLAorICAgICAgICBncm91cEJ5VG9NYXA6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAgICAg
ICAgaW5jbHVkZXM6ICJzZWFyY2hWYWx1ZSwgW3N0YXJ0SW5kZXg9MF0iLAogICAgICAgICBpbmRl
eE9mOiAic2VhcmNoVmFsdWUsIFtzdGFydEluZGV4PTBdIiwKICAgICAgICAgam9pbjogIltzZXBh
cmF0b3I9XCIsXCJdIiwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447289</attachid>
            <date>2021-12-15 15:24:05 -0800</date>
            <delta_ts>2021-12-15 19:01:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234327-20211215162404.patch</filename>
            <type>text/plain</type>
            <size>55417</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMTdmNzU4ZDQ4MDUzMmY1N2M3OWFiYzlkYmUx
ZjMzY2E3ZDE5ZWEuLmY3MmM4YzFkZmQ1NzJmZWIyYTI5MDExNmEzNGRiN2Q2OTNhMzVlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnVpbHRpbnMvQXJy
YXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5KTogQWRkZWQuCisgICAgICAgIChncm91
cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKworICAgICAg
ICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICBBbGxvdyBgQE1hcGAgdG8g
YmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBwcmltb3JkaWFsIGBNYXBgIGluc3RhbmNl
LgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICBBZGQgYHVzZUFy
cmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIxLTEyLTE0ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMxMjU2ZTBhMTA3ZDQxMmM0YTAw
ZjM0MTdjZjJmZThiNS4uYTRlZWUxZDU2YWE4ZmE2MmIwNjVhNWI5ZTk0YTYxODM4ZTc5MmYxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMTItMTUgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBBcnJh
eS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanM6CisKIDIwMjEtMTItMTQgIFJh
enZhbiBDYWxpbWFuICA8cmNhbGltYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENvbXB1dGVkIFBhbmVsOiBBZGp1c3QgY29sb3Igb2YgQ1NTIFZhcmlhYmxlcyBncm91cGlu
ZyBtb2RlIGNvbnRyb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9BcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJh
eVByb3RvdHlwZS5qcwppbmRleCBlYTIxOWE3MDI5Y2UwNjlkYWE3MjUzZjMyZjgwMzAwYmNkNDUz
NTJhLi40Mzg5Y2FlMmVlOWM1ZjRhMWIxMjFiNjUxYThlNjQ2ZDIwY2Q1ODk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0xNTYs
NiArMTU2LDUwIEBAIGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitmdW5jdGlvbiBncm91cEJ5KGNhbGxiYWNrIC8qLCB0aGlz
QXJnICovKQoreworICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90
eXBlLmdyb3VwQnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYg
KCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2
YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKKworICAgIHZhciBncm91cHMgPSBAT2JqZWN0LkBj
cmVhdGUobnVsbCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICB2YXIgdmFsdWUgPSBhcnJheVtpXTsKKyAgICAgICAgdmFyIGtleSA9IGNhbGxiYWNrLkBj
YWxsKHRoaXNBcmcsIHZhbHVlLCBpLCBhcnJheSk7CisgICAgICAgIHZhciBncm91cCA9IChncm91
cHNba2V5XSA/Pz0gW10pOworICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZ3JvdXAsIGdyb3VwLmxl
bmd0aCwgdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXBzOworfQorCitmdW5jdGlvbiBn
cm91cEJ5VG9NYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0g
QHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwIHJlcXVpcmVzIHRo
YXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgIHZhciBsZW5ndGggPSBA
dG9MZW5ndGgoYXJyYXkubGVuZ3RoKTsKKworICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2sp
KQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9IEBhcmd1
bWVudCgxKTsKKworICAgIHZhciBncm91cHMgPSBAT2JqZWN0LkBjcmVhdGUobnVsbCk7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdmFsdWUgPSBh
cnJheVtpXTsKKyAgICAgICAgdmFyIGtleSA9IGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIHZhbHVl
LCBpLCBhcnJheSk7CisgICAgICAgIHZhciBncm91cCA9IChncm91cHNba2V5XSA/Pz0gW10pOwor
ICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZ3JvdXAsIGdyb3VwLmxlbmd0aCwgdmFsdWUpOworICAg
IH0KKworICAgIHZhciByZXN1bHQgPSBuZXcgQE1hcDsKKyAgICBmb3IgKHZhciBrZXkgaW4gZ3Jv
dXBzKQorICAgICAgICByZXN1bHQuQHNldChrZXksIGdyb3Vwc1trZXldKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBmdW5jdGlvbiBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAg
ICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDU2OGRhMTljODY1NzNiOGY3ZjMwZTg4ZDNkZjhlMDE2YjgxODkzMDUu
LjgwYTg3ZWIwMDdhOWQzOGM3MTU0Mjg5NjU4Zjg4MTM4NDZiYzg4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTcwLDYgKzcwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oZGVmaW5lUHJvcGVydHkpIFwKICAgICBtYWNybyhk
ZWZhdWx0UHJvbWlzZVRoZW4pIFwKICAgICBtYWNybyhTZXQpIFwKKyAgICBtYWNybyhNYXApIFwK
ICAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8odHlwZWRBcnJh
eUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlDb250ZW50VHlwZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggNTdh
OTBlYzBmYWNjMTJkZGNkOWFiZjRhYzJmMmRjYmFiMGUwZmFkNy4uZTY2ZThmZGIxNmFmMGY2ODlm
MGFiZWE0ODBhZWNiNDUyYWM4YjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC03Nyw2ICs3Nyw3IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogICAgIHYoYXBwZW5kTWVtY3B5LCBudWxscHRyKSBcCiAgICAgdihob3N0UHJv
bWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwKICAgICB2KFNldCwgbnVsbHB0cikgXAor
ICAgIHYoTWFwLCBudWxscHRyKSBcCiAgICAgdih0aGlzVGltZVZhbHVlLCBudWxscHRyKSBcCiAg
ICAgdihpbXBvcnRJblJlYWxtLCBudWxscHRyKSBcCiAgICAgdihldmFsSW5SZWFsbSwgbnVsbHB0
cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCmluZGV4IDZlYTZiNjdhMDRmMzNkNDE5MzYyN2FkZmE3MDBkMTE3ZmZjYTM2ZDIuLjNmYmVh
NDU0NDQ2ODllYjQzMzQ0NzYzZjNiOGQyM2ExOTJjMjM1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTEwMCw2ICsxMDAsMTAg
QEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJ
VEhPVVRfVFJBTlNJVElPTigiaW5kZXhPZiIsIGFycmF5UHJvdG9GdW5jSW5kZXhPZiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEFycmF5SW5k
ZXhPZkludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04oImxhc3RJbmRleE9mIiwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEpOwogICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5maWx0ZXJQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlRmlsdGVyQ29kZUdlbmVy
YXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworICAgIGlmIChPcHRpb25zOjp1c2VBcnJheUdyb3VwQnlNZXRob2QoKSkgeworICAgICAgICBK
U0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ3JvdXBCeVB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5
Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJ
T04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ3JvdXBCeVRvTWFwUHVibGljTmFt
ZSgpLCBhcnJheVByb3RvdHlwZUdyb3VwQnlUb01hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgSlND
X0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmZsYXRQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlRmxhdENvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmxhdE1hcFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5
cGVGbGF0TWFwQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1l
KCksIGFycmF5UHJvdG90eXBlUmVkdWNlQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMTM3LDYgKzE0MSw4IEBAIHZv
aWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgT3B0aW9uczo6dXNlQXJyYXlGaW5kTGFzdE1ldGhvZCgp
ID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbmRMYXN0SW5kZXhQdWJsaWNO
YW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZmxhdFB1YmxpY05hbWUoKSwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmZsYXRNYXBQdWJsaWNOYW1lKCksCisgICAgICAgIE9wdGlvbnM6OnVzZUFycmF5R3Jv
dXBCeU1ldGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlQ
dWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBPcHRpb25zOjp1c2VBcnJheUdyb3VwQnlN
ZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5VG9NYXBQ
dWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgpLAogICAgICAgICAmdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGljTmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMGU0OGUzMzBjYWY5
ZjE1ZDIwZGVhZGZiZjJhNjg2MzE1MzUzZWE2ZC4uMjg2NGExOTVmNTQyZTA5NDM2YWZmNzgzMTFj
NDk2YjUzNTAyMTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMTM1MCw2ICsxMzUwLDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRh
bE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpTZXQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLT5zZXRDb25zdHJ1Y3RvcigpKTsKICAgICAgICAgfSk7CisgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6TWFw
KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAg
ICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKS0+bWFw
Q29uc3RydWN0b3IoKSk7CisgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1hcEJ1Y2tldEhlYWQpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1hcFByaXZhdGVGdW5jTWFwQnVja2V0SGVh
ZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZWFmNzIzOTY0Yjc3YmFlMTNh
ZmZmNzc3MTE4MWIyNDE5OGJjZmZlNy4uYmY5ZDhhMzgzZjczNzlmYjFiOTljYTI0OGFhOTIwZGMx
NTFmOWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01MzgsNiArNTM4LDcgQEAgYm9vbCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsK
ICAgICAvKiBGZWF0dXJlIEZsYWdzICovXAogICAgIFwKICAgICB2KEJvb2wsIHVzZUFycmF5Rmlu
ZExhc3RNZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgZmluZExhc3QoKSBhbmQgZmlu
ZExhc3RJbmRleCgpIG1ldGhvZHMgb24gQXJyYXkgYW5kICVUeXBlZEFycmF5JS4iKSBcCisgICAg
dihCb29sLCB1c2VBcnJheUdyb3VwQnlNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IGdyb3VwQnkoKSBhbmQgZ3JvdXBCeVRvTWFwKCkgbWV0aG9kcyBvbiBBcnJheS4iKSBcCiAgICAg
dihCb29sLCB1c2VBdE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhv
ZCBvbiBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKICAgICB2KEJvb2wsIHVz
ZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBPYmplY3QuaGFzT3duIG1ldGhvZCIp
IFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlvbiwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3Nl
IHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5j
dGlvblBhcmFtZXRlcnMuanMKaW5kZXggYTdiNjU5MWM2OWNkYmIyYzBhN2NkMTJhZDFlMDAzM2U0
NjI5NWE2Ny4uZjhhOTEzYzBmMjA3ODAzNjIwYTI5NDZmODNlZDFhYzI5NjYxZTI2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1
bmN0aW9uUGFyYW1ldGVycy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCkBAIC0yNTIsNiArMjUyLDgg
QEAgV0kuTmF0aXZlUHJvdG90eXBlRnVuY3Rpb25QYXJhbWV0ZXJzID0gewogICAgICAgICBmaW5k
TGFzdDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAgICAgICBmaW5kTGFzdEluZGV4OiAiY2Fs
bGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGZvckVhY2g6ICJjYWxsYmFjaywgW3RoaXNBcmdd
IiwKKyAgICAgICAgZ3JvdXBCeTogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAorICAgICAgICBncm91
cEJ5VG9NYXA6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAgICAgICAgaW5jbHVkZXM6ICJzZWFy
Y2hWYWx1ZSwgW3N0YXJ0SW5kZXg9MF0iLAogICAgICAgICBpbmRleE9mOiAic2VhcmNoVmFsdWUs
IFtzdGFydEluZGV4PTBdIiwKICAgICAgICAgam9pbjogIltzZXBhcmF0b3I9XCIsXCJdIiwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA1ZDhkMTM3YTdkNzQ0ZTk2NmIxZWQ1N2QzMTg2ZWY3YTVhNjk5MzNiLi4zYThjMGI2YzY0
NjkxYWRhMDI3ZTEyNzdmODE3NmUzY2I3Njg5NjE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIw
MjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3Vw
QnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBqcy9zY3JpcHQtdGVzdHMvYXJyYXktZ3JvdXBCeS5qczogQWRkZWQuCisgICAgICAgICh0b09i
amVjdCk6CisgICAgICAgIChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIpOgorICAgICAgICAoZ3JvdXBC
eUxvZyk6CisgICAgICAgICh0aHJvd0Vycm9yKToKKyAgICAgICAgKiBqcy9hcnJheS1ncm91cEJ5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2FycmF5LWdyb3VwQnktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJheS1ncm91cEJ5VG9NYXAuanM6
IEFkZGVkLgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAocmV2ZXJzZUluc2VydGlvbk9y
ZGVyKToKKyAgICAgICAgKGdyb3VwQnlUb01hcExvZyk6CisgICAgICAgIChzaG91bGRCZU1hcCk6
CisgICAgICAgICh0aHJvd0Vycm9yKToKKyAgICAgICAgKiBqcy9hcnJheS1ncm91cEJ5VG9NYXAu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvYXJyYXktZ3JvdXBCeVRvTWFwLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKKyAgICAgICAgKiByZXNvdXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAg
IChzaG91bGRCZUpTT04pOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlSlNPTi5yZXBsYWNlcik6
IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy9zdGFuZGFsb25lLXByZS5qczoKKyAgICAgICAg
KHNob3VsZEJlSlNPTik6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmVKU09OLnJlcGxhY2VyKTog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanM6Cisg
ICAgICAgIChzaG91bGRCZUpTT04pOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlSlNPTi5yZXBs
YWNlcik6IEFkZGVkLgorICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uIGZvciBjb21wYXJpbmcg
SlNPTiBvYmplY3RzLgorCiAyMDIxLTEyLTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyODY5ODIpOiBBU1NFUlRJT04gRkFJTEVE
OiBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllciA9PSBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBS
ZWN0c1Jvb3RbY2xpcFJlY3RzVHlwZV0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMKaW5kZXggYzZjYmJhMWE0ZTJmNTE0OWZlYjhlZjExNTYxYmU0
NjFlNDY2NTBlNy4uNDk3OTFkZDQ3MTg3YWFhZDdkYTZjMDU3N2UzNzYxZTI0MGQ1MzY0NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKQEAg
LTI5NSw2ICsyOTUsMzggQEAgZnVuY3Rpb24gZGZnU2hvdWxkQmUodGhlRnVuY3Rpb24sIF9hLCBf
YikKICAgICByZXR1cm4gdmFsdWVzLmxlbmd0aDsKIH0KIAorZnVuY3Rpb24gc2hvdWxkQmVKU09O
KF9hLCBfYiwgX3F1aWV0KQoreworICAgIGlmICgodHlwZW9mIF9hICE9ICJmdW5jdGlvbiIgJiYg
dHlwZW9mIF9hICE9ICJzdHJpbmciKSB8fCAodHlwZW9mIF9iICE9ICJmdW5jdGlvbiIgJiYgdHlw
ZW9mIF9iICE9ICJvYmplY3QiKSkKKyAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhw
ZWN0cyBmdW5jdGlvbi9zdHJpbmcgZmlyc3QgYXJndW1lbnQgYW5kIGZ1bmN0aW9uL0pTT04gc2Vj
b25kIGFyZ3VtZW50Iik7CisKKyAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7Cisg
ICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuICIldW5k
ZWZpbmVkJSI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICB2YXIgX2V4Y2Vw
dGlvbjsKKyAgICB2YXIgX2F2OworICAgIHRyeSB7CisgICAgICAgIF9hdiA9IEpTT04uc3RyaW5n
aWZ5KHR5cGVvZiBfYSA9PSAiZnVuY3Rpb24iID8gX2EoKSA6IGV2YWwoX2EpLCByZXBsYWNlcik7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBfZXhjZXB0aW9uID0gZTsKKyAgICB9CisgICAg
dmFyIF9hdm8gPSBfYXYucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIp
OworCisgICAgdmFyIF9idiA9IEpTT04uc3RyaW5naWZ5KHR5cGVvZiBfYiA9PSAiZnVuY3Rpb24i
ID8gX2IoKSA6IF9iLCByZXBsYWNlcik7CisgICAgdmFyIF9idm8gPSBfYnYucmVwbGFjZUFsbCgi
XCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworCisgICAgaWYgKF9leGNlcHRpb24pCisg
ICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2byArICIuIFRocmV3IGV4
Y2VwdGlvbiAiICsgX2V4Y2VwdGlvbik7CisgICAgZWxzZSBpZiAoX2F2ID09PSBfYnYpIHsKKyAg
ICAgICAgaWYgKCFfcXVpZXQpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsg
X2J2byk7CisgICAgfSBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAi
ICsgX2J2byArICIuIFdhcyAiICsgX2F2byArICIuIik7Cit9CisKIC8vIEV4ZWN1dGUgY29uZGl0
aW9uIGV2ZXJ5IDUgbWlsbGlzZWNvbmRzIHVudGlsIGl0IHN1Y2NlZWRzLgogZnVuY3Rpb24gX3dh
aXRGb3JDb25kaXRpb24oY29uZGl0aW9uLCBjb21wbGV0aW9uSGFuZGxlcikKIHsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2FycmF5LWdyb3VwQnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvYXJyYXktZ3JvdXBCeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRhNDZkMjJhMzc3
ODIzNDRiNjMxNDE5YTU3NDZiYzlkZTNhNzUwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2FycmF5LWdyb3VwQnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQ2IEBACitUZXN0
cyBmb3IgQXJyYXkucHJvdG90eXBlLmdyb3VwQnkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgQXJyYXkucHJvdG90eXBlLmdyb3VwQnkubGVuZ3RoIGlzIDEKK1BBU1MgQXJy
YXkucHJvdG90eXBlLmdyb3VwQnkubmFtZSBpcyAnZ3JvdXBCeScKK1BBU1MgW3VuZGVmaW5lZF0u
Z3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gJ2EnIDogJ2InKSBpcyB7ImEiOlt1bmRl
ZmluZWRdfQorUEFTUyBbdW5kZWZpbmVkXS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQp
IGlzIHsidHJ1ZSI6W3VuZGVmaW5lZF19CitQQVNTIChuZXcgQXJyYXkoNCkpLmdyb3VwQnkoKHgp
ID0+IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykgaXMgeyJhIjpbdW5kZWZpbmVkLHVuZGVm
aW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXX0KK1BBU1MgKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgo
eCkgPT4geCA9PT0gdW5kZWZpbmVkKSBpcyB7InRydWUiOlt1bmRlZmluZWQsdW5kZWZpbmVkLHVu
ZGVmaW5lZCx1bmRlZmluZWRdfQorUEFTUyBbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4
ICYgMSkgPyAnYScgOiAnYicpIGlzIHsiYSI6WzAsMl0sImIiOlsxLDNdfQorUEFTUyBbMCwgMSwg
MiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkpIGlzIHsidHJ1ZSI6WzAsMl0sImZhbHNlIjpb
MSwzXX0KK1BBU1MgWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6
ICdiJykgaXMgeyJiIjpbMCwxXSwiYSI6WzIsM119CitQQVNTIFswLCAxLCAyLCAzXS5ncm91cEJ5
KCh4LCBpKSA9PiBpID49IDIpIGlzIHsiZmFsc2UiOlswLDFdLCJ0cnVlIjpbMiwzXX0KK1BBU1Mg
bWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSBp
cyB7ImIiOlswLDFdLCJhIjpbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdfQorUEFTUyBtaXhQYXJ0
aWFsQW5kRmFzdC5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpIGlzIHsiZmFsc2UiOlswLDFdLCJ0
cnVlIjpbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdfQorR2VuZXJpYyBPYmplY3QKK1BBU1MgdG9P
YmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6
ICdiJykgaXMgeyJhIjpbdW5kZWZpbmVkXX0KK1BBU1MgdG9PYmplY3QoW3VuZGVmaW5lZF0pLmdy
b3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCkgaXMgeyJ0cnVlIjpbdW5kZWZpbmVkXX0KK1BB
U1MgdG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQg
PyAnYScgOiAnYicpIGlzIHsiYSI6W3VuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVm
aW5lZF19CitQQVNTIHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0g
dW5kZWZpbmVkKSBpcyB7InRydWUiOlt1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRl
ZmluZWRdfQorUEFTUyB0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAm
IDEpID8gJ2EnIDogJ2InKSBpcyB7ImEiOlswLDJdLCJiIjpbMSwzXX0KK1BBU1MgdG9PYmplY3Qo
WzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSkgaXMgeyJ0cnVlIjpbMCwyXSwi
ZmFsc2UiOlsxLDNdfQorUEFTUyB0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkp
ID0+IGkgPj0gMiA/ICdhJyA6ICdiJykgaXMgeyJiIjpbMCwxXSwiYSI6WzIsM119CitQQVNTIHRv
T2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSBpcyB7ImZhbHNl
IjpbMCwxXSwidHJ1ZSI6WzIsM119CitQQVNTIHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0KS5n
cm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAnYScgOiAnYicpIGlzIHsiYiI6WzAsMV0sImEiOlsy
LHVuZGVmaW5lZCx1bmRlZmluZWQsNV19CitQQVNTIHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0
KS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpIGlzIHsiZmFsc2UiOlswLDFdLCJ0cnVlIjpbMix1
bmRlZmluZWQsdW5kZWZpbmVkLDVdfQorQXJyYXktbGlrZSBvYmplY3Qgd2l0aCBpbnZhbGlkIGxl
bmd0aHMKK1BBU1MgdmFyIG9iaiA9IHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAw
IH07IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5LmNhbGwob2JqLCB0aHJvd0Vycm9yKSBpcyB7fQor
UEFTUyB2YXIgb2JqID0geyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC0wIH07IEFy
cmF5LnByb3RvdHlwZS5ncm91cEJ5LmNhbGwob2JqLCB0aHJvd0Vycm9yKSBpcyB7fQorUEFTUyB2
YXIgb2JqID0geyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC00IH07IEFycmF5LnBy
b3RvdHlwZS5ncm91cEJ5LmNhbGwob2JqLCB0aHJvd0Vycm9yKSBpcyB7fQorUmV2ZXJzZWQgZ2Vu
ZXJpYyBPYmplY3QKK1BBU1MgcmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91
cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpIGlzIHsiYSI6W3VuZGVmaW5l
ZF19CitQQVNTIHJldmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeSgoeCkg
PT4geCA9PT0gdW5kZWZpbmVkKSBpcyB7InRydWUiOlt1bmRlZmluZWRdfQorUEFTUyByZXZlcnNl
SW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmlu
ZWQgPyAnYScgOiAnYicpIGlzIHsiYSI6W3VuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVu
ZGVmaW5lZF19CitQQVNTIHJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcgQXJyYXkoNCkpLmdyb3Vw
QnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCkgaXMgeyJ0cnVlIjpbdW5kZWZpbmVkLHVuZGVmaW5l
ZCx1bmRlZmluZWQsdW5kZWZpbmVkXX0KK1BBU1MgcmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAx
LCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAnYScgOiAnYicpIGlzIHsiYSI6WzAs
Ml0sImIiOlsxLDNdfQorUEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5KCh4KSA9PiAhKHggJiAxKSkgaXMgeyJ0cnVlIjpbMCwyXSwiZmFsc2UiOlsxLDNdfQor
UEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4LCBpKSA9
PiBpID49IDIgPyAnYScgOiAnYicpIGlzIHsiYiI6WzAsMV0sImEiOlsyLDNdfQorUEFTUyByZXZl
cnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIp
IGlzIHsiZmFsc2UiOlswLDFdLCJ0cnVlIjpbMiwzXX0KK1BBU1MgcmV2ZXJzZUluc2VydGlvbk9y
ZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAnYScgOiAn
YicpIGlzIHsiYiI6WzAsMV0sImEiOlsyLHVuZGVmaW5lZCx1bmRlZmluZWQsNV19CitQQVNTIHJl
dmVyc2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4g
aSA+PSAyKSBpcyB7ImZhbHNlIjpbMCwxXSwidHJ1ZSI6WzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1
XX0KK0V2YWx1YXRpb24gb3JkZXIKKywwLHsibGVuZ3RoIjoxfQorUEFTUyByZXZlcnNlSW5zZXJ0
aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkID8gJ2EnIDogJ2InKSkgaXMgeyJhIjpbdW5kZWZpbmVkXX0KKywwLHsibGVuZ3RoIjox
fQorUEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnkoZ3JvdXBC
eUxvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkgaXMgeyJ0cnVlIjpbdW5kZWZpbmVkXX0KKyww
LHsibGVuZ3RoIjo0fQorLDEseyJsZW5ndGgiOjR9CissMix7Imxlbmd0aCI6NH0KKywzLHsibGVu
Z3RoIjo0fQorUEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5
KGdyb3VwQnlMb2coKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykpIGlzIHsiYSI6
W3VuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZF19CissMCx7Imxlbmd0aCI6
NH0KKywxLHsibGVuZ3RoIjo0fQorLDIseyJsZW5ndGgiOjR9CissMyx7Imxlbmd0aCI6NH0KK1BB
U1MgcmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeShncm91cEJ5TG9n
KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBpcyB7InRydWUiOlt1bmRlZmluZWQsdW5kZWZpbmVk
LHVuZGVmaW5lZCx1bmRlZmluZWRdfQorMCwwLHsiMCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVu
Z3RoIjo0fQorMSwxLHsiMCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVuZ3RoIjo0fQorMiwyLHsi
MCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVuZ3RoIjo0fQorMywzLHsiMCI6MCwiMSI6MSwiMiI6
MiwiMyI6MywibGVuZ3RoIjo0fQorUEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIs
IDNdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgpID0+ICEoeCAmIDEpID8gJ2EnIDogJ2InKSkgaXMg
eyJhIjpbMCwyXSwiYiI6WzEsM119CiswLDAseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5n
dGgiOjR9CisxLDEseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CisyLDIseyIw
IjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CiszLDMseyIwIjowLCIxIjoxLCIyIjoy
LCIzIjozLCJsZW5ndGgiOjR9CitQQVNTIHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwg
M10pLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCkgPT4gISh4ICYgMSkpKSBpcyB7InRydWUiOlswLDJd
LCJmYWxzZSI6WzEsM119CiswLDAseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9
CisxLDEseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CisyLDIseyIwIjowLCIx
IjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CiszLDMseyIwIjowLCIxIjoxLCIyIjoyLCIzIjoz
LCJsZW5ndGgiOjR9CitQQVNTIHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdy
b3VwQnkoZ3JvdXBCeUxvZygoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSkgaXMgeyJiIjpb
MCwxXSwiYSI6WzIsM119CiswLDAseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9
CisxLDEseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CisyLDIseyIwIjowLCIx
IjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CiszLDMseyIwIjowLCIxIjoxLCIyIjoyLCIzIjoz
LCJsZW5ndGgiOjR9CitQQVNTIHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdy
b3VwQnkoZ3JvdXBCeUxvZygoeCwgaSkgPT4gaSA+PSAyKSkgaXMgeyJmYWxzZSI6WzAsMV0sInRy
dWUiOlsyLDNdfQorMCwwLHsiMCI6MCwiMSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorMSwx
LHsiMCI6MCwiMSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorMiwyLHsiMCI6MCwiMSI6MSwi
MiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorLDMseyIwIjowLCIxIjoxLCIyIjoyLCI1Ijo1LCJsZW5n
dGgiOjZ9CissNCx7IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0KKzUsNSx7IjAi
OjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0KK1BBU1MgcmV2ZXJzZUluc2VydGlvbk9y
ZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0g
MiA/ICdhJyA6ICdiJykpIGlzIHsiYiI6WzAsMV0sImEiOlsyLHVuZGVmaW5lZCx1bmRlZmluZWQs
NV19CiswLDAseyIwIjowLCIxIjoxLCIyIjoyLCI1Ijo1LCJsZW5ndGgiOjZ9CisxLDEseyIwIjow
LCIxIjoxLCIyIjoyLCI1Ijo1LCJsZW5ndGgiOjZ9CisyLDIseyIwIjowLCIxIjoxLCIyIjoyLCI1
Ijo1LCJsZW5ndGgiOjZ9CissMyx7IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0K
Kyw0LHsiMCI6MCwiMSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorNSw1LHsiMCI6MCwiMSI6
MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorUEFTUyByZXZlcnNlSW5zZXJ0aW9uT3JkZXIobWl4
UGFydGlhbEFuZEZhc3QpLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCwgaSkgPT4gaSA+PSAyKSkgaXMg
eyJmYWxzZSI6WzAsMV0sInRydWUiOlsyLHVuZGVmaW5lZCx1bmRlZmluZWQsNV19CissMCxbbnVs
bF0KK1BBU1MgKFt1bmRlZmluZWRdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgpID0+IHggPT09IHVu
ZGVmaW5lZCA/ICdhJyA6ICdiJykpIGlzIHsiYSI6W3VuZGVmaW5lZF19CissMCxbbnVsbF0KK1BB
U1MgKFt1bmRlZmluZWRdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgpID0+IHggPT09IHVuZGVmaW5l
ZCkpIGlzIHsidHJ1ZSI6W3VuZGVmaW5lZF19CissMCxbbnVsbCxudWxsLG51bGwsbnVsbF0KKywx
LFtudWxsLG51bGwsbnVsbCxudWxsXQorLDIsW251bGwsbnVsbCxudWxsLG51bGxdCissMyxbbnVs
bCxudWxsLG51bGwsbnVsbF0KK1BBU1MgKG5ldyBBcnJheSg0KSkuZ3JvdXBCeShncm91cEJ5TG9n
KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSBpcyB7ImEiOlt1bmRlZmluZWQs
dW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdfQorLDAsW251bGwsbnVsbCxudWxsLG51bGxd
CissMSxbbnVsbCxudWxsLG51bGwsbnVsbF0KKywyLFtudWxsLG51bGwsbnVsbCxudWxsXQorLDMs
W251bGwsbnVsbCxudWxsLG51bGxdCitQQVNTIChuZXcgQXJyYXkoNCkpLmdyb3VwQnkoZ3JvdXBC
eUxvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkgaXMgeyJ0cnVlIjpbdW5kZWZpbmVkLHVuZGVm
aW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXX0KKzAsMCxbMCwxLDIsM10KKzEsMSxbMCwxLDIsM10K
KzIsMixbMCwxLDIsM10KKzMsMyxbMCwxLDIsM10KK1BBU1MgKFswLCAxLCAyLCAzXSkuZ3JvdXBC
eShncm91cEJ5TG9nKCh4KSA9PiAhKHggJiAxKSA/ICdhJyA6ICdiJykpIGlzIHsiYSI6WzAsMl0s
ImIiOlsxLDNdfQorMCwwLFswLDEsMiwzXQorMSwxLFswLDEsMiwzXQorMiwyLFswLDEsMiwzXQor
MywzLFswLDEsMiwzXQorUEFTUyAoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgp
ID0+ICEoeCAmIDEpKSkgaXMgeyJ0cnVlIjpbMCwyXSwiZmFsc2UiOlsxLDNdfQorMCwwLFswLDEs
MiwzXQorMSwxLFswLDEsMiwzXQorMiwyLFswLDEsMiwzXQorMywzLFswLDEsMiwzXQorUEFTUyAo
WzAsIDEsIDIsIDNdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6
ICdiJykpIGlzIHsiYiI6WzAsMV0sImEiOlsyLDNdfQorMCwwLFswLDEsMiwzXQorMSwxLFswLDEs
MiwzXQorMiwyLFswLDEsMiwzXQorMywzLFswLDEsMiwzXQorUEFTUyAoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0gMikpIGlzIHsiZmFsc2UiOlswLDFdLCJ0
cnVlIjpbMiwzXX0KKzAsMCxbMCwxLDIsbnVsbCxudWxsLDVdCisxLDEsWzAsMSwyLG51bGwsbnVs
bCw1XQorMiwyLFswLDEsMixudWxsLG51bGwsNV0KKywzLFswLDEsMixudWxsLG51bGwsNV0KKyw0
LFswLDEsMixudWxsLG51bGwsNV0KKzUsNSxbMCwxLDIsbnVsbCxudWxsLDVdCitQQVNTIChtaXhQ
YXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeShncm91cEJ5TG9nKCh4LCBpKSA9PiBpID49IDIgPyAnYScg
OiAnYicpKSBpcyB7ImIiOlswLDFdLCJhIjpbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdfQorMCww
LFswLDEsMixudWxsLG51bGwsNV0KKzEsMSxbMCwxLDIsbnVsbCxudWxsLDVdCisyLDIsWzAsMSwy
LG51bGwsbnVsbCw1XQorLDMsWzAsMSwyLG51bGwsbnVsbCw1XQorLDQsWzAsMSwyLG51bGwsbnVs
bCw1XQorNSw1LFswLDEsMixudWxsLG51bGwsNV0KK1BBU1MgKG1peFBhcnRpYWxBbmRGYXN0KS5n
cm91cEJ5KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0gMikpIGlzIHsiZmFsc2UiOlswLDFdLCJ0
cnVlIjpbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdfQorRXh0cmEgY2FsbGJhY2sgcGFyYW1ldGVy
cworUEFTUyBbMCwgMSwgMiwgM10uZ3JvdXBCeShmdW5jdGlvbihpLCBqLCBrLCBsLCBtKSB7IHJl
dHVybiBtID0gIW07IH0pIGlzIHsidHJ1ZSI6WzAsMSwyLDNdfQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2FycmF5LWdyb3VwQnkuaHRtbCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWdyb3VwQnkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wZWU0MDNlNjVhNWY4OTg4NmE3MTBmZWQ4NjUwOTdjZTRlYmQ5ZGY2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZ3JvdXBCeS5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VBcnJheUdyb3VwQnlN
ZXRob2Q9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2FycmF5LWdyb3VwQnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZ3JvdXBCeVRvTWFwLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWdyb3VwQnlUb01hcC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTg4M2JhNDdhMmQ5OWI3Yjg3NWQ1OWFhNGZiYjhhZmVjMTM0MzM2MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2FycmF5LWdyb3VwQnlUb01hcC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNDYgQEAKK1Rlc3RzIGZvciBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRv
TWFwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFycmF5LnByb3RvdHlw
ZS5ncm91cEJ5VG9NYXAubGVuZ3RoIGlzIDEKK1BBU1MgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlU
b01hcC5uYW1lIGlzICdncm91cEJ5VG9NYXAnCitQQVNTIEFycmF5LmZyb20oW3VuZGVmaW5lZF0u
Z3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSBpcyBbWyJh
IixbdW5kZWZpbmVkXV1dCitQQVNTIEFycmF5LmZyb20oW3VuZGVmaW5lZF0uZ3JvdXBCeVRvTWFw
KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBpcyBbWyJ0cnVlIixbdW5kZWZpbmVkXV1dCitQQVNT
IEFycmF5LmZyb20oKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRl
ZmluZWQgPyAnYScgOiAnYicpKSBpcyBbWyJhIixbdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmlu
ZWQsdW5kZWZpbmVkXV1dCitQQVNTIEFycmF5LmZyb20oKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRv
TWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBpcyBbWyJ0cnVlIixbdW5kZWZpbmVkLHVuZGVm
aW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXV1dCitQQVNTIEFycmF5LmZyb20oWzAsIDEsIDIsIDNd
Lmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAnYScgOiAnYicpKSBpcyBbWyJhIixbMCwy
XV0sWyJiIixbMSwzXV1dCitQQVNTIEFycmF5LmZyb20oWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01h
cCgoeCkgPT4gISh4ICYgMSkpKSBpcyBbWyJ0cnVlIixbMCwyXV0sWyJmYWxzZSIsWzEsM11dXQor
UEFTUyBBcnJheS5mcm9tKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0g
MiA/ICdhJyA6ICdiJykpIGlzIFtbImIiLFswLDFdXSxbImEiLFsyLDNdXV0KK1BBU1MgQXJyYXku
ZnJvbShbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpKSBpcyBbWyJm
YWxzZSIsWzAsMV1dLFsidHJ1ZSIsWzIsM11dXQorUEFTUyBBcnJheS5mcm9tKG1peFBhcnRpYWxB
bmRGYXN0Lmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSkgaXMgW1si
YiIsWzAsMV1dLFsiYSIsWzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1XV1dCitQQVNTIEFycmF5LmZy
b20obWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpKSBpcyBb
WyJmYWxzZSIsWzAsMV1dLFsidHJ1ZSIsWzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1XV1dCitHZW5l
cmljIE9iamVjdAorUEFTUyBBcnJheS5mcm9tKHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5
VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykpIGlzIFtbImEiLFt1bmRl
ZmluZWRdXV0KK1BBU1MgQXJyYXkuZnJvbSh0b09iamVjdChbdW5kZWZpbmVkXSkuZ3JvdXBCeVRv
TWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBpcyBbWyJ0cnVlIixbdW5kZWZpbmVkXV1dCitQ
QVNTIEFycmF5LmZyb20odG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+
IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykpIGlzIFtbImEiLFt1bmRlZmluZWQsdW5kZWZp
bmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdXV0KK1BBU1MgQXJyYXkuZnJvbSh0b09iamVjdChuZXcg
QXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkgaXMgW1sidHJ1
ZSIsW3VuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZF1dXQorUEFTUyBBcnJh
eS5mcm9tKHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAx
KSA/ICdhJyA6ICdiJykpIGlzIFtbImEiLFswLDJdXSxbImIiLFsxLDNdXV0KK1BBU1MgQXJyYXku
ZnJvbSh0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkp
KSBpcyBbWyJ0cnVlIixbMCwyXV0sWyJmYWxzZSIsWzEsM11dXQorUEFTUyBBcnJheS5mcm9tKHRv
T2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAnYScg
OiAnYicpKSBpcyBbWyJiIixbMCwxXV0sWyJhIixbMiwzXV1dCitQQVNTIEFycmF5LmZyb20odG9P
YmplY3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMikpIGlzIFtb
ImZhbHNlIixbMCwxXV0sWyJ0cnVlIixbMiwzXV1dCitQQVNTIEFycmF5LmZyb20odG9PYmplY3Qo
bWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDog
J2InKSkgaXMgW1siYiIsWzAsMV1dLFsiYSIsWzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1XV1dCitQ
QVNTIEFycmF5LmZyb20odG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcCgo
eCwgaSkgPT4gaSA+PSAyKSkgaXMgW1siZmFsc2UiLFswLDFdXSxbInRydWUiLFsyLHVuZGVmaW5l
ZCx1bmRlZmluZWQsNV1dXQorQXJyYXktbGlrZSBvYmplY3Qgd2l0aCBpbnZhbGlkIGxlbmd0aHMK
K1BBU1MgQXJyYXkuZnJvbShBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLmNhbGwoeyAwOiAw
LCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IDAgfSwgdGhyb3dFcnJvcikpIGlzIFtdCitQQVNT
IEFycmF5LmZyb20oQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTog
MSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCB0aHJvd0Vycm9yKSkgaXMgW10KK1BBU1MgQXJy
YXkuZnJvbShBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLmNhbGwoeyAwOiAwLCAxOiAxLCAy
OiAyLCAzOiAzLCBsZW5ndGg6IC00IH0sIHRocm93RXJyb3IpKSBpcyBbXQorUmV2ZXJzZWQgZ2Vu
ZXJpYyBPYmplY3QKK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVm
aW5lZF0pLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gJ2EnIDogJ2InKSkg
aXMgW1siYSIsW3VuZGVmaW5lZF1dXQorUEFTUyBBcnJheS5mcm9tKHJldmVyc2VJbnNlcnRpb25P
cmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBp
cyBbWyJ0cnVlIixbdW5kZWZpbmVkXV1dCitQQVNTIEFycmF5LmZyb20ocmV2ZXJzZUluc2VydGlv
bk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQg
PyAnYScgOiAnYicpKSBpcyBbWyJhIixbdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5k
ZWZpbmVkXV1dCitQQVNTIEFycmF5LmZyb20ocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJh
eSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSBpcyBbWyJ0cnVlIixb
dW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkXV1dCitQQVNTIEFycmF5LmZy
b20ocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9
PiAhKHggJiAxKSA/ICdhJyA6ICdiJykpIGlzIFtbImEiLFswLDJdXSxbImIiLFsxLDNdXV0KK1BB
U1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5
VG9NYXAoKHgpID0+ICEoeCAmIDEpKSkgaXMgW1sidHJ1ZSIsWzAsMl1dLFsiZmFsc2UiLFsxLDNd
XV0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykpIGlzIFtbImIiLFswLDFd
XSxbImEiLFsyLDNdXV0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAs
IDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMikpIGlzIFtbImZhbHNlIixb
MCwxXV0sWyJ0cnVlIixbMiwzXV1dCitQQVNTIEFycmF5LmZyb20ocmV2ZXJzZUluc2VydGlvbk9y
ZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdh
JyA6ICdiJykpIGlzIFtbImIiLFswLDFdXSxbImEiLFsyLHVuZGVmaW5lZCx1bmRlZmluZWQsNV1d
XQorUEFTUyBBcnJheS5mcm9tKHJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFz
dCkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpKSBpcyBbWyJmYWxzZSIsWzAsMV1dLFsi
dHJ1ZSIsWzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1XV1dCitFdmFsdWF0aW9uIG9yZGVyCissMCx7
Imxlbmd0aCI6MX0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVm
aW5lZF0pLmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+IHggPT09IHVuZGVmaW5l
ZCA/ICdhJyA6ICdiJykpKSBpcyBbWyJhIixbdW5kZWZpbmVkXV1dCissMCx7Imxlbmd0aCI6MX0K
K1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3Vw
QnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+IHggPT09IHVuZGVmaW5lZCkpKSBpcyBbWyJ0
cnVlIixbdW5kZWZpbmVkXV1dCissMCx7Imxlbmd0aCI6NH0KKywxLHsibGVuZ3RoIjo0fQorLDIs
eyJsZW5ndGgiOjR9CissMyx7Imxlbmd0aCI6NH0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5z
ZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4
KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSkgaXMgW1siYSIsW3VuZGVmaW5lZCx1
bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZF1dXQorLDAseyJsZW5ndGgiOjR9CissMSx7Imxl
bmd0aCI6NH0KKywyLHsibGVuZ3RoIjo0fQorLDMseyJsZW5ndGgiOjR9CitQQVNTIEFycmF5LmZy
b20ocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKGdyb3Vw
QnlUb01hcExvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkpIGlzIFtbInRydWUiLFt1bmRlZmlu
ZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdXV0KKzAsMCx7IjAiOjAsIjEiOjEsIjIi
OjIsIjMiOjMsImxlbmd0aCI6NH0KKzEsMSx7IjAiOjAsIjEiOjEsIjIiOjIsIjMiOjMsImxlbmd0
aCI6NH0KKzIsMix7IjAiOjAsIjEiOjEsIjIiOjIsIjMiOjMsImxlbmd0aCI6NH0KKzMsMyx7IjAi
OjAsIjEiOjEsIjIiOjIsIjMiOjMsImxlbmd0aCI6NH0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNl
SW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9n
KCh4KSA9PiAhKHggJiAxKSA/ICdhJyA6ICdiJykpKSBpcyBbWyJhIixbMCwyXV0sWyJiIixbMSwz
XV1dCiswLDAseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CisxLDEseyIwIjow
LCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9CisyLDIseyIwIjowLCIxIjoxLCIyIjoyLCIz
IjozLCJsZW5ndGgiOjR9CiszLDMseyIwIjowLCIxIjoxLCIyIjoyLCIzIjozLCJsZW5ndGgiOjR9
CitQQVNTIEFycmF5LmZyb20ocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3Jv
dXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCkgPT4gISh4ICYgMSkpKSkgaXMgW1sidHJ1ZSIs
WzAsMl1dLFsiZmFsc2UiLFsxLDNdXV0KKzAsMCx7IjAiOjAsIjEiOjEsIjIiOjIsIjMiOjMsImxl
bmd0aCI6NH0KKzEsMSx7IjAiOjAsIjEiOjEsIjIiOjIsIjMiOjMsImxlbmd0aCI6NH0KKzIsMix7
IjAiOjAsIjEiOjEsIjIiOjIsIjMiOjMsImxlbmd0aCI6NH0KKzMsMyx7IjAiOjAsIjEiOjEsIjIi
OjIsIjMiOjMsImxlbmd0aCI6NH0KK1BBU1MgQXJyYXkuZnJvbShyZXZlcnNlSW5zZXJ0aW9uT3Jk
ZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBpKSA9PiBp
ID49IDIgPyAnYScgOiAnYicpKSkgaXMgW1siYiIsWzAsMV1dLFsiYSIsWzIsM11dXQorMCwwLHsi
MCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVuZ3RoIjo0fQorMSwxLHsiMCI6MCwiMSI6MSwiMiI6
MiwiMyI6MywibGVuZ3RoIjo0fQorMiwyLHsiMCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVuZ3Ro
Ijo0fQorMywzLHsiMCI6MCwiMSI6MSwiMiI6MiwiMyI6MywibGVuZ3RoIjo0fQorUEFTUyBBcnJh
eS5mcm9tKHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcChn
cm91cEJ5VG9NYXBMb2coKHgsIGkpID0+IGkgPj0gMikpKSBpcyBbWyJmYWxzZSIsWzAsMV1dLFsi
dHJ1ZSIsWzIsM11dXQorMCwwLHsiMCI6MCwiMSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQor
MSwxLHsiMCI6MCwiMSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorMiwyLHsiMCI6MCwiMSI6
MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorLDMseyIwIjowLCIxIjoxLCIyIjoyLCI1Ijo1LCJs
ZW5ndGgiOjZ9CissNCx7IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0KKzUsNSx7
IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0KK1BBU1MgQXJyYXkuZnJvbShyZXZl
cnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcChncm91cEJ5
VG9NYXBMb2coKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykpKSBpcyBbWyJiIixbMCwxXV0s
WyJhIixbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdXV0KKzAsMCx7IjAiOjAsIjEiOjEsIjIiOjIs
IjUiOjUsImxlbmd0aCI6Nn0KKzEsMSx7IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6
Nn0KKzIsMix7IjAiOjAsIjEiOjEsIjIiOjIsIjUiOjUsImxlbmd0aCI6Nn0KKywzLHsiMCI6MCwi
MSI6MSwiMiI6MiwiNSI6NSwibGVuZ3RoIjo2fQorLDQseyIwIjowLCIxIjoxLCIyIjoyLCI1Ijo1
LCJsZW5ndGgiOjZ9Cis1LDUseyIwIjowLCIxIjoxLCIyIjoyLCI1Ijo1LCJsZW5ndGgiOjZ9CitQ
QVNTIEFycmF5LmZyb20ocmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5n
cm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBpKSA9PiBpID49IDIpKSkgaXMgW1siZmFs
c2UiLFswLDFdXSxbInRydWUiLFsyLHVuZGVmaW5lZCx1bmRlZmluZWQsNV1dXQorLDAsW251bGxd
CitQQVNTIEFycmF5LmZyb20oKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFw
TG9nKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSkgaXMgW1siYSIsW3VuZGVm
aW5lZF1dXQorLDAsW251bGxdCitQQVNTIEFycmF5LmZyb20oKFt1bmRlZmluZWRdKS5ncm91cEJ5
VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpKSkgaXMgW1sidHJ1
ZSIsW3VuZGVmaW5lZF1dXQorLDAsW251bGwsbnVsbCxudWxsLG51bGxdCissMSxbbnVsbCxudWxs
LG51bGwsbnVsbF0KKywyLFtudWxsLG51bGwsbnVsbCxudWxsXQorLDMsW251bGwsbnVsbCxudWxs
LG51bGxdCitQQVNTIEFycmF5LmZyb20oKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKGdyb3Vw
QnlUb01hcExvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gJ2EnIDogJ2InKSkpIGlzIFtbImEi
LFt1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWRdXV0KKywwLFtudWxsLG51
bGwsbnVsbCxudWxsXQorLDEsW251bGwsbnVsbCxudWxsLG51bGxdCissMixbbnVsbCxudWxsLG51
bGwsbnVsbF0KKywzLFtudWxsLG51bGwsbnVsbCxudWxsXQorUEFTUyBBcnJheS5mcm9tKChuZXcg
QXJyYXkoNCkpLmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+IHggPT09IHVuZGVm
aW5lZCkpKSBpcyBbWyJ0cnVlIixbdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZp
bmVkXV1dCiswLDAsWzAsMSwyLDNdCisxLDEsWzAsMSwyLDNdCisyLDIsWzAsMSwyLDNdCiszLDMs
WzAsMSwyLDNdCitQQVNTIEFycmF5LmZyb20oKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKGdy
b3VwQnlUb01hcExvZygoeCkgPT4gISh4ICYgMSkgPyAnYScgOiAnYicpKSkgaXMgW1siYSIsWzAs
Ml1dLFsiYiIsWzEsM11dXQorMCwwLFswLDEsMiwzXQorMSwxLFswLDEsMiwzXQorMiwyLFswLDEs
MiwzXQorMywzLFswLDEsMiwzXQorUEFTUyBBcnJheS5mcm9tKChbMCwgMSwgMiwgM10pLmdyb3Vw
QnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+ICEoeCAmIDEpKSkpIGlzIFtbInRydWUiLFsw
LDJdXSxbImZhbHNlIixbMSwzXV1dCiswLDAsWzAsMSwyLDNdCisxLDEsWzAsMSwyLDNdCisyLDIs
WzAsMSwyLDNdCiszLDMsWzAsMSwyLDNdCitQQVNTIEFycmF5LmZyb20oKFswLCAxLCAyLCAzXSku
Z3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2In
KSkpIGlzIFtbImIiLFswLDFdXSxbImEiLFsyLDNdXV0KKzAsMCxbMCwxLDIsM10KKzEsMSxbMCwx
LDIsM10KKzIsMixbMCwxLDIsM10KKzMsMyxbMCwxLDIsM10KK1BBU1MgQXJyYXkuZnJvbSgoWzAs
IDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBpKSA9PiBpID49IDIp
KSkgaXMgW1siZmFsc2UiLFswLDFdXSxbInRydWUiLFsyLDNdXV0KKzAsMCxbMCwxLDIsbnVsbCxu
dWxsLDVdCisxLDEsWzAsMSwyLG51bGwsbnVsbCw1XQorMiwyLFswLDEsMixudWxsLG51bGwsNV0K
KywzLFswLDEsMixudWxsLG51bGwsNV0KKyw0LFswLDEsMixudWxsLG51bGwsNV0KKzUsNSxbMCwx
LDIsbnVsbCxudWxsLDVdCitQQVNTIEFycmF5LmZyb20oKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91
cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBpKSA9PiBpID49IDIgPyAnYScgOiAnYicpKSkg
aXMgW1siYiIsWzAsMV1dLFsiYSIsWzIsdW5kZWZpbmVkLHVuZGVmaW5lZCw1XV1dCiswLDAsWzAs
MSwyLG51bGwsbnVsbCw1XQorMSwxLFswLDEsMixudWxsLG51bGwsNV0KKzIsMixbMCwxLDIsbnVs
bCxudWxsLDVdCissMyxbMCwxLDIsbnVsbCxudWxsLDVdCissNCxbMCwxLDIsbnVsbCxudWxsLDVd
Cis1LDUsWzAsMSwyLG51bGwsbnVsbCw1XQorUEFTUyBBcnJheS5mcm9tKChtaXhQYXJ0aWFsQW5k
RmFzdCkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCwgaSkgPT4gaSA+PSAyKSkpIGlz
IFtbImZhbHNlIixbMCwxXV0sWyJ0cnVlIixbMix1bmRlZmluZWQsdW5kZWZpbmVkLDVdXV0KK0V4
dHJhIGNhbGxiYWNrIHBhcmFtZXRlcnMKK1BBU1MgQXJyYXkuZnJvbShbMCwgMSwgMiwgM10uZ3Jv
dXBCeVRvTWFwKGZ1bmN0aW9uKGksIGosIGssIGwsIG0pIHsgcmV0dXJuIG0gPSAhbTsgfSkpIGlz
IFtbInRydWUiLFswLDEsMiwzXV1dCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktZ3JvdXBC
eVRvTWFwLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1ncm91cEJ5VG9NYXAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MDU5MTA5ZGY3NDYwN2NiNTM2OTFjMzQ1M2YzZmU2OWUwNWU2MWE5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyYXktZ3JvdXBCeVRvTWFwLmh0bWwKQEAgLTAs
MCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0tLXVzZUFycmF5R3JvdXBCeU1l
dGhvZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvYXJyYXktZ3JvdXBCeVRvTWFwLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1ncm91
cEJ5LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LWdyb3VwQnkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGEwNDQ4NGVlZTRjYjkwOTk0NjA1ODQ1M2Q5NGYyY2ZiNjI1OTQ4NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1ncm91cEJ5Lmpz
CkBAIC0wLDAgKzEsMTQzIEBACitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIEFycmF5LnByb3RvdHlw
ZS5ncm91cEJ5Iik7CisKK3Nob3VsZEJlKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5sZW5ndGgi
LCAiMSIpOworc2hvdWxkQmUoIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5Lm5hbWUiLCAiJ2dyb3Vw
QnknIik7CisKK3ZhciBzcGFyc2VBcnJheUxlbmd0aCA9IDY7Cit2YXIgbWl4UGFydGlhbEFuZEZh
c3QgPSBuZXcgQXJyYXkoc3BhcnNlQXJyYXlMZW5ndGgpOworbWl4UGFydGlhbEFuZEZhc3Rbc3Bh
cnNlQXJyYXlMZW5ndGggLSAxXSA9IHNwYXJzZUFycmF5TGVuZ3RoIC0gMTsKK2Zvcih2YXIgaSA9
IDA7IGkgPCAzOyArK2kpCisgICAgbWl4UGFydGlhbEFuZEZhc3RbaV0gPSBpOworCitmdW5jdGlv
biB0b09iamVjdChhcnJheSkgeworICAgIHZhciByZXN1bHQgPSB7fTsKKyAgICByZXN1bHQubGVu
Z3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZvciAodmFyIGkgaW4gYXJyYXkpCisgICAgICAgIHJl
c3VsdFtpXSA9IGFycmF5W2ldOworICAgIHJlc3VsdC5ncm91cEJ5ID0gQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKGFycmF5KSB7CisgICAgdmFyIG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICB2
YXIgcHJvcHMgPSBbXTsKKyAgICBmb3IgKHZhciBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVz
aChpKTsKKyAgICB2YXIgcmVzdWx0ID0ge307CisgICAgZm9yICh2YXIgaSA9IHByb3BzLmxlbmd0
aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3Bz
W2ldXTsKKyAgICByZXN1bHQuZ3JvdXBCeSA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5OworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGdyb3VwQnlMb2coZikgeworICAgIHJldHVy
biBmdW5jdGlvbih4LCBpLCBhcnJheSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZGVi
dWcoW3gsIGksIEpTT04uc3RyaW5naWZ5KGFycmF5KV0udG9TdHJpbmcoKSk7CisgICAgICAgIHJl
dHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc2hvdWxk
QmVKU09OKCJbdW5kZWZpbmVkXS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScg
OiAnYicpIiwge2E6IFt1bmRlZmluZWRdfSk7CitzaG91bGRCZUpTT04oIlt1bmRlZmluZWRdLmdy
b3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCkiLCB7dHJ1ZTogW3VuZGVmaW5lZF19KTsKKwor
c2hvdWxkQmVKU09OKCIobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmlu
ZWQgPyAnYScgOiAnYicpIiwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1
bmRlZmluZWRdfSk7CitzaG91bGRCZUpTT04oIihuZXcgQXJyYXkoNCkpLmdyb3VwQnkoKHgpID0+
IHggPT09IHVuZGVmaW5lZCkiLCB7dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVKU09OKCJbMCwgMSwgMiwgM10uZ3JvdXBCeSgo
eCkgPT4gISh4ICYgMSkgPyAnYScgOiAnYicpIiwge2E6IFswLCAyXSwgYjogWzEsIDNdfSk7Citz
aG91bGRCZUpTT04oIlswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSkiLCB7dHJ1
ZTogWzAsIDJdLCBmYWxzZTogWzEsIDNdfSk7CisKK3Nob3VsZEJlSlNPTigiWzAsIDEsIDIsIDNd
Lmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7YjogWzAsIDFdLCBhOiBb
MiwgM119KTsKK3Nob3VsZEJlSlNPTigiWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgsIGkpID0+IGkg
Pj0gMikiLCB7ZmFsc2U6IFswLCAxXSwgdHJ1ZTogWzIsIDNdfSk7CisKK3Nob3VsZEJlSlNPTigi
bWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSIs
IHtiOiBbMCwgMV0sIGE6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5n
dGggLSAxXX0pOworc2hvdWxkQmVKU09OKCJtaXhQYXJ0aWFsQW5kRmFzdC5ncm91cEJ5KCh4LCBp
KSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKK2RlYnVnKCJHZW5lcmljIE9iamVj
dCIpOworCitzaG91bGRCZUpTT04oInRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9
PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpIiwge2E6IFt1bmRlZmluZWRdfSk7CitzaG91
bGRCZUpTT04oInRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRl
ZmluZWQpIiwge3RydWU6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlSlNPTigidG9PYmplY3Qo
bmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicp
Iiwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7Citz
aG91bGRCZUpTT04oInRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0g
dW5kZWZpbmVkKSIsIHt0cnVlOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkXX0pOworCitzaG91bGRCZUpTT04oInRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBC
eSgoeCkgPT4gISh4ICYgMSkgPyAnYScgOiAnYicpIiwge2E6IFswLCAyXSwgYjogWzEsIDNdfSk7
CitzaG91bGRCZUpTT04oInRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4
ICYgMSkpIiwge3RydWU6IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRCZUpTT04o
InRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDog
J2InKSIsIHtiOiBbMCwgMV0sIGE6IFsyLCAzXX0pOworc2hvdWxkQmVKU09OKCJ0b09iamVjdChb
MCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMikiLCB7ZmFsc2U6IFswLCAxXSwg
dHJ1ZTogWzIsIDNdfSk7CisKK3Nob3VsZEJlSlNPTigidG9PYmplY3QobWl4UGFydGlhbEFuZEZh
c3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7YjogWzAsIDFdLCBh
OiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKK3No
b3VsZEJlSlNPTigidG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+
IGkgPj0gMikiLCB7ZmFsc2U6IFswLCAxXSwgdHJ1ZTogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisKKworCitkZWJ1ZygiQXJyYXktbGlrZSBvYmpl
Y3Qgd2l0aCBpbnZhbGlkIGxlbmd0aHMiKTsKKwordmFyIHRocm93RXJyb3IgPSBmdW5jdGlvbiB0
aHJvd0Vycm9yKCkgeworICAgIHRocm93IG5ldyBFcnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJl
Iik7Cit9Oworc2hvdWxkQmVKU09OKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5jYWxsKHsgMDog
MCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAwIH0sIHRocm93RXJyb3IpIiwge30pOworc2hv
dWxkQmVKU09OKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5jYWxsKHsgMDogMCwgMTogMSwgMjog
MiwgMzogMywgbGVuZ3RoOiAtMCB9LCB0aHJvd0Vycm9yKSIsIHt9KTsKK3Nob3VsZEJlSlNPTigi
QXJyYXkucHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxl
bmd0aDogLTQgfSwgdGhyb3dFcnJvcikiLCB7fSk7CisKKworZGVidWcoIlJldmVyc2VkIGdlbmVy
aWMgT2JqZWN0Iik7CisKK3Nob3VsZEJlSlNPTigicmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRl
ZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpIiwge2E6
IFt1bmRlZmluZWRdfSk7CitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihbdW5k
ZWZpbmVkXSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSIsIHt0cnVlOiBbdW5kZWZp
bmVkXX0pOworCitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcgQXJyYXko
NCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykiLCB7YTogW3Vu
ZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKK3Nob3VsZEJlSlNP
TigicmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9
PT0gdW5kZWZpbmVkKSIsIHt0cnVlOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkXX0pOworCitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwg
MSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpID8gJ2EnIDogJ2InKSIsIHthOiBbMCwg
Ml0sIGI6IFsxLCAzXX0pOworc2hvdWxkQmVKU09OKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAs
IDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSkiLCB7dHJ1ZTogWzAsIDJdLCBmYWxz
ZTogWzEsIDNdfSk7CisKK3Nob3VsZEJlSlNPTigicmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAx
LCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSIsIHtiOiBbMCwg
MV0sIGE6IFsyLCAzXX0pOworc2hvdWxkQmVKU09OKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAs
IDEsIDIsIDNdKS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRy
dWU6IFsyLCAzXX0pOworCitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQ
YXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSIsIHti
OiBbMCwgMV0sIGE6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGgg
LSAxXX0pOworc2hvdWxkQmVKU09OKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFu
ZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMikiLCB7ZmFsc2U6IFswLCAxXSwgdHJ1ZTog
WzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisKKwor
ZGVidWcoIkV2YWx1YXRpb24gb3JkZXIiKTsKKworc2hvdWxkQmVKU09OKCJyZXZlcnNlSW5zZXJ0
aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkID8gJ2EnIDogJ2InKSkiLCB7YTogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlSlNPTigi
cmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgp
ID0+IHggPT09IHVuZGVmaW5lZCkpIiwge3RydWU6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJl
SlNPTigicmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeShncm91cEJ5
TG9nKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSIsIHthOiBbdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworc2hvdWxkQmVKU09OKCJyZXZl
cnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5KGdyb3VwQnlMb2coKHgpID0+
IHggPT09IHVuZGVmaW5lZCkpIiwge3RydWU6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlSlNPTigicmV2ZXJzZUluc2VydGlvbk9yZGVy
KFswLCAxLCAyLCAzXSkuZ3JvdXBCeShncm91cEJ5TG9nKCh4KSA9PiAhKHggJiAxKSA/ICdhJyA6
ICdiJykpIiwge2E6IFswLCAyXSwgYjogWzEsIDNdfSk7CitzaG91bGRCZUpTT04oInJldmVyc2VJ
bnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCkgPT4gISh4
ICYgMSkpKSIsIHt0cnVlOiBbMCwgMl0sIGZhbHNlOiBbMSwgM119KTsKKworc2hvdWxkQmVKU09O
KCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KGdyb3VwQnlMb2co
KHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykpIiwge2I6IFswLCAxXSwgYTogWzIsIDNdfSk7
CitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3Vw
QnkoZ3JvdXBCeUxvZygoeCwgaSkgPT4gaSA+PSAyKSkiLCB7ZmFsc2U6IFswLCAxXSwgdHJ1ZTog
WzIsIDNdfSk7CisKK3Nob3VsZEJlSlNPTigicmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRp
YWxBbmRGYXN0KS5ncm91cEJ5KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdi
JykpIiwge2I6IFswLCAxXSwgYTogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJh
eUxlbmd0aCAtIDFdfSk7CitzaG91bGRCZUpTT04oInJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQ
YXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeShncm91cEJ5TG9nKCh4LCBpKSA9PiBpID49IDIpKSIsIHtm
YWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5
TGVuZ3RoIC0gMV19KTsKKworc2hvdWxkQmVKU09OKCIoW3VuZGVmaW5lZF0pLmdyb3VwQnkoZ3Jv
dXBCeUxvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gJ2EnIDogJ2InKSkiLCB7YTogW3VuZGVm
aW5lZF19KTsKK3Nob3VsZEJlSlNPTigiKFt1bmRlZmluZWRdKS5ncm91cEJ5KGdyb3VwQnlMb2co
KHgpID0+IHggPT09IHVuZGVmaW5lZCkpIiwge3RydWU6IFt1bmRlZmluZWRdfSk7CisKK3Nob3Vs
ZEJlSlNPTigiKG5ldyBBcnJheSg0KSkuZ3JvdXBCeShncm91cEJ5TG9nKCh4KSA9PiB4ID09PSB1
bmRlZmluZWQgPyAnYScgOiAnYicpKSIsIHthOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkXX0pOworc2hvdWxkQmVKU09OKCIobmV3IEFycmF5KDQpKS5ncm91cEJ5
KGdyb3VwQnlMb2coKHgpID0+IHggPT09IHVuZGVmaW5lZCkpIiwge3RydWU6IFt1bmRlZmluZWQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlSlNPTigiKFsw
LCAxLCAyLCAzXSkuZ3JvdXBCeShncm91cEJ5TG9nKCh4KSA9PiAhKHggJiAxKSA/ICdhJyA6ICdi
JykpIiwge2E6IFswLCAyXSwgYjogWzEsIDNdfSk7CitzaG91bGRCZUpTT04oIihbMCwgMSwgMiwg
M10pLmdyb3VwQnkoZ3JvdXBCeUxvZygoeCkgPT4gISh4ICYgMSkpKSIsIHt0cnVlOiBbMCwgMl0s
IGZhbHNlOiBbMSwgM119KTsKKworc2hvdWxkQmVKU09OKCIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5
KGdyb3VwQnlMb2coKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykpIiwge2I6IFswLCAxXSwg
YTogWzIsIDNdfSk7CitzaG91bGRCZUpTT04oIihbMCwgMSwgMiwgM10pLmdyb3VwQnkoZ3JvdXBC
eUxvZygoeCwgaSkgPT4gaSA+PSAyKSkiLCB7ZmFsc2U6IFswLCAxXSwgdHJ1ZTogWzIsIDNdfSk7
CisKK3Nob3VsZEJlSlNPTigiKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KGdyb3VwQnlMb2co
KHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykpIiwge2I6IFswLCAxXSwgYTogWzIsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CitzaG91bGRCZUpTT04o
IihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeShncm91cEJ5TG9nKCh4LCBpKSA9PiBpID49IDIp
KSIsIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJz
ZUFycmF5TGVuZ3RoIC0gMV19KTsKKworCisKK2RlYnVnKCJFeHRyYSBjYWxsYmFjayBwYXJhbWV0
ZXJzIik7CisKK3Nob3VsZEJlSlNPTigiWzAsIDEsIDIsIDNdLmdyb3VwQnkoZnVuY3Rpb24oaSwg
aiwgaywgbCwgbSkgeyByZXR1cm4gbSA9ICFtOyB9KSIsIHt0cnVlOiBbMCwgMSwgMiwgM119KTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1ncm91cEJ5VG9N
YXAuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktZ3JvdXBCeVRvTWFwLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM4Zjk1MjExN2NhZWFkMzM1YjQzMTVmMTY2NmIwYTgxZjIzZDRjMWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXktZ3JvdXBC
eVRvTWFwLmpzCkBAIC0wLDAgKzEsMTQ3IEBACitkZXNjcmlwdGlvbigiVGVzdHMgZm9yIEFycmF5
LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAiKTsKKworc2hvdWxkQmUoIkFycmF5LnByb3RvdHlwZS5n
cm91cEJ5VG9NYXAubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJBcnJheS5wcm90b3R5cGUuZ3Jv
dXBCeVRvTWFwLm5hbWUiLCAiJ2dyb3VwQnlUb01hcCciKTsKKwordmFyIHNwYXJzZUFycmF5TGVu
Z3RoID0gNjsKK3ZhciBtaXhQYXJ0aWFsQW5kRmFzdCA9IG5ldyBBcnJheShzcGFyc2VBcnJheUxl
bmd0aCk7CittaXhQYXJ0aWFsQW5kRmFzdFtzcGFyc2VBcnJheUxlbmd0aCAtIDFdID0gc3BhcnNl
QXJyYXlMZW5ndGggLSAxOworZm9yKHZhciBpID0gMDsgaSA8IDM7ICsraSkKKyAgICBtaXhQYXJ0
aWFsQW5kRmFzdFtpXSA9IGk7CisKK2Z1bmN0aW9uIHRvT2JqZWN0KGFycmF5KSB7CisgICAgdmFy
IHJlc3VsdCA9IHt9OworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9y
ICh2YXIgaSBpbiBhcnJheSkKKyAgICAgICAgcmVzdWx0W2ldID0gYXJyYXlbaV07CisgICAgcmVz
dWx0Lmdyb3VwQnlUb01hcCA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXA7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2VydGlvbk9yZGVyKGFycmF5KSB7
CisgICAgdmFyIG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICB2YXIgcHJvcHMgPSBbXTsKKyAg
ICBmb3IgKHZhciBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVzaChpKTsKKyAgICB2YXIgcmVz
dWx0ID0ge307CisgICAgZm9yICh2YXIgaSA9IHByb3BzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t
KQorICAgICAgICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3BzW2ldXTsKKyAgICByZXN1bHQu
Z3JvdXBCeVRvTWFwID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcDsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitmdW5jdGlvbiBncm91cEJ5VG9NYXBMb2coZikgeworICAgIHJldHVybiBm
dW5jdGlvbih4LCBpLCBhcnJheSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZGVidWco
W3gsIGksIEpTT04uc3RyaW5naWZ5KGFycmF5KV0udG9TdHJpbmcoKSk7CisgICAgICAgIHJldHVy
biBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgY29uc29sZS5lcnJvcihlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
c2hvdWxkQmVNYXAoYSwgYikgeworICAgIHNob3VsZEJlSlNPTigiQXJyYXkuZnJvbSgiICsgYSAr
ICIpIiwgT2JqZWN0LmVudHJpZXMoYikpOworfQorCitzaG91bGRCZU1hcCgiW3VuZGVmaW5lZF0u
Z3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpIiwge2E6IFt1
bmRlZmluZWRdfSk7CitzaG91bGRCZU1hcCgiW3VuZGVmaW5lZF0uZ3JvdXBCeVRvTWFwKCh4KSA9
PiB4ID09PSB1bmRlZmluZWQpIiwge3RydWU6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlTWFw
KCIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdh
JyA6ICdiJykiLCB7YTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZF19KTsKK3Nob3VsZEJlTWFwKCIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHgg
PT09IHVuZGVmaW5lZCkiLCB7dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVNYXAoIlswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAo
KHgpID0+ICEoeCAmIDEpID8gJ2EnIDogJ2InKSIsIHthOiBbMCwgMl0sIGI6IFsxLCAzXX0pOwor
c2hvdWxkQmVNYXAoIlswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpKSIs
IHt0cnVlOiBbMCwgMl0sIGZhbHNlOiBbMSwgM119KTsKKworc2hvdWxkQmVNYXAoIlswLCAxLCAy
LCAzXS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7YjogWzAs
IDFdLCBhOiBbMiwgM119KTsKK3Nob3VsZEJlTWFwKCJbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFw
KCh4LCBpKSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCAzXX0pOworCitz
aG91bGRCZU1hcCgibWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49
IDIgPyAnYScgOiAnYicpIiwge2I6IFswLCAxXSwgYTogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CitzaG91bGRCZU1hcCgibWl4UGFydGlhbEFuZEZh
c3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6
IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisK
K2RlYnVnKCJHZW5lcmljIE9iamVjdCIpOworCitzaG91bGRCZU1hcCgidG9PYmplY3QoW3VuZGVm
aW5lZF0pLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gJ2EnIDogJ2InKSIs
IHthOiBbdW5kZWZpbmVkXX0pOworc2hvdWxkQmVNYXAoInRvT2JqZWN0KFt1bmRlZmluZWRdKS5n
cm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCkiLCB7dHJ1ZTogW3VuZGVmaW5lZF19
KTsKKworc2hvdWxkQmVNYXAoInRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4
KSA9PiB4ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpIiwge2E6IFt1bmRlZmluZWQsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU1hcCgidG9PYmplY3QobmV3
IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCkiLCB7dHJ1ZTog
W3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxk
QmVNYXAoInRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAx
KSA/ICdhJyA6ICdiJykiLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJlTWFwKCJ0
b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpIiwge3Ry
dWU6IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRCZU1hcCgidG9PYmplY3QoWzAs
IDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7
YjogWzAsIDFdLCBhOiBbMiwgM119KTsKK3Nob3VsZEJlTWFwKCJ0b09iamVjdChbMCwgMSwgMiwg
M10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSIsIHtmYWxzZTogWzAsIDFdLCB0cnVl
OiBbMiwgM119KTsKKworc2hvdWxkQmVNYXAoInRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0KS5n
cm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7YjogWzAsIDFdLCBh
OiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKK3No
b3VsZEJlTWFwKCJ0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRvTWFwKCh4LCBp
KSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKworZGVidWcoIkFycmF5LWxpa2Ug
b2JqZWN0IHdpdGggaW52YWxpZCBsZW5ndGhzIik7CisKK3ZhciB0aHJvd0Vycm9yID0gZnVuY3Rp
b24gdGhyb3dFcnJvcigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInNob3VsZCBub3QgcmVhY2gg
aGVyZSIpOworfTsKK3Nob3VsZEJlTWFwKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLmNh
bGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IDAgfSwgdGhyb3dFcnJvcikiLCB7
fSk7CitzaG91bGRCZU1hcCgiQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDog
MCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCB0aHJvd0Vycm9yKSIsIHt9KTsKK3No
b3VsZEJlTWFwKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLmNhbGwoeyAwOiAwLCAxOiAx
LCAyOiAyLCAzOiAzLCBsZW5ndGg6IC00IH0sIHRocm93RXJyb3IpIiwge30pOworCisKK2RlYnVn
KCJSZXZlcnNlZCBnZW5lcmljIE9iamVjdCIpOworCitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5l
ZCA/ICdhJyA6ICdiJykiLCB7YTogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlTWFwKCJyZXZlcnNl
SW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkKSIsIHt0cnVlOiBbdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU1hcCgicmV2ZXJzZUlu
c2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRl
ZmluZWQgPyAnYScgOiAnYicpIiwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBB
cnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpIiwge3RydWU6IFt1
bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJl
TWFwKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgp
ID0+ICEoeCAmIDEpID8gJ2EnIDogJ2InKSIsIHthOiBbMCwgMl0sIGI6IFsxLCAzXX0pOworc2hv
dWxkQmVNYXAoInJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01h
cCgoeCkgPT4gISh4ICYgMSkpIiwge3RydWU6IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitz
aG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRv
TWFwKCh4LCBpKSA9PiBpID49IDIgPyAnYScgOiAnYicpIiwge2I6IFswLCAxXSwgYTogWzIsIDNd
fSk7CitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3Jv
dXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCAz
XX0pOworCitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRG
YXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICdhJyA6ICdiJykiLCB7YjogWzAs
IDFdLCBhOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19
KTsKK3Nob3VsZEJlTWFwKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3Qp
Lmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSIsIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBb
MiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKKworCitk
ZWJ1ZygiRXZhbHVhdGlvbiBvcmRlciIpOworCitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlv
bk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4KSA9PiB4
ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSIsIHthOiBbdW5kZWZpbmVkXX0pOworc2hvdWxk
QmVNYXAoInJldmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKGdy
b3VwQnlUb01hcExvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkiLCB7dHJ1ZTogW3VuZGVmaW5l
ZF19KTsKKworc2hvdWxkQmVNYXAoInJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcgQXJyYXkoNCkp
Lmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICdh
JyA6ICdiJykpIiwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWRdfSk7CitzaG91bGRCZU1hcCgicmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSku
Z3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkiLCB7
dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKwor
c2hvdWxkQmVNYXAoInJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlU
b01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+ICEoeCAmIDEpID8gJ2EnIDogJ2InKSkiLCB7YTog
WzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJlTWFwKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIo
WzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4KSA9PiAhKHggJiAx
KSkpIiwge3RydWU6IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRCZU1hcCgicmV2
ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01h
cExvZygoeCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSkiLCB7YjogWzAsIDFdLCBhOiBbMiwg
M119KTsKK3Nob3VsZEJlTWFwKCJyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBpKSA9PiBpID49IDIpKSIsIHtmYWxzZTog
WzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxkQmVNYXAoInJldmVyc2VJbnNlcnRpb25P
cmRlcihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCwg
aSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSkiLCB7YjogWzAsIDFdLCBhOiBbMiwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKK3Nob3VsZEJlTWFwKCJyZXZl
cnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcChncm91cEJ5
VG9NYXBMb2coKHgsIGkpID0+IGkgPj0gMikpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCitzaG91bGRC
ZU1hcCgiKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4KSA9PiB4
ID09PSB1bmRlZmluZWQgPyAnYScgOiAnYicpKSIsIHthOiBbdW5kZWZpbmVkXX0pOworc2hvdWxk
QmVNYXAoIihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCkgPT4g
eCA9PT0gdW5kZWZpbmVkKSkiLCB7dHJ1ZTogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVNYXAo
IihuZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+IHggPT09
IHVuZGVmaW5lZCA/ICdhJyA6ICdiJykpIiwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU1hcCgiKG5ldyBBcnJheSg0KSkuZ3JvdXBC
eVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSkiLCB7dHJ1ZTog
W3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxk
QmVNYXAoIihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgpID0+
ICEoeCAmIDEpID8gJ2EnIDogJ2InKSkiLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3Vs
ZEJlTWFwKCIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4KSA9
PiAhKHggJiAxKSkpIiwge3RydWU6IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRC
ZU1hcCgiKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygoeCwgaSkg
PT4gaSA+PSAyID8gJ2EnIDogJ2InKSkiLCB7YjogWzAsIDFdLCBhOiBbMiwgM119KTsKK3Nob3Vs
ZEJlTWFwKCIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoZ3JvdXBCeVRvTWFwTG9nKCh4LCBp
KSA9PiBpID49IDIpKSIsIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxk
QmVNYXAoIihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRvTWFwKGdyb3VwQnlUb01hcExvZygo
eCwgaSkgPT4gaSA+PSAyID8gJ2EnIDogJ2InKSkiLCB7YjogWzAsIDFdLCBhOiBbMiwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKK3Nob3VsZEJlTWFwKCIo
bWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcChncm91cEJ5VG9NYXBMb2coKHgsIGkpID0+
IGkgPj0gMikpIiwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKworZGVidWcoIkV4dHJhIGNhbGxiYWNr
IHBhcmFtZXRlcnMiKTsKKworc2hvdWxkQmVNYXAoIlswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAo
ZnVuY3Rpb24oaSwgaiwgaywgbCwgbSkgeyByZXR1cm4gbSA9ICFtOyB9KSIsIHt0cnVlOiBbMCwg
MSwgMiwgM119KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwppbmRleCBjNmNiYmEx
YTRlMmY1MTQ5ZmViOGVmMTE1NjFiZTQ2MWU0NjY1MGU3Li40OTc5MWRkNDcxODdhYWFkN2RhNmMw
NTc3ZTM3NjFlMjQwZDUzNjQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCkBA
IC0yOTUsNiArMjk1LDM4IEBAIGZ1bmN0aW9uIGRmZ1Nob3VsZEJlKHRoZUZ1bmN0aW9uLCBfYSwg
X2IpCiAgICAgcmV0dXJuIHZhbHVlcy5sZW5ndGg7CiB9CiAKK2Z1bmN0aW9uIHNob3VsZEJlSlNP
TihfYSwgX2IsIF9xdWlldCkKK3sKKyAgICBpZiAoKHR5cGVvZiBfYSAhPSAiZnVuY3Rpb24iICYm
IHR5cGVvZiBfYSAhPSAic3RyaW5nIikgfHwgKHR5cGVvZiBfYiAhPSAiZnVuY3Rpb24iICYmIHR5
cGVvZiBfYiAhPSAib2JqZWN0IikpCisgICAgICAgIGRlYnVnKCJXQVJOOiBzaG91bGRCZSgpIGV4
cGVjdHMgZnVuY3Rpb24vc3RyaW5nIGZpcnN0IGFyZ3VtZW50IGFuZCBmdW5jdGlvbi9KU09OIHNl
Y29uZCBhcmd1bWVudCIpOworCisgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgewor
ICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiAiJXVu
ZGVmaW5lZCUiOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgdmFyIF9leGNl
cHRpb247CisgICAgdmFyIF9hdjsKKyAgICB0cnkgeworICAgICAgICBfYXYgPSBKU09OLnN0cmlu
Z2lmeSh0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkgOiBldmFsKF9hKSwgcmVwbGFjZXIp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgX2V4Y2VwdGlvbiA9IGU7CisgICAgfQorICAg
IHZhciBfYXZvID0gX2F2LnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQi
KTsKKworICAgIHZhciBfYnYgPSBKU09OLnN0cmluZ2lmeSh0eXBlb2YgX2IgPT0gImZ1bmN0aW9u
IiA/IF9iKCkgOiBfYiwgcmVwbGFjZXIpOworICAgIHZhciBfYnZvID0gX2J2LnJlcGxhY2VBbGwo
IlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKworICAgIGlmIChfZXhjZXB0aW9uKQor
ICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idm8gKyAiLiBUaHJldyBl
eGNlcHRpb24gIiArIF9leGNlcHRpb24pOworICAgIGVsc2UgaWYgKF9hdiA9PT0gX2J2KSB7Cisg
ICAgICAgIGlmICghX3F1aWV0KQorICAgICAgICAgICAgdGVzdFBhc3NlZChfYSArICIgaXMgIiAr
IF9idm8pOworICAgIH0gZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
IiArIF9idm8gKyAiLiBXYXMgIiArIF9hdm8gKyAiLiIpOworfQorCiAvLyBFeGVjdXRlIGNvbmRp
dGlvbiBldmVyeSA1IG1pbGxpc2Vjb25kcyB1bnRpbCBpdCBzdWNjZWVkcy4KIGZ1bmN0aW9uIF93
YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbiwgY29tcGxldGlvbkhhbmRsZXIpCiB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wcmUuanMgYi9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wcmUuanMKaW5kZXggMjQ1Njg4MWIwMmJiNzEwMWYzZTMw
YTQzMzJlMmIyMjc3YWMzODU4YS4uNzIzMGVhNjg3NjQ5YTcxNWMyYjEwMDYwNDUyMWU5ZGQzNjZj
ODhkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcHJlLmpz
CisrKyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXByZS5qcwpAQCAtMTc4LDYg
KzE3OCwzOCBAQCBmdW5jdGlvbiBkZmdTaG91bGRCZSh0aGVGdW5jdGlvbiwgX2EsIF9iKQogICBy
ZXR1cm4gdmFsdWVzLmxlbmd0aDsKIH0KIAorZnVuY3Rpb24gc2hvdWxkQmVKU09OKF9hLCBfYiwg
X3F1aWV0KQoreworICAgIGlmICgodHlwZW9mIF9hICE9ICJmdW5jdGlvbiIgJiYgdHlwZW9mIF9h
ICE9ICJzdHJpbmciKSB8fCAodHlwZW9mIF9iICE9ICJmdW5jdGlvbiIgJiYgdHlwZW9mIF9iICE9
ICJvYmplY3QiKSkKKyAgICAgICAgZGVidWcoIldBUk46IHNob3VsZEJlKCkgZXhwZWN0cyBmdW5j
dGlvbi9zdHJpbmcgZmlyc3QgYXJndW1lbnQgYW5kIGZ1bmN0aW9uL0pTT04gc2Vjb25kIGFyZ3Vt
ZW50Iik7CisKKyAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAgIGlm
ICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuICIldW5kZWZpbmVkJSI7
CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICB2YXIgX2V4Y2VwdGlvbjsKKyAg
ICB2YXIgX2F2OworICAgIHRyeSB7CisgICAgICAgIF9hdiA9IEpTT04uc3RyaW5naWZ5KHR5cGVv
ZiBfYSA9PSAiZnVuY3Rpb24iID8gX2EoKSA6IGV2YWwoX2EpLCByZXBsYWNlcik7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBfZXhjZXB0aW9uID0gZTsKKyAgICB9CisgICAgdmFyIF9hdm8g
PSBfYXYucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworCisgICAg
dmFyIF9idiA9IEpTT04uc3RyaW5naWZ5KHR5cGVvZiBfYiA9PSAiZnVuY3Rpb24iID8gX2IoKSA6
IF9iLCByZXBsYWNlcik7CisgICAgdmFyIF9idm8gPSBfYnYucmVwbGFjZUFsbCgiXCIldW5kZWZp
bmVkJVwiIiwgInVuZGVmaW5lZCIpOworCisgICAgaWYgKF9leGNlcHRpb24pCisgICAgICAgIHRl
c3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2byArICIuIFRocmV3IGV4Y2VwdGlvbiAi
ICsgX2V4Y2VwdGlvbik7CisgICAgZWxzZSBpZiAoX2F2ID09PSBfYnYpIHsKKyAgICAgICAgaWYg
KCFfcXVpZXQpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsgX2J2byk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2byAr
ICIuIFdhcyAiICsgX2F2byArICIuIik7Cit9CisKIGZ1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwg
X3R5cGUpIHsKICAgdmFyIGV4Y2VwdGlvbjsKICAgdmFyIF9hdjsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWYwMTkxOWViY2E5YjQ3YWZi
ZWMxYjI0ZDcyOGU4M2YwMmEzOTdjMi4uYzVkN2U5Y2YyM2UzYjFlZmNjZTZkOWYwYjI0NDVlYmRm
NWI0ZTQ1OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5
IGFuZCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1w
cmUuanM6CisgICAgICAgIChzaG91bGRCZUpTT04pOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
SlNPTi5yZXBsYWNlcik6IEFkZGVkLgorICAgICAgICBBZGQgaGVscGVyIGZ1bmN0aW9uIGZvciBj
b21wYXJpbmcgSlNPTiBvYmplY3RzLgorCiAyMDIxLTEyLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIEludGwgdGVzdHMgYmFzZWQg
b24gSUNVIDY5fgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3N0YW5kYWxv
bmUtcHJlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcHJlLmpzCmlu
ZGV4IDRkOGE4ZWVhYmFkZjhkNmY3MWU2OWI5OGQzYWYyNDdlYWQyZWE1N2EuLmM4OGI1NjVlZDc3
ZTU1Mzc1Njg4ZTU1NzU2YTBkOTQwOTdiMWUzZjAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L3Jlc291cmNlcy9zdGFuZGFsb25lLXByZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9yZXNvdXJj
ZXMvc3RhbmRhbG9uZS1wcmUuanMKQEAgLTE4Nyw2ICsxODcsMzggQEAgZnVuY3Rpb24gZGZnU2hv
dWxkQmUodGhlRnVuY3Rpb24sIF9hLCBfYikKICAgcmV0dXJuIHZhbHVlcy5sZW5ndGg7CiB9CiAK
K2Z1bmN0aW9uIHNob3VsZEJlSlNPTihfYSwgX2IsIF9xdWlldCkKK3sKKyAgICBpZiAoKHR5cGVv
ZiBfYSAhPSAiZnVuY3Rpb24iICYmIHR5cGVvZiBfYSAhPSAic3RyaW5nIikgfHwgKHR5cGVvZiBf
YiAhPSAiZnVuY3Rpb24iICYmIHR5cGVvZiBfYiAhPSAib2JqZWN0IikpCisgICAgICAgIGRlYnVn
KCJXQVJOOiBzaG91bGRCZSgpIGV4cGVjdHMgZnVuY3Rpb24vc3RyaW5nIGZpcnN0IGFyZ3VtZW50
IGFuZCBmdW5jdGlvbi9KU09OIHNlY29uZCBhcmd1bWVudCIpOworCisgICAgZnVuY3Rpb24gcmVw
bGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgICAgIHJldHVybiAiJXVuZGVmaW5lZCUiOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfQorCisgICAgdmFyIF9leGNlcHRpb247CisgICAgdmFyIF9hdjsKKyAgICB0cnkgeworICAg
ICAgICBfYXYgPSBKU09OLnN0cmluZ2lmeSh0eXBlb2YgX2EgPT0gImZ1bmN0aW9uIiA/IF9hKCkg
OiBldmFsKF9hKSwgcmVwbGFjZXIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgX2V4Y2Vw
dGlvbiA9IGU7CisgICAgfQorICAgIHZhciBfYXZvID0gX2F2LnJlcGxhY2VBbGwoIlwiJXVuZGVm
aW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKworICAgIHZhciBfYnYgPSBKU09OLnN0cmluZ2lmeSh0
eXBlb2YgX2IgPT0gImZ1bmN0aW9uIiA/IF9iKCkgOiBfYiwgcmVwbGFjZXIpOworICAgIHZhciBf
YnZvID0gX2J2LnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKwor
ICAgIGlmIChfZXhjZXB0aW9uKQorICAgICAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
IiArIF9idm8gKyAiLiBUaHJldyBleGNlcHRpb24gIiArIF9leGNlcHRpb24pOworICAgIGVsc2Ug
aWYgKF9hdiA9PT0gX2J2KSB7CisgICAgICAgIGlmICghX3F1aWV0KQorICAgICAgICAgICAgdGVz
dFBhc3NlZChfYSArICIgaXMgIiArIF9idm8pOworICAgIH0gZWxzZQorICAgICAgICB0ZXN0RmFp
bGVkKF9hICsgIiBzaG91bGQgYmUgIiArIF9idm8gKyAiLiBXYXMgIiArIF9hdm8gKyAiLiIpOwor
fQorCiBmdW5jdGlvbiBzaG91bGRCZVR5cGUoX2EsIF90eXBlKSB7CiAgIHZhciBleGNlcHRpb247
CiAgIHZhciBfYXY7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447312</attachid>
            <date>2021-12-15 19:01:10 -0800</date>
            <delta_ts>2021-12-15 19:54:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234327-20211215200109.patch</filename>
            <type>text/plain</type>
            <size>24645</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNGUxZjQ2NDVmMTVjNGIxMTgyNGNmMWUwY2Fh
ZmZmOWVhYzA1MjguLjJmMDJjMmFiMjMwYmY0NmI0NGI5MDUwMzJhOWEyZGFjMTM2Y2Q4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBB
cnJheSBHcm91cGluZyBwcm9wb3NhbCA8aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5LWdy
b3VwaW5nLz4sIHdoaWNoIGp1c3QKKyAgICAgICAgcmVhY2hlZCBTdGFnZSAzLgorCisgICAgICAg
IGBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeWAvYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXBg
IHdpbGwgcmV0dXJuIGEgYHt9YC9gTWFwYCB3aGVyZSBlYWNoCisgICAgICAgIHZhbHVlIGluIHRo
ZSBhcnJheSBpcyBwdXQgaW50byBhICJidWNrZXQiIGtleWVkIGJ5IHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIHByb3ZvZGVkIGNhbGxiYWNrLgorCisgICAgICAgIGBgYGpzCisgICAgICAgIGNvbnN0
IGFycmF5ID0gWzEsIDIsIDMsIDRdOworCisgICAgICAgIGFycmF5Lmdyb3VwQnkobiA9PiBuICUg
MiA/ICJvZGQiIDogImV2ZW4iKSAvLyB7IG9kZDogWzEsIDNdLCBldmVuOiBbMiwgNF0gfQorICAg
ICAgICBhcnJheS5ncm91cEJ5VG9NYXAobiA9PiBuICUgMiA/ICJvZGQiIDogImV2ZW4iKSAvLyBu
ZXcgTWFwKFtbIm9kZCIsIFsxLCAzXV0sIFsiZXZlbiIsIFsyLCA0XV0pCisgICAgICAgIGBgYAor
CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5
KTogQWRkZWQuCisgICAgICAgIChncm91cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICBBbGxvdyBgQE1hcGAgdG8gYmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBw
cmltb3JkaWFsIGBNYXBgIGluc3RhbmNlLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlz
dC5oOgorICAgICAgICBBZGQgYHVzZUFycmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIx
LTEyLTE1ICBKb3NlcGggR3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
aGFkb3cgUmVhbG1zXSBXcmFwcGVkIGZ1bmN0aW9ucyBtdXN0IG9ubHkgdGhyb3cgVHlwZUVycm9y
IGZyb20gY2FsbGluZyByZWFsbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMx
MjU2ZTBhMTA3ZDQxMmM0YTAwZjM0MTdjZjJmZThiNS4uMzQ2YmUwNTlmNTNhNjliNTNjMmE5ZmQ4
ZDQzYTkyZjg1NDc1ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoK
KwogMjAyMS0xMi0xNCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29tcHV0ZWQgUGFuZWw6IEFkanVzdCBjb2xvciBvZiBDU1Mg
VmFyaWFibGVzIGdyb3VwaW5nIG1vZGUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IGVhMjE5YTcwMjljZTA2OWRhYTcy
NTNmMzJmODAzMDBiY2Q0NTM1MmEuLjQzODljYWUyZWU5YzVmNGExYjEyMWI2NTFhOGU2NDZkMjBj
ZDU4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMKQEAgLTE1Niw2ICsxNTYsNTAgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Z1bmN0aW9uIGdyb3VwQnko
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRo
aXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxl
bmd0aCk7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdy
b3VwcyA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworICAgICAgICB2YXIg
a2V5ID0gY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGksIGFycmF5KTsKKyAgICAgICAg
dmFyIGdyb3VwID0gKGdyb3Vwc1trZXldID8/PSBbXSk7CisgICAgICAgIEBwdXRCeVZhbERpcmVj
dChncm91cCwgZ3JvdXAubGVuZ3RoLCB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBncm91cHM7
Cit9CisKK2Z1bmN0aW9uIGdyb3VwQnlUb01hcChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sK
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5
VG9NYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Cisg
ICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKCFAaXND
YWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLmdyb3VwQnlUb01hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZh
ciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdyb3VwcyA9IEBPYmplY3QuQGNy
ZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworICAgICAgICB2YXIga2V5ID0gY2FsbGJhY2suQGNh
bGwodGhpc0FyZywgdmFsdWUsIGksIGFycmF5KTsKKyAgICAgICAgdmFyIGdyb3VwID0gKGdyb3Vw
c1trZXldID8/PSBbXSk7CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChncm91cCwgZ3JvdXAubGVu
Z3RoLCB2YWx1ZSk7CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9IG5ldyBATWFwOworICAgIGZv
ciAodmFyIGtleSBpbiBncm91cHMpCisgICAgICAgIHJlc3VsdC5Ac2V0KGtleSwgZ3JvdXBzW2tl
eV0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIGZ1bmN0aW9uIG1hcChjYWxsYmFjayAvKiwg
dGhpc0FyZyAqLykKIHsKICAgICAidXNlIHN0cmljdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggNTY4ZGExOWM4NjU3M2I4ZjdmMzBlODhk
M2RmOGUwMTZiODE4OTMwNS4uODBhODdlYjAwN2E5ZDM4YzcxNTQyODk2NThmODgxMzg0NmJjODg4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApA
QCAtNzAsNiArNzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhkZWZpbmVQcm9wZXJ0
eSkgXAogICAgIG1hY3JvKGRlZmF1bHRQcm9taXNlVGhlbikgXAogICAgIG1hY3JvKFNldCkgXAor
ICAgIG1hY3JvKE1hcCkgXAogICAgIG1hY3JvKHRocm93VHlwZUVycm9yRnVuY3Rpb24pIFwKICAg
ICBtYWNybyh0eXBlZEFycmF5TGVuZ3RoKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUNvbnRlbnRU
eXBlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1Rp
bWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAppbmRleCA1N2E5MGVjMGZhY2MxMmRkY2Q5YWJmNGFjMmYyZGNiYWIwZTBmYWQ3Li5l
NjZlOGZkYjE2YWYwZjY4OWYwYWJlYTQ4MGFlY2I0NTJhYzhiOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTc3LDYgKzc3
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihhcHBlbmRNZW1jcHksIG51bGxwdHIp
IFwKICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVsbHB0cikgXAogICAgIHYo
U2V0LCBudWxscHRyKSBcCisgICAgdihNYXAsIG51bGxwdHIpIFwKICAgICB2KHRoaXNUaW1lVmFs
dWUsIG51bGxwdHIpIFwKICAgICB2KGltcG9ydEluUmVhbG0sIG51bGxwdHIpIFwKICAgICB2KGV2
YWxJblJlYWxtLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggNmVhNmI2N2EwNGYzM2Q0MTkzNjI3YWRmYTcwMGQx
MTdmZmNhMzZkMi4uM2ZiZWE0NTQ0NDY4OWViNDMzNDQ3NjNmM2I4ZDIzYTE5MmMyMzVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApA
QCAtMTAwLDYgKzEwMCwxMCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9JTlRS
SU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJpbmRleE9mIiwgYXJyYXlQcm90b0Z1
bmNJbmRleE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSwgQXJyYXlJbmRleE9mSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTigibGFzdEluZGV4T2YiLCBhcnJheVByb3RvRnVuY0xhc3RJbmRl
eE9mLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
MSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZpbHRlclB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5
cGVGaWx0ZXJDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgaWYgKE9wdGlvbnM6OnVzZUFycmF5R3JvdXBCeU1ldGhv
ZCgpKSB7CisgICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5UHVibGljTmFtZSgpLCBhcnJh
eVByb3RvdHlwZUdyb3VwQnlDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9O
X1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91
cEJ5VG9NYXBQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlR3JvdXBCeVRvTWFwQ29kZUdlbmVy
YXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OworICAgIH0KICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmxhdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90
b3R5cGVGbGF0Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0TWFwUHVibGljTmFt
ZSgpLCBhcnJheVByb3RvdHlwZUZsYXRNYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVO
Q1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlZHVjZVB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVSZWR1Y2VDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0x
MzcsNiArMTQxLDggQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBPcHRpb25zOjp1c2VBcnJh
eUZpbmRMYXN0TWV0aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlu
ZExhc3RJbmRleFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5mbGF0UHVibGljTmFtZSgpLAogICAgICAgICAmdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmxhdE1hcFB1YmxpY05hbWUoKSwKKyAgICAgICAgT3B0
aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ3JvdXBCeVB1YmxpY05hbWUoKSA6IG51bGxwdHIsCisgICAgICAgIE9wdGlvbnM6
OnVzZUFycmF5R3JvdXBCeU1ldGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdyb3VwQnlUb01hcFB1YmxpY05hbWUoKSA6IG51bGxwdHIsCiAgICAgICAgICZ2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbmNsdWRlc1B1YmxpY05hbWUoKSwKICAgICAgICAg
JnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmtleXNQdWJsaWNOYW1lKCksCiAgICAg
ICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS52YWx1ZXNQdWJsaWNOYW1lKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCAwZTQ4ZTMzMGNhZjlmMTVkMjBkZWFkZmJmMmE2ODYzMTUzNTNlYTZkLi4yODY0YTE5NWY1
NDJlMDk0MzZhZmY3ODMxMWM0OTZiNTM1MDIxMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMzUwLDYgKzEzNTAsOSBAQCBj
YXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVh
dHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlNldCldLmluaXRMYXRlcihbXSAoY29uc3Qg
SW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciktPnNldENvbnN0cnVjdG9yKCkpOwogICAgICAg
ICB9KTsKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50OjpNYXApXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLT5tYXBDb25zdHJ1Y3RvcigpKTsKKyAgICAgICAgfSk7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6bWFw
QnVja2V0SGVhZCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgbWFwUHJpdmF0
ZUZ1bmNNYXBCdWNrZXRIZWFkLCBKU01hcEJ1Y2tldEhlYWRJbnRyaW5zaWMpKTsKICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBl
YWY3MjM5NjRiNzdiYWUxM2FmZmY3NzcxMTgxYjI0MTk4YmNmZmU3Li5iZjlkOGEzODNmNzM3OWZi
MWI5OWNhMjQ4YWE5MjBkYzE1MWY5YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUzOCw2ICs1MzgsNyBAQCBib29sIGNhblVzZVdlYkFzc2Vt
Ymx5RmFzdE1lbW9yeSgpOwogICAgIC8qIEZlYXR1cmUgRmxhZ3MgKi9cCiAgICAgXAogICAgIHYo
Qm9vbCwgdXNlQXJyYXlGaW5kTGFzdE1ldGhvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBm
aW5kTGFzdCgpIGFuZCBmaW5kTGFzdEluZGV4KCkgbWV0aG9kcyBvbiBBcnJheSBhbmQgJVR5cGVk
QXJyYXklLiIpIFwKKyAgICB2KEJvb2wsIHVzZUFycmF5R3JvdXBCeU1ldGhvZCwgZmFsc2UsIE5v
cm1hbCwgIkV4cG9zZSB0aGUgZ3JvdXBCeSgpIGFuZCBncm91cEJ5VG9NYXAoKSBtZXRob2RzIG9u
IEFycmF5LiIpIFwKICAgICB2KEJvb2wsIHVzZUF0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBv
c2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikg
XAogICAgIHYoQm9vbCwgdXNlSGFzT3duLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIE9iamVj
dC5oYXNPd24gbWV0aG9kIikgXAogICAgIHYoQm9vbCwgdXNlSW50bEVudW1lcmF0aW9uLCB0cnVl
LCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwgZW51bWVyYXRpb24gQVBJcy4iKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVu
Y3Rpb25QYXJhbWV0ZXJzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcwppbmRleCBhN2I2NTkxYzY5Y2RiYjJj
MGE3Y2QxMmFkMWUwMDMzZTQ2Mjk1YTY3Li5mOGE5MTNjMGYyMDc4MDM2MjBhMjk0NmY4M2VkMWFj
Mjk2NjFlMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMK
QEAgLTI1Miw2ICsyNTIsOCBAQCBXSS5OYXRpdmVQcm90b3R5cGVGdW5jdGlvblBhcmFtZXRlcnMg
PSB7CiAgICAgICAgIGZpbmRMYXN0OiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGZp
bmRMYXN0SW5kZXg6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAgICAgICAgZm9yRWFjaDogImNh
bGxiYWNrLCBbdGhpc0FyZ10iLAorICAgICAgICBncm91cEJ5OiAiY2FsbGJhY2ssIFt0aGlzQXJn
XSIsCisgICAgICAgIGdyb3VwQnlUb01hcDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAgICAg
ICBpbmNsdWRlczogInNlYXJjaFZhbHVlLCBbc3RhcnRJbmRleD0wXSIsCiAgICAgICAgIGluZGV4
T2Y6ICJzZWFyY2hWYWx1ZSwgW3N0YXJ0SW5kZXg9MF0iLAogICAgICAgICBqb2luOiAiW3NlcGFy
YXRvcj1cIixcIl0iLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCA2MDU3OTIyNjZkMWU2NjE4NzlmNDY3MTE2MWJkY2M3YTZlMjQzZDEyLi4z
ZGU3MGU5ODljYmY0N2ZkMmU3NTZkZjFhZjIyYTNiNWY5MGFlNGYzIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisy
MDIxLTEyLTE1ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91
cEJ5VG9NYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDMyNworCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAg
KiBzdHJlc3MvYXJyYXktZ3JvdXBCeS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRCZU9iamVjdCk6CisgICAgICAgIChzaG91bGRCZU9iamVjdC5yZXBsYWNl
cik6CisgICAgICAgICh0b09iamVjdCk6CisgICAgICAgIChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIp
OgorICAgICAgICAqIHN0cmVzcy9hcnJheS1ncm91cEJ5VG9NYXAuanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVPYmplY3QpOgorICAgICAgICAoc2hvdWxk
QmVPYmplY3QucmVwbGFjZXIpOgorICAgICAgICAoc2hvdWxkQmVNYXApOgorICAgICAgICAodG9P
YmplY3QpOgorICAgICAgICAocmV2ZXJzZUluc2VydGlvbk9yZGVyKToKKwogMjAyMS0xMi0xNSAg
Sm9zZXBoIEdyaWVnbyAgPGpncmllZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbU2hhZG93IFJl
YWxtc10gV3JhcHBlZCBmdW5jdGlvbnMgbXVzdCBvbmx5IHRocm93IFR5cGVFcnJvciBmcm9tIGNh
bGxpbmcgcmVhbG0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnkuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ZTVkY2NjODlj
NmVjN2IyODIxMGJkMmFjZGIwZjgwZmY5MGZjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9hcnJheS1ncm91cEJ5LmpzCkBAIC0wLDAgKzEsMTI5IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlQXJyYXlHcm91cEJ5TWV0aG9kPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRkFJTDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWR9JyBhY3R1YWwgJyR7
YWN0dWFsfSdgKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVPYmplY3QoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHZh
bHVlID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gIiV1bmRlZmluZWQlIjsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIGxldCBhY3R1YWxKU09OID0gSlNPTi5z
dHJpbmdpZnkoYWN0dWFsLCByZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwg
InVuZGVmaW5lZCIpOworICAgIGxldCBleHBlY3RlZEpTT04gPSBKU09OLnN0cmluZ2lmeShleHBl
Y3RlZCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQi
KTsKKyAgICBzaG91bGRCZShhY3R1YWxKU09OLCBleHBlY3RlZEpTT04pOworfQorCisKKy8vIEhl
bHBlciB2YXJpYWJsZXMKKworbGV0IHNwYXJzZUFycmF5TGVuZ3RoID0gNjsKK2xldCBtaXhQYXJ0
aWFsQW5kRmFzdCA9IG5ldyBBcnJheShzcGFyc2VBcnJheUxlbmd0aCk7CittaXhQYXJ0aWFsQW5k
RmFzdFtzcGFyc2VBcnJheUxlbmd0aCAtIDFdID0gc3BhcnNlQXJyYXlMZW5ndGggLSAxOworZm9y
KGxldCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICBtaXhQYXJ0aWFsQW5kRmFzdFtpXSA9IGk7CisK
K2Z1bmN0aW9uIHRvT2JqZWN0KGFycmF5KSB7CisgICAgbGV0IHJlc3VsdCA9IHt9OworICAgIHJl
c3VsdC5sZW5ndGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yIChsZXQgaSBpbiBhcnJheSkKKyAg
ICAgICAgcmVzdWx0W2ldID0gYXJyYXlbaV07CisgICAgcmVzdWx0Lmdyb3VwQnkgPSBBcnJheS5w
cm90b3R5cGUuZ3JvdXBCeTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiByZXZl
cnNlSW5zZXJ0aW9uT3JkZXIoYXJyYXkpIHsKKyAgICBsZXQgb2JqID0gdG9PYmplY3QoYXJyYXkp
OworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGZvciAobGV0IGkgaW4gb2JqKQorICAgICAgICBw
cm9wcy5wdXNoKGkpOworICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICBmb3IgKGxldCBpID0gcHJv
cHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJlc3VsdFtwcm9wc1tpXV0gPSBv
YmpbcHJvcHNbaV1dOworICAgIHJlc3VsdC5ncm91cEJ5ID0gQXJyYXkucHJvdG90eXBlLmdyb3Vw
Qnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvLyBCYXNpYworCitzaG91bGRCZShBcnJh
eS5wcm90b3R5cGUuZ3JvdXBCeS5sZW5ndGgsIDEpOworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnkubmFtZSwgImdyb3VwQnkiKTsKKworc2hvdWxkQmVPYmplY3QoW3VuZGVmaW5lZF0u
Z3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwge2E6IFt1bmRlZmlu
ZWRdfSk7CitzaG91bGRCZU9iamVjdChbdW5kZWZpbmVkXS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1
bmRlZmluZWQpLCB7dHJ1ZTogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QoKG5ldyBB
cnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwge2E6
IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91bGRC
ZU9iamVjdCgobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7
dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKwor
c2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpID8gImEi
IDogImIiKSwge2E6IFswLCAyXSwgYjogWzEsIDNdfSk7CitzaG91bGRCZU9iamVjdChbMCwgMSwg
MiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkpLCB7dHJ1ZTogWzAsIDJdLCBmYWxzZTogWzEs
IDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4LCBpKSA9PiBp
ID49IDIgPyAiYSIgOiAiYiIpLCB7YjogWzAsIDFdLCBhOiBbMiwgM119KTsKK3Nob3VsZEJlT2Jq
ZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ZmFsc2U6IFswLCAx
XSwgdHJ1ZTogWzIsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0Lmdy
b3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIHtiOiBbMCwgMV0sIGE6IFsyLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVP
YmplY3QobWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwge2ZhbHNl
OiBbMCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5n
dGggLSAxXX0pOworCisKKy8vIEdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJlT2JqZWN0KHRvT2Jq
ZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAi
YiIpLCB7YTogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KFt1bmRlZmlu
ZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7dHJ1ZTogW3VuZGVmaW5lZF19
KTsKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9
PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7YTogW3VuZGVmaW5lZCwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KG5ldyBB
cnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwge3RydWU6IFt1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0
KHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAi
YiIpLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KFsw
LCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkpLCB7dHJ1ZTogWzAsIDJdLCBmYWxz
ZTogWzEsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3Jv
dXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwge2I6IFswLCAxXSwgYTogWzIsIDNd
fSk7CitzaG91bGRCZU9iamVjdCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkp
ID0+IGkgPj0gMiksIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxkQmVP
YmplY3QodG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0g
MiA/ICJhIiA6ICJiIiksIHtiOiBbMCwgMV0sIGE6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
c3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobWl4UGFy
dGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHtmYWxzZTogWzAsIDFdLCB0
cnVlOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsK
KworCisvLyBBcnJheS1saWtlIG9iamVjdCB3aXRoIGludmFsaWQgbGVuZ3RocworCitsZXQgdGhy
b3dFcnJvciA9IGZ1bmN0aW9uIHRocm93RXJyb3IoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJz
aG91bGQgbm90IHJlYWNoIGhlcmUiKTsKK307CitzaG91bGRCZU9iamVjdChBcnJheS5wcm90b3R5
cGUuZ3JvdXBCeS5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAwIH0sIHRo
cm93RXJyb3IpLCB7fSk7CitzaG91bGRCZU9iamVjdChBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5j
YWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCB0aHJvd0Vycm9yKSwg
e30pOworc2hvdWxkQmVPYmplY3QoQXJyYXkucHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAs
IDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogLTQgfSwgdGhyb3dFcnJvciksIHt9KTsKKworCisv
LyBSZXZlcnNlZCBnZW5lcmljIE9iamVjdAorCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0
aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJh
IiA6ICJiIiksIHthOiBbdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7
dHJ1ZTogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9y
ZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDog
ImIiKSwge2E6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7
CitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91
cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAi
YiIpLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpKSwge3RydWU6
IFswLCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0
aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAi
YiIpLCB7YjogWzAsIDFdLCBhOiBbMiwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHtmYWxz
ZTogWzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAi
YSIgOiAiYiIpLCB7YjogWzAsIDFdLCBhOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJz
ZUFycmF5TGVuZ3RoIC0gMV19KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRl
cihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwge2ZhbHNlOiBb
MCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGgg
LSAxXX0pOworCisKKy8vIEV4dHJhIGNhbGxiYWNrIHBhcmFtZXRlcnMKKworc2hvdWxkQmVPYmpl
Y3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKGksIGosIGssIGwsIG0pID0+IG0gPSAhbSksIHt0cnVl
OiBbMCwgMSwgMiwgM119KTsKKworCisvLyBTcGVjaWFsIGtleXMKKworQXJyYXkucHJvdG90eXBl
Ll9fdGVzdCA9IDQyOworCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkg
PT4gImNvbnN0cnVjdG9yIiksIHtjb25zdHJ1Y3RvcjogWzAsIDEsIDIsIDNdfSk7CitzaG91bGRC
ZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gInByb3RvdHlwZSIpLCB7cHJvdG90
eXBlOiBbMCwgMSwgMiwgM119KTsKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5
KCh4KSA9PiAiX19wcm90b19fIikuX19wcm90b19fLCBbMCwgMSwgMiwgM10pOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktZ3JvdXBCeVRvTWFwLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YXJyYXktZ3JvdXBCeVRvTWFwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MjljYzNmZTBkYmM4ZTdmNjllZWNh
Y2ViZWNmMTZjMzdkZjE0MDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJh
eS1ncm91cEJ5VG9NYXAuanMKQEAgLTAsMCArMSwxMzMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VBcnJheUdyb3VwQnlNZXRob2Q9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBGQUlMOiBleHBlY3RlZCAnJHtleHBlY3RlZH0nIGFjdHVhbCAnJHthY3R1YWx9
J2ApOworfQorCitmdW5jdGlvbiBzaG91bGRCZU9iamVjdChhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgPT09
IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiAiJXVuZGVmaW5lZCUiOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgbGV0IGFjdHVhbEpTT04gPSBKU09OLnN0cmluZ2lm
eShhY3R1YWwsIHJlcGxhY2VyKS5yZXBsYWNlQWxsKCJcIiV1bmRlZmluZWQlXCIiLCAidW5kZWZp
bmVkIik7CisgICAgbGV0IGV4cGVjdGVkSlNPTiA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkLCBy
ZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworICAg
IHNob3VsZEJlKGFjdHVhbEpTT04sIGV4cGVjdGVkSlNPTik7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlTWFwKGEsIGIpIHsKKyAgICBzaG91bGRCZU9iamVjdChBcnJheS5mcm9tKGEpLCBPYmplY3Qu
ZW50cmllcyhiKSk7Cit9CisKKworLy8gSGVscGVyIHZhcmlhYmxlcworCitsZXQgc3BhcnNlQXJy
YXlMZW5ndGggPSA2OworbGV0IG1peFBhcnRpYWxBbmRGYXN0ID0gbmV3IEFycmF5KHNwYXJzZUFy
cmF5TGVuZ3RoKTsKK21peFBhcnRpYWxBbmRGYXN0W3NwYXJzZUFycmF5TGVuZ3RoIC0gMV0gPSBz
cGFyc2VBcnJheUxlbmd0aCAtIDE7Citmb3IobGV0IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIG1p
eFBhcnRpYWxBbmRGYXN0W2ldID0gaTsKKworZnVuY3Rpb24gdG9PYmplY3QoYXJyYXkpIHsKKyAg
ICBsZXQgcmVzdWx0ID0ge307CisgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAg
ICBmb3IgKGxldCBpIGluIGFycmF5KQorICAgICAgICByZXN1bHRbaV0gPSBhcnJheVtpXTsKKyAg
ICByZXN1bHQuZ3JvdXBCeVRvTWFwID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcDsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoYXJy
YXkpIHsKKyAgICBsZXQgb2JqID0gdG9PYmplY3QoYXJyYXkpOworICAgIGxldCBwcm9wcyA9IFtd
OworICAgIGZvciAobGV0IGkgaW4gb2JqKQorICAgICAgICBwcm9wcy5wdXNoKGkpOworICAgIGxl
dCByZXN1bHQgPSB7fTsKKyAgICBmb3IgKGxldCBpID0gcHJvcHMubGVuZ3RoIC0gMTsgaSA+PSAw
OyBpLS0pCisgICAgICAgIHJlc3VsdFtwcm9wc1tpXV0gPSBvYmpbcHJvcHNbaV1dOworICAgIHJl
c3VsdC5ncm91cEJ5VG9NYXAgPSBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKKworLy8gQmFzaWMKKworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcC5sZW5ndGgsIDEpOworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBlLmdyb3Vw
QnlUb01hcC5uYW1lLCAiZ3JvdXBCeVRvTWFwIik7CisKK3Nob3VsZEJlTWFwKFt1bmRlZmluZWRd
Lmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwge2E6IFt1
bmRlZmluZWRdfSk7CitzaG91bGRCZU1hcChbdW5kZWZpbmVkXS5ncm91cEJ5VG9NYXAoKHgpID0+
IHggPT09IHVuZGVmaW5lZCksIHt0cnVlOiBbdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU1hcCgo
bmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6
ICJiIiksIHthOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0p
Oworc2hvdWxkQmVNYXAoKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1
bmRlZmluZWQpLCB7dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVm
aW5lZF19KTsKKworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4g
ISh4ICYgMSkgPyAiYSIgOiAiYiIpLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJl
TWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpKSwge3RydWU6IFsw
LCAyXSwgZmFsc2U6IFsxLCAzXX0pOworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBC
eVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7YjogWzAsIDFdLCBhOiBbMiwg
M119KTsKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkg
Pj0gMiksIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxkQmVNYXAobWl4
UGFydGlhbEFuZEZhc3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIp
LCB7YjogWzAsIDFdLCBhOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVu
Z3RoIC0gMV19KTsKK3Nob3VsZEJlTWFwKG1peFBhcnRpYWxBbmRGYXN0Lmdyb3VwQnlUb01hcCgo
eCwgaSkgPT4gaSA+PSAyKSwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKy8vIEdlbmVyaWMgT2JqZWN0
CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoKHgpID0+
IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHthOiBbdW5kZWZpbmVkXX0pOworc2hvdWxk
QmVNYXAodG9PYmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkKSwge3RydWU6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG5l
dyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAi
YiIpLCB7YTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsK
K3Nob3VsZEJlTWFwKHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4
ID09PSB1bmRlZmluZWQpLCB7dHJ1ZTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVNYXAodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5ncm91
cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIiKSwge2E6IFswLCAyXSwgYjogWzEs
IDNdfSk7CitzaG91bGRCZU1hcCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgo
eCkgPT4gISh4ICYgMSkpLCB7dHJ1ZTogWzAsIDJdLCBmYWxzZTogWzEsIDNdfSk7CisKK3Nob3Vs
ZEJlTWFwKHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49
IDIgPyAiYSIgOiAiYiIpLCB7YjogWzAsIDFdLCBhOiBbMiwgM119KTsKK3Nob3VsZEJlTWFwKHRv
T2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCB7ZmFs
c2U6IFswLCAxXSwgdHJ1ZTogWzIsIDNdfSk7CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG1peFBh
cnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiks
IHtiOiBbMCwgMV0sIGE6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5n
dGggLSAxXX0pOworc2hvdWxkQmVNYXAodG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3Vw
QnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSwge2ZhbHNlOiBbMCwgMV0sIHRydWU6IFsyLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKy8vIEFycmF5
LWxpa2Ugb2JqZWN0IHdpdGggaW52YWxpZCBsZW5ndGhzCisKK2xldCB0aHJvd0Vycm9yID0gZnVu
Y3Rpb24gdGhyb3dFcnJvcigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoInNob3VsZCBub3QgcmVh
Y2ggaGVyZSIpOworfTsKK3Nob3VsZEJlTWFwKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAu
Y2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogMCB9LCB0aHJvd0Vycm9yKSwg
e30pOworc2hvdWxkQmVNYXAoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDog
MCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCB0aHJvd0Vycm9yKSwge30pOworc2hv
dWxkQmVNYXAoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTogMSwg
MjogMiwgMzogMywgbGVuZ3RoOiAtNCB9LCB0aHJvd0Vycm9yKSwge30pOworCisKKy8vIFJldmVy
c2VkIGdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihb
dW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAi
YiIpLCB7YTogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRl
cihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7dHJ1
ZTogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5l
dyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAi
YiIpLCB7YTogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsK
K3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcgQXJyYXkoNCkpLmdyb3VwQnlU
b01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwge3RydWU6IFt1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRp
b25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIg
OiAiYiIpLCB7YTogWzAsIDJdLCBiOiBbMSwgM119KTsKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpLCB7
dHJ1ZTogWzAsIDJdLCBmYWxzZTogWzEsIDNdfSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8g
ImEiIDogImIiKSwge2I6IFswLCAxXSwgYTogWzIsIDNdfSk7CitzaG91bGRCZU1hcChyZXZlcnNl
SW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0g
MiksIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgM119KTsKKworc2hvdWxkQmVNYXAocmV2ZXJz
ZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+
IGkgPj0gMiA/ICJhIiA6ICJiIiksIHtiOiBbMCwgMV0sIGE6IFsyLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0g
MiksIHtmYWxzZTogWzAsIDFdLCB0cnVlOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJz
ZUFycmF5TGVuZ3RoIC0gMV19KTsKKworCisvLyBFeHRyYSBjYWxsYmFjayBwYXJhbWV0ZXJzCisK
K3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKGksIGosIGssIGwsIG0pID0+
IG0gPSAhbSksIHt0cnVlOiBbMCwgMSwgMiwgM119KTsKKworCisvLyBTcGVjaWFsIGtleXMKKwor
QXJyYXkucHJvdG90eXBlLl9fdGVzdCA9IDQyOworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10u
Z3JvdXBCeVRvTWFwKCh4KSA9PiAiY29uc3RydWN0b3IiKSwge2NvbnN0cnVjdG9yOiBbMCwgMSwg
MiwgM119KTsKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICJw
cm90b3R5cGUiKSwge3Byb3RvdHlwZTogWzAsIDEsIDIsIDNdfSk7CitzaG91bGRCZU9iamVjdChb
MCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiAiX19wcm90b19fIikuZ2V0KCJfX3Byb3Rv
X18iKSwgWzAsIDEsIDIsIDNdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447320</attachid>
            <date>2021-12-15 19:54:39 -0800</date>
            <delta_ts>2021-12-15 20:03:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234327-20211215205438.patch</filename>
            <type>text/plain</type>
            <size>26118</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNGUxZjQ2NDVmMTVjNGIxMTgyNGNmMWUwY2Fh
ZmZmOWVhYzA1MjguLjJmMDJjMmFiMjMwYmY0NmI0NGI5MDUwMzJhOWEyZGFjMTM2Y2Q4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBB
cnJheSBHcm91cGluZyBwcm9wb3NhbCA8aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5LWdy
b3VwaW5nLz4sIHdoaWNoIGp1c3QKKyAgICAgICAgcmVhY2hlZCBTdGFnZSAzLgorCisgICAgICAg
IGBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeWAvYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXBg
IHdpbGwgcmV0dXJuIGEgYHt9YC9gTWFwYCB3aGVyZSBlYWNoCisgICAgICAgIHZhbHVlIGluIHRo
ZSBhcnJheSBpcyBwdXQgaW50byBhICJidWNrZXQiIGtleWVkIGJ5IHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIHByb3ZvZGVkIGNhbGxiYWNrLgorCisgICAgICAgIGBgYGpzCisgICAgICAgIGNvbnN0
IGFycmF5ID0gWzEsIDIsIDMsIDRdOworCisgICAgICAgIGFycmF5Lmdyb3VwQnkobiA9PiBuICUg
MiA/ICJvZGQiIDogImV2ZW4iKSAvLyB7IG9kZDogWzEsIDNdLCBldmVuOiBbMiwgNF0gfQorICAg
ICAgICBhcnJheS5ncm91cEJ5VG9NYXAobiA9PiBuICUgMiA/ICJvZGQiIDogImV2ZW4iKSAvLyBu
ZXcgTWFwKFtbIm9kZCIsIFsxLCAzXV0sIFsiZXZlbiIsIFsyLCA0XV0pCisgICAgICAgIGBgYAor
CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5
KTogQWRkZWQuCisgICAgICAgIChncm91cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICBBbGxvdyBgQE1hcGAgdG8gYmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBw
cmltb3JkaWFsIGBNYXBgIGluc3RhbmNlLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlz
dC5oOgorICAgICAgICBBZGQgYHVzZUFycmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIx
LTEyLTE1ICBKb3NlcGggR3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
aGFkb3cgUmVhbG1zXSBXcmFwcGVkIGZ1bmN0aW9ucyBtdXN0IG9ubHkgdGhyb3cgVHlwZUVycm9y
IGZyb20gY2FsbGluZyByZWFsbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMx
MjU2ZTBhMTA3ZDQxMmM0YTAwZjM0MTdjZjJmZThiNS4uMzQ2YmUwNTlmNTNhNjliNTNjMmE5ZmQ4
ZDQzYTkyZjg1NDc1ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoK
KwogMjAyMS0xMi0xNCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29tcHV0ZWQgUGFuZWw6IEFkanVzdCBjb2xvciBvZiBDU1Mg
VmFyaWFibGVzIGdyb3VwaW5nIG1vZGUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IGVhMjE5YTcwMjljZTA2OWRhYTcy
NTNmMzJmODAzMDBiY2Q0NTM1MmEuLmE3NjI5YWJhNzdlZDEzMmJkNzJhZGVlZjRmZmVmMzVhMWJi
NWY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMKQEAgLTE1Niw2ICsxNTYsNjAgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Z1bmN0aW9uIGdyb3VwQnko
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRo
aXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxl
bmd0aCk7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdy
b3VwcyA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworCisgICAgICAgIHZh
ciBrZXkgPSBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaSwgYXJyYXkpOworCisgICAg
ICAgIHZhciBncm91cCA9IGdyb3Vwc1trZXldOworICAgICAgICBpZiAoIWdyb3VwKSB7CisgICAg
ICAgICAgICBncm91cCA9IFtdOworICAgICAgICAgICAgZ3JvdXBzW2tleV0gPSBncm91cDsKKyAg
ICAgICAgfQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZ3JvdXAsIGdyb3VwLmxlbmd0aCwgdmFs
dWUpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXBzOworfQorCitmdW5jdGlvbiBncm91cEJ5VG9N
YXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0
KHRoaXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwIHJlcXVpcmVzIHRoYXQgfHRoaXN8
IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgIHZhciBsZW5ndGggPSBAdG9MZW5ndGgo
YXJyYXkubGVuZ3RoKTsKKworICAgIGlmICghQGlzQ2FsbGFibGUoY2FsbGJhY2spKQorICAgICAg
ICBAdGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAgY2FsbGJhY2sg
bXVzdCBiZSBhIGZ1bmN0aW9uIik7CisKKyAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsK
KworICAgIHZhciBncm91cHMgPSBuZXcgQE1hcDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworCisgICAgICAgIHZh
ciBrZXkgPSBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaSwgYXJyYXkpOworICAgICAg
ICBpZiAoa2V5ID09PSAtMCkKKyAgICAgICAgICAgIGtleSA9ICswOworCisgICAgICAgIHZhciBn
cm91cCA9IGdyb3Vwcy5AZ2V0KGtleSk7CisgICAgICAgIGlmICghZ3JvdXApIHsKKyAgICAgICAg
ICAgIGdyb3VwID0gW107CisgICAgICAgICAgICBncm91cHMuQHNldChrZXksIGdyb3VwKTsKKyAg
ICAgICAgfQorICAgICAgICBAcHV0QnlWYWxEaXJlY3QoZ3JvdXAsIGdyb3VwLmxlbmd0aCwgdmFs
dWUpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXBzOworfQorCiBmdW5jdGlvbiBtYXAoY2FsbGJh
Y2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBzdHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDU2OGRhMTljODY1NzNiOGY3
ZjMwZTg4ZDNkZjhlMDE2YjgxODkzMDUuLjgwYTg3ZWIwMDdhOWQzOGM3MTU0Mjg5NjU4Zjg4MTM4
NDZiYzg4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKQEAgLTcwLDYgKzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oZGVmaW5l
UHJvcGVydHkpIFwKICAgICBtYWNybyhkZWZhdWx0UHJvbWlzZVRoZW4pIFwKICAgICBtYWNybyhT
ZXQpIFwKKyAgICBtYWNybyhNYXApIFwKICAgICBtYWNybyh0aHJvd1R5cGVFcnJvckZ1bmN0aW9u
KSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlD
b250ZW50VHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5r
VGltZUNvbnN0YW50LmgKaW5kZXggNTdhOTBlYzBmYWNjMTJkZGNkOWFiZjRhYzJmMmRjYmFiMGUw
ZmFkNy4uZTY2ZThmZGIxNmFmMGY2ODlmMGFiZWE0ODBhZWNiNDUyYWM4YjlmMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC03
Nyw2ICs3Nyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYoYXBwZW5kTWVtY3B5LCBu
dWxscHRyKSBcCiAgICAgdihob3N0UHJvbWlzZVJlamVjdGlvblRyYWNrZXIsIG51bGxwdHIpIFwK
ICAgICB2KFNldCwgbnVsbHB0cikgXAorICAgIHYoTWFwLCBudWxscHRyKSBcCiAgICAgdih0aGlz
VGltZVZhbHVlLCBudWxscHRyKSBcCiAgICAgdihpbXBvcnRJblJlYWxtLCBudWxscHRyKSBcCiAg
ICAgdihldmFsSW5SZWFsbSwgbnVsbHB0cikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDZlYTZiNjdhMDRmMzNkNDE5MzYyN2Fk
ZmE3MDBkMTE3ZmZjYTM2ZDIuLjNmYmVhNDU0NDQ2ODllYjQzMzQ0NzYzZjNiOGQyM2ExOTJjMjM1
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAKQEAgLTEwMCw2ICsxMDAsMTAgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigiaW5kZXhPZiIsIGFycmF5
UHJvdG9GdW5jSW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIDEsIEFycmF5SW5kZXhPZkludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImxhc3RJbmRleE9mIiwgYXJyYXlQcm90b0Z1bmNM
YXN0SW5kZXhPZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIDEpOwogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5maWx0ZXJQdWJsaWNOYW1lKCksIGFycmF5
UHJvdG90eXBlRmlsdGVyQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgIGlmIChPcHRpb25zOjp1c2VBcnJheUdyb3Vw
QnlNZXRob2QoKSkgeworICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ3JvdXBCeVB1YmxpY05hbWUo
KSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5Q29kZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAgICAgICBKU0NfQlVJTFRJTl9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ3JvdXBCeVRvTWFwUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUdyb3VwQnlUb01hcENv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICB9CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRQdWJsaWNOYW1lKCksIGFy
cmF5UHJvdG90eXBlRmxhdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmxhdE1hcFB1
YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVGbGF0TWFwQ29kZUdlbmVyYXRvciwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIEpTQ19CVUlM
VElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWR1Y2VQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlUmVkdWNlQ29kZUdlbmVy
YXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkp
OwpAQCAtMTM3LDYgKzE0MSw4IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgT3B0aW9uczo6
dXNlQXJyYXlGaW5kTGFzdE1ldGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmZpbmRMYXN0SW5kZXhQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAmdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmxhdFB1YmxpY05hbWUoKSwKICAgICAgICAgJnZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRNYXBQdWJsaWNOYW1lKCksCisgICAg
ICAgIE9wdGlvbnM6OnVzZUFycmF5R3JvdXBCeU1ldGhvZCgpID8gJnZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlQdWJsaWNOYW1lKCkgOiBudWxscHRyLAorICAgICAgICBP
cHRpb25zOjp1c2VBcnJheUdyb3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5ncm91cEJ5VG9NYXBQdWJsaWNOYW1lKCkgOiBudWxscHRyLAogICAgICAgICAm
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW5jbHVkZXNQdWJsaWNOYW1lKCksCiAg
ICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5rZXlzUHVibGljTmFtZSgp
LAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHVibGlj
TmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggMGU0OGUzMzBjYWY5ZjE1ZDIwZGVhZGZiZjJhNjg2MzE1MzUzZWE2ZC4uMjg2
NGExOTVmNTQyZTA5NDM2YWZmNzgzMTFjNDk2YjUzNTAyMTM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTM1MCw2ICsxMzUw
LDkgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3Rv
ciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpTZXQpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0
KGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLT5zZXRDb25zdHJ1Y3RvcigpKTsK
ICAgICAgICAgfSk7CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTGlua1RpbWVDb25zdGFudDo6TWFwKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXpl
cjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKS0+bWFwQ29uc3RydWN0b3IoKSk7CisgICAgICAgIH0pOwogICAg
IG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3Rh
bnQ6Om1hcEJ1Y2tldEhlYWQpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIG1h
cFByaXZhdGVGdW5jTWFwQnVja2V0SGVhZCwgSlNNYXBCdWNrZXRIZWFkSW50cmluc2ljKSk7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgK
aW5kZXggZWFmNzIzOTY0Yjc3YmFlMTNhZmZmNzc3MTE4MWIyNDE5OGJjZmZlNy4uYmY5ZDhhMzgz
ZjczNzlmYjFiOTljYTI0OGFhOTIwZGMxNTFmOWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MzgsNiArNTM4LDcgQEAgYm9vbCBjYW5Vc2VX
ZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICAvKiBGZWF0dXJlIEZsYWdzICovXAogICAgIFwK
ICAgICB2KEJvb2wsIHVzZUFycmF5RmluZExhc3RNZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgZmluZExhc3QoKSBhbmQgZmluZExhc3RJbmRleCgpIG1ldGhvZHMgb24gQXJyYXkgYW5k
ICVUeXBlZEFycmF5JS4iKSBcCisgICAgdihCb29sLCB1c2VBcnJheUdyb3VwQnlNZXRob2QsIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGdyb3VwQnkoKSBhbmQgZ3JvdXBCeVRvTWFwKCkgbWV0
aG9kcyBvbiBBcnJheS4iKSBcCiAgICAgdihCb29sLCB1c2VBdE1ldGhvZCwgdHJ1ZSwgTm9ybWFs
LCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBvbiBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3Ry
aW5nLiIpIFwKICAgICB2KEJvb2wsIHVzZUhhc093biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRo
ZSBPYmplY3QuaGFzT3duIG1ldGhvZCIpIFwKICAgICB2KEJvb2wsIHVzZUludGxFbnVtZXJhdGlv
biwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsIGVudW1lcmF0aW9uIEFQSXMuIikgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05h
dGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKaW5kZXggYTdiNjU5MWM2
OWNkYmIyYzBhN2NkMTJhZDFlMDAzM2U0NjI5NWE2Ny4uZjhhOTEzYzBmMjA3ODAzNjIwYTI5NDZm
ODNlZDFhYzI5NjYxZTI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0
ZXJzLmpzCkBAIC0yNTIsNiArMjUyLDggQEAgV0kuTmF0aXZlUHJvdG90eXBlRnVuY3Rpb25QYXJh
bWV0ZXJzID0gewogICAgICAgICBmaW5kTGFzdDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAg
ICAgICBmaW5kTGFzdEluZGV4OiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGZvckVh
Y2g6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKKyAgICAgICAgZ3JvdXBCeTogImNhbGxiYWNrLCBb
dGhpc0FyZ10iLAorICAgICAgICBncm91cEJ5VG9NYXA6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwK
ICAgICAgICAgaW5jbHVkZXM6ICJzZWFyY2hWYWx1ZSwgW3N0YXJ0SW5kZXg9MF0iLAogICAgICAg
ICBpbmRleE9mOiAic2VhcmNoVmFsdWUsIFtzdGFydEluZGV4PTBdIiwKICAgICAgICAgam9pbjog
IltzZXBhcmF0b3I9XCIsXCJdIiwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjA1NzkyMjY2ZDFlNjYxODc5ZjQ2NzExNjFiZGNjN2E2ZTI0
M2QxMi4uZTkwZGVmMzRmOTY3MmVkZGI0MDUyMWU5NWU0Njk4NDA4NmFiNTU0MyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAyMS0xMi0xNSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5IGFuZCBBcnJheS5wcm90b3R5
cGUuZ3JvdXBCeVRvTWFwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQzMjcKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisg
ICAgICAgICogc3RyZXNzL2FycmF5LWdyb3VwQnkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoc2hvdWxkQmVPYmplY3QpOgorICAgICAgICAoc2hvdWxkQmVPYmplY3Qu
cmVwbGFjZXIpOgorICAgICAgICAobm90UmVhY2hlZCk6CisgICAgICAgICh0b09iamVjdCk6Cisg
ICAgICAgIChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIpOgorICAgICAgICAqIHN0cmVzcy9hcnJheS1n
cm91cEJ5VG9NYXAuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVPYmplY3QpOgorICAgICAgICAoc2hvdWxkQmVPYmplY3QucmVwbGFjZXIpOgorICAgICAg
ICAoc2hvdWxkQmVNYXApOgorICAgICAgICAobm90UmVhY2hlZCk6CisgICAgICAgICh0b09iamVj
dCk6CisgICAgICAgIChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIpOgorCiAyMDIxLTEyLTE1ICBKb3Nl
cGggR3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTaGFkb3cgUmVhbG1z
XSBXcmFwcGVkIGZ1bmN0aW9ucyBtdXN0IG9ubHkgdGhyb3cgVHlwZUVycm9yIGZyb20gY2FsbGlu
ZyByZWFsbQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJyYXktZ3JvdXBCeS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTNmNzA5ZDdiYWI0ODkx
YjIxNDg5YjE1NzQ0OWRhYzZiMWEzOWRkYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2FycmF5LWdyb3VwQnkuanMKQEAgLTAsMCArMSwxNTEgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VBcnJheUdyb3VwQnlNZXRob2Q9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVh
bCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBGQUlMOiBleHBlY3RlZCAnJHtleHBlY3RlZH0nIGFjdHVhbCAnJHthY3R1
YWx9J2ApOworfQorCitmdW5jdGlvbiBzaG91bGRCZU9iamVjdChhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUg
PT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiAiJXVuZGVmaW5lZCUiOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgbGV0IGFjdHVhbEpTT04gPSBKU09OLnN0cmlu
Z2lmeShhY3R1YWwsIHJlcGxhY2VyKS5yZXBsYWNlQWxsKCJcIiV1bmRlZmluZWQlXCIiLCAidW5k
ZWZpbmVkIik7CisgICAgbGV0IGV4cGVjdGVkSlNPTiA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVk
LCByZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOwor
ICAgIHNob3VsZEJlKGFjdHVhbEpTT04sIGV4cGVjdGVkSlNPTik7Cit9CisKK2Z1bmN0aW9uIG5v
dFJlYWNoZWQoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCJzaG91bGQgbm90IHJlYWNoIGhlcmUi
KTsKK30KKworCisvLyBIZWxwZXIgdmFyaWFibGVzCisKK0FycmF5LnByb3RvdHlwZS5fX3Rlc3Qg
PSA0MjsKKworbGV0IHNwYXJzZUFycmF5TGVuZ3RoID0gNjsKK2xldCBtaXhQYXJ0aWFsQW5kRmFz
dCA9IG5ldyBBcnJheShzcGFyc2VBcnJheUxlbmd0aCk7CittaXhQYXJ0aWFsQW5kRmFzdFtzcGFy
c2VBcnJheUxlbmd0aCAtIDFdID0gc3BhcnNlQXJyYXlMZW5ndGggLSAxOworZm9yKGxldCBpID0g
MDsgaSA8IDM7ICsraSkKKyAgICBtaXhQYXJ0aWFsQW5kRmFzdFtpXSA9IGk7CisKK2Z1bmN0aW9u
IHRvT2JqZWN0KGFycmF5KSB7CisgICAgbGV0IHJlc3VsdCA9IHt9OworICAgIHJlc3VsdC5sZW5n
dGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yIChsZXQgaSBpbiBhcnJheSkKKyAgICAgICAgcmVz
dWx0W2ldID0gYXJyYXlbaV07CisgICAgcmVzdWx0Lmdyb3VwQnkgPSBBcnJheS5wcm90b3R5cGUu
Z3JvdXBCeTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiByZXZlcnNlSW5zZXJ0
aW9uT3JkZXIoYXJyYXkpIHsKKyAgICBsZXQgb2JqID0gdG9PYmplY3QoYXJyYXkpOworICAgIGxl
dCBwcm9wcyA9IFtdOworICAgIGZvciAobGV0IGkgaW4gb2JqKQorICAgICAgICBwcm9wcy5wdXNo
KGkpOworICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICBmb3IgKGxldCBpID0gcHJvcHMubGVuZ3Ro
IC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICAgIHJlc3VsdFtwcm9wc1tpXV0gPSBvYmpbcHJvcHNb
aV1dOworICAgIHJlc3VsdC5ncm91cEJ5ID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworbGV0IG9iamVjdFdpdGhUb1N0cmluZ1RoYXRUaHJvd3MgPSB7
CisgICAgdG9TdHJpbmc6IG5vdFJlYWNoZWQsCit9OworCitsZXQgb2JqZWN0V2l0aFZhbHVlT2ZU
aGF0VGhyb3dzID0geworICAgIHZhbHVlT2Y6IG5vdFJlYWNoZWQsCit9OworCisKKy8vIEJhc2lj
CisKK3Nob3VsZEJlKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5Lmxlbmd0aCwgMSk7CitzaG91bGRC
ZShBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5uYW1lLCAiZ3JvdXBCeSIpOworCitzaG91bGRCZU9i
amVjdChbdW5kZWZpbmVkXS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAi
YiIpLCB7ImEiOiBbdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QoW3VuZGVmaW5lZF0uZ3Jv
dXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgeyJ0cnVlIjogW3VuZGVmaW5lZF19KTsKKwor
c2hvdWxkQmVPYmplY3QoKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZp
bmVkID8gImEiIDogImIiKSwgeyJhIjogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KChuZXcgQXJyYXkoNCkpLmdyb3VwQnkoKHgp
ID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1ZSI6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91
cEJ5KCh4KSA9PiAhKHggJiAxKSA/ICJhIiA6ICJiIiksIHsiYSI6IFswLCAyXSwgImIiOiBbMSwg
M119KTsKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAhKHggJiAx
KSksIHsidHJ1ZSI6IFswLCAyXSwgImZhbHNlIjogWzEsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0
KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIi
OiBbMCwgMV0sICJhIjogWzIsIDNdfSk7CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3Jv
dXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwgeyJmYWxzZSI6IFswLCAxXSwgInRydWUiOiBbMiwgM119
KTsKKworc2hvdWxkQmVPYmplY3QobWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeSgoeCwgaSkgPT4g
aSA+PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVPYmplY3QobWl4UGFy
dGlhbEFuZEZhc3QuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwgeyJmYWxzZSI6IFswLCAxXSwg
InRydWUiOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19
KTsKKworCisvLyBHZW5lcmljIE9iamVjdAorCitzaG91bGRCZU9iamVjdCh0b09iamVjdChbdW5k
ZWZpbmVkXSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgeyJh
IjogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KFt1bmRlZmluZWRdKS5n
cm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZpbmVkXX0pOwor
CitzaG91bGRCZU9iamVjdCh0b09iamVjdChuZXcgQXJyYXkoNCkpLmdyb3VwQnkoKHgpID0+IHgg
PT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsiYSI6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU9iamVjdCh0b09iamVjdChuZXcgQXJy
YXkoNCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1ZSI6IFt1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0
KHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAi
YiIpLCB7ImEiOiBbMCwgMl0sICJiIjogWzEsIDNdfSk7CitzaG91bGRCZU9iamVjdCh0b09iamVj
dChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpKSwgeyJ0cnVlIjogWzAsIDJd
LCAiZmFsc2UiOiBbMSwgM119KTsKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoWzAsIDEsIDIs
IDNdKS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIiOiBbMCwgMV0s
ICJhIjogWzIsIDNdfSk7CitzaG91bGRCZU9iamVjdCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdy
b3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIDNd
fSk7CisKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5
KCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIiOiBbMCwgMV0sICJhIjogWzIsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CitzaG91bGRCZU9i
amVjdCh0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAy
KSwgeyJmYWxzZSI6IFswLCAxXSwgInRydWUiOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNw
YXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKKworCisvLyBBcnJheS1saWtlIG9iamVjdCB3aXRoIGlu
dmFsaWQgbGVuZ3RocworCitzaG91bGRCZU9iamVjdChBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5j
YWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAwIH0sIG5vdFJlYWNoZWQpLCB7
fSk7CitzaG91bGRCZU9iamVjdChBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5jYWxsKHsgMDogMCwg
MTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCBub3RSZWFjaGVkKSwge30pOworc2hvdWxk
QmVPYmplY3QoQXJyYXkucHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIs
IDM6IDMsIGxlbmd0aDogLTQgfSwgbm90UmVhY2hlZCksIHt9KTsKKworCisvLyBSZXZlcnNlZCBn
ZW5lcmljIE9iamVjdAorCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3Vu
ZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsi
YSI6IFt1bmRlZmluZWRdfSk7CitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIo
W3VuZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1ZSI6IFt1
bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcg
QXJyYXkoNCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsi
YSI6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91
bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4
KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9u
T3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSA/ICJhIiA6ICJiIiks
IHsiYSI6IFswLCAyXSwgImIiOiBbMSwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpKSwgeyJ0cnVl
IjogWzAsIDJdLCAiZmFsc2UiOiBbMSwgM119KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUlu
c2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEi
IDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCAzXX0pOworc2hvdWxkQmVPYmplY3QocmV2
ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAy
KSwgeyJmYWxzZSI6IFswLCAxXSwgInRydWUiOiBbMiwgM119KTsKKworc2hvdWxkQmVPYmplY3Qo
cmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KCh4LCBpKSA9
PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIiOiBbMCwgMV0sICJhIjogWzIsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CitzaG91bGRCZU9iamVjdChyZXZl
cnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkg
Pj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisKKworLy8gRXh0cmEgY2FsbGJhY2sgcGFyYW1l
dGVycworCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoaSwgaiwgaywgbCwg
bSkgPT4gbSA9ICFtKSwgeyJ0cnVlIjogWzAsIDEsIDIsIDNdfSk7CisKKworLy8gU3BlY2lhbCBr
ZXlzCisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAiY29uc3Ry
dWN0b3IiKS5jb25zdHJ1Y3RvciwgWzAsIDEsIDIsIDNdKTsKKworc2hvdWxkQmVPYmplY3QoWzAs
IDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+ICJwcm90b3R5cGUiKS5wcm90b3R5cGUsIFswLCAxLCAy
LCAzXSk7CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gIl9fcHJv
dG9fXyIpLl9fcHJvdG9fXywgWzAsIDEsIDIsIDNdKTsKKworc2hvdWxkQmVPYmplY3QoWzAsIDEs
IDIsIDNdLmdyb3VwQnkoKHgpID0+IC0wKVswXSwgWzAsIDEsIDIsIDNdKTsKK3Nob3VsZEJlT2Jq
ZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAwKVswXSwgWzAsIDEsIDIsIDNdKTsKKwor
dHJ5IHsKKyAgICBzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gb2Jq
ZWN0V2l0aFRvU3RyaW5nVGhhdFRocm93cyksIHt9KTsKKyAgICBub3RSZWFjaGVkKCk7Cit9IGNh
dGNoIChlKSB7CisgICAgc2hvdWxkQmUoZS5tZXNzYWdlLCAic2hvdWxkIG5vdCByZWFjaCBoZXJl
Iik7Cit9CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiBvYmpl
Y3RXaXRoVmFsdWVPZlRoYXRUaHJvd3MpWyJbb2JqZWN0IE9iamVjdF0iXSwgWzAsIDEsIDIsIDNd
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnlUb01hcC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnlUb01hcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWUyMGEyZGQ3
MDg5MmNiZDM5ZmEyMWU1YzJjY2ZlYjhlZGU5M2NlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYXJyYXktZ3JvdXBCeVRvTWFwLmpzCkBAIC0wLDAgKzEsMTUwIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlQXJyYXlHcm91cEJ5TWV0aG9kPTEiKQorCitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRkFJTDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWR9JyBhY3R1
YWwgJyR7YWN0dWFsfSdgKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVPYmplY3QoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpIHsKKyAgICAgICAg
aWYgKHZhbHVlID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gIiV1bmRlZmluZWQl
IjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIGxldCBhY3R1YWxKU09OID0g
SlNPTi5zdHJpbmdpZnkoYWN0dWFsLCByZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVk
JVwiIiwgInVuZGVmaW5lZCIpOworICAgIGxldCBleHBlY3RlZEpTT04gPSBKU09OLnN0cmluZ2lm
eShleHBlY3RlZCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRl
ZmluZWQiKTsKKyAgICBzaG91bGRCZShhY3R1YWxKU09OLCBleHBlY3RlZEpTT04pOworfQorCitm
dW5jdGlvbiBzaG91bGRCZU1hcChhLCBiKSB7CisgICAgc2hvdWxkQmVPYmplY3QoQXJyYXkuZnJv
bShhKSwgYik7Cit9CisKK2Z1bmN0aW9uIG5vdFJlYWNoZWQoKSB7CisgICAgdGhyb3cgbmV3IEVy
cm9yKCJzaG91bGQgbm90IHJlYWNoIGhlcmUiKTsKK30KKworCisvLyBIZWxwZXIgdmFyaWFibGVz
CisKK0FycmF5LnByb3RvdHlwZS5fX3Rlc3QgPSA0MjsKKworbGV0IHNwYXJzZUFycmF5TGVuZ3Ro
ID0gNjsKK2xldCBtaXhQYXJ0aWFsQW5kRmFzdCA9IG5ldyBBcnJheShzcGFyc2VBcnJheUxlbmd0
aCk7CittaXhQYXJ0aWFsQW5kRmFzdFtzcGFyc2VBcnJheUxlbmd0aCAtIDFdID0gc3BhcnNlQXJy
YXlMZW5ndGggLSAxOworZm9yKGxldCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICBtaXhQYXJ0aWFs
QW5kRmFzdFtpXSA9IGk7CisKK2Z1bmN0aW9uIHRvT2JqZWN0KGFycmF5KSB7CisgICAgbGV0IHJl
c3VsdCA9IHt9OworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheS5sZW5ndGg7CisgICAgZm9yIChs
ZXQgaSBpbiBhcnJheSkKKyAgICAgICAgcmVzdWx0W2ldID0gYXJyYXlbaV07CisgICAgcmVzdWx0
Lmdyb3VwQnlUb01hcCA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXA7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2VydGlvbk9yZGVyKGFycmF5KSB7Cisg
ICAgbGV0IG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBm
b3IgKGxldCBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVzaChpKTsKKyAgICBsZXQgcmVzdWx0
ID0ge307CisgICAgZm9yIChsZXQgaSA9IHByb3BzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQor
ICAgICAgICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3BzW2ldXTsKKyAgICByZXN1bHQuZ3Jv
dXBCeVRvTWFwID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcDsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitsZXQgb2JqZWN0V2l0aFRvU3RyaW5nVGhhdFRocm93cyA9IHsKKyAgICB0b1N0
cmluZzogbm90UmVhY2hlZCwKK307CisKK2xldCBvYmplY3RXaXRoVmFsdWVPZlRoYXRUaHJvd3Mg
PSB7CisgICAgdmFsdWVPZjogbm90UmVhY2hlZCwKK307CisKKworLy8gQmFzaWMKKworc2hvdWxk
QmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5sZW5ndGgsIDEpOworc2hvdWxkQmUoQXJy
YXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5uYW1lLCAiZ3JvdXBCeVRvTWFwIik7CisKK3Nob3Vs
ZEJlTWFwKFt1bmRlZmluZWRdLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8g
ImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWRdXV0pOworc2hvdWxkQmVNYXAoW3VuZGVmaW5l
ZF0uZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCBbW3RydWUsIFt1bmRlZmlu
ZWRdXV0pOworCitzaG91bGRCZU1hcCgobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+
IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKChuZXcgQXJyYXkoNCkp
Lmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKKworc2hvdWxkQmVNYXAoWzAs
IDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIpLCBbWyJh
IiwgWzAsIDJdXSwgWyJiIiwgWzEsIDNdXV0pOworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdy
b3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpLCBbW3RydWUsIFswLCAyXV0sIFtmYWxzZSwgWzEs
IDNdXV0pOworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4LCBpKSA9
PiBpID49IDIgPyAiYSIgOiAiYiIpLCBbWyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIDNdXV0pOwor
c2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSwg
W1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCAzXV1dKTsKKworc2hvdWxkQmVNYXAobWl4UGFy
dGlhbEFuZEZhc3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCBb
WyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJh
eUxlbmd0aCAtIDFdXV0pOworc2hvdWxkQmVNYXAobWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeVRv
TWFwKCh4LCBpKSA9PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBbdHJ1ZSwgWzIsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOworCisKKy8vIEdlbmVy
aWMgT2JqZWN0CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5VG9N
YXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVk
XV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoKHgp
ID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZF1dXSk7CisKK3Nob3VsZEJl
TWFwKHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRl
ZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChuZXcgQXJyYXkoNCkpLmdy
b3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZpbmVkLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKKworc2hvdWxkQmVNYXAodG9PYmpl
Y3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIi
KSwgW1siYSIsIFswLCAyXV0sIFsiYiIsIFsxLCAzXV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0
KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSksIFtbdHJ1ZSwgWzAs
IDJdXSwgW2ZhbHNlLCBbMSwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFswLCAxLCAy
LCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCBbWyJiIiwg
WzAsIDFdXSwgWyJhIiwgWzIsIDNdXV0pOworc2hvdWxkQmVNYXAodG9PYmplY3QoWzAsIDEsIDIs
IDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiksIFtbZmFsc2UsIFswLCAxXV0sIFt0
cnVlLCBbMiwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0
KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtbImIiLCBbMCwg
MV1dLCBbImEiLCBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0g
MV1dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRv
TWFwKCh4LCBpKSA9PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBbdHJ1ZSwgWzIsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOworCisKKy8vIEFycmF5
LWxpa2Ugb2JqZWN0IHdpdGggaW52YWxpZCBsZW5ndGhzCisKK3Nob3VsZEJlTWFwKEFycmF5LnBy
b3RvdHlwZS5ncm91cEJ5VG9NYXAuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0
aDogMCB9LCBub3RSZWFjaGVkKSwgW10pOworc2hvdWxkQmVNYXAoQXJyYXkucHJvdG90eXBlLmdy
b3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtMCB9LCBu
b3RSZWFjaGVkKSwgW10pOworc2hvdWxkQmVNYXAoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01h
cC5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtNCB9LCBub3RSZWFjaGVk
KSwgW10pOworCisKKy8vIFJldmVyc2VkIGdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJlTWFwKHJl
dmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09
PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZF1dXSk7CitzaG91bGRC
ZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01hcCgoeCkg
PT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZpbmVkXV1dKTsKKworc2hvdWxkQmVN
YXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9
PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcChyZXZlcnNlSW5zZXJ0
aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5l
ZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1d
XSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdy
b3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIpLCBbWyJhIiwgWzAsIDJdXSwg
WyJiIiwgWzEsIDNdXV0pOworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAx
LCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSksIFtbdHJ1ZSwgWzAsIDJdXSwg
W2ZhbHNlLCBbMSwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihb
MCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwg
W1siYiIsIFswLCAxXV0sIFsiYSIsIFsyLCAzXV1dKTsKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSwg
W1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCAzXV1dKTsKKworc2hvdWxkQmVNYXAocmV2ZXJz
ZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+
IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtbImIiLCBbMCwgMV1dLCBbImEiLCBbMiwgdW5kZWZpbmVk
LCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV1dXSk7CitzaG91bGRCZU1hcChyZXZl
cnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcCgoeCwgaSkg
PT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXV1dKTsKKworCisvLyBFeHRyYSBjYWxsYmFjayBw
YXJhbWV0ZXJzCisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKGksIGos
IGssIGwsIG0pID0+IG0gPSAhbSksIFtbdHJ1ZSwgWzAsIDEsIDIsIDNdXV0pOworCisKKy8vIFNw
ZWNpYWwga2V5cworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9
PiAiY29uc3RydWN0b3IiKS5nZXQoImNvbnN0cnVjdG9yIiksIFswLCAxLCAyLCAzXSk7CisKK3No
b3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICJwcm90b3R5cGUiKS5n
ZXQoInByb3RvdHlwZSIpLCBbMCwgMSwgMiwgM10pOworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNd
Lmdyb3VwQnlUb01hcCgoeCkgPT4gIl9fcHJvdG9fXyIpLmdldCgiX19wcm90b19fIiksIFswLCAx
LCAyLCAzXSk7CisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+
IC0wKS5nZXQoMCksIFswLCAxLCAyLCAzXSk7CitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3Jv
dXBCeVRvTWFwKCh4KSA9PiAwKS5nZXQoMCksIFswLCAxLCAyLCAzXSk7CisKK3Nob3VsZEJlTWFw
KFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IG9iamVjdFdpdGhUb1N0cmluZ1RoYXRU
aHJvd3MpLmdldChvYmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzKSwgWzAsIDEsIDIsIDNdKTsK
Kworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gb2JqZWN0V2l0
aFZhbHVlT2ZUaGF0VGhyb3dzKS5nZXQob2JqZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dzKSwgWzAs
IDEsIDIsIDNdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447321</attachid>
            <date>2021-12-15 20:03:19 -0800</date>
            <delta_ts>2021-12-15 20:13:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>234327.diff</filename>
            <type>text/plain</type>
            <size>26062</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNGUxZjQ2NDVmMTVjNGIxMTgyNGNmMWUwY2Fh
ZmZmOWVhYzA1MjguLjJmMDJjMmFiMjMwYmY0NmI0NGI5MDUwMzJhOWEyZGFjMTM2Y2Q4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBB
cnJheSBHcm91cGluZyBwcm9wb3NhbCA8aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5LWdy
b3VwaW5nLz4sIHdoaWNoIGp1c3QKKyAgICAgICAgcmVhY2hlZCBTdGFnZSAzLgorCisgICAgICAg
IGBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeWAvYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXBg
IHdpbGwgcmV0dXJuIGEgYHt9YC9gTWFwYCB3aGVyZSBlYWNoCisgICAgICAgIHZhbHVlIGluIHRo
ZSBhcnJheSBpcyBwdXQgaW50byBhICJidWNrZXQiIGtleWVkIGJ5IHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIHByb3ZvZGVkIGNhbGxiYWNrLgorCisgICAgICAgIGBgYGpzCisgICAgICAgIGNvbnN0
IGFycmF5ID0gWzEsIDIsIDMsIDRdOworCisgICAgICAgIGFycmF5Lmdyb3VwQnkobiA9PiBuICUg
MiA/ICJvZGQiIDogImV2ZW4iKSAvLyB7IG9kZDogWzEsIDNdLCBldmVuOiBbMiwgNF0gfQorICAg
ICAgICBhcnJheS5ncm91cEJ5VG9NYXAobiA9PiBuICUgMiA/ICJvZGQiIDogImV2ZW4iKSAvLyBu
ZXcgTWFwKFtbIm9kZCIsIFsxLCAzXV0sIFsiZXZlbiIsIFsyLCA0XV0pCisgICAgICAgIGBgYAor
CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5
KTogQWRkZWQuCisgICAgICAgIChncm91cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICBBbGxvdyBgQE1hcGAgdG8gYmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBw
cmltb3JkaWFsIGBNYXBgIGluc3RhbmNlLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlz
dC5oOgorICAgICAgICBBZGQgYHVzZUFycmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIx
LTEyLTE1ICBKb3NlcGggR3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
aGFkb3cgUmVhbG1zXSBXcmFwcGVkIGZ1bmN0aW9ucyBtdXN0IG9ubHkgdGhyb3cgVHlwZUVycm9y
IGZyb20gY2FsbGluZyByZWFsbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMx
MjU2ZTBhMTA3ZDQxMmM0YTAwZjM0MTdjZjJmZThiNS4uMzQ2YmUwNTlmNTNhNjliNTNjMmE5ZmQ4
ZDQzYTkyZjg1NDc1ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoK
KwogMjAyMS0xMi0xNCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29tcHV0ZWQgUGFuZWw6IEFkanVzdCBjb2xvciBvZiBDU1Mg
VmFyaWFibGVzIGdyb3VwaW5nIG1vZGUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IGVhMjE5YTcwMjljZTA2OWRhYTcy
NTNmMzJmODAzMDBiY2Q0NTM1MmEuLmE3NjI5YWJhNzdlZDEzMmJkNzJhZGVlZjRmZmVmMzVhMWJi
NWY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMKQEAgLTE1Niw2ICsxNTYsNTQgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Z1bmN0aW9uIGdyb3VwQnko
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRo
aXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxl
bmd0aCk7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdy
b3VwcyA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworICAgICAgICB2YXIg
a2V5ID0gY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGksIGFycmF5KTsKKyAgICAgICAg
dmFyIGdyb3VwID0gZ3JvdXBzW2tleV07CisgICAgICAgIGlmICghZ3JvdXApIHsKKyAgICAgICAg
ICAgIGdyb3VwID0gW107CisgICAgICAgICAgICBncm91cHNba2V5XSA9IGdyb3VwOworICAgICAg
ICB9CisgICAgICAgIEBwdXRCeVZhbERpcmVjdChncm91cCwgZ3JvdXAubGVuZ3RoLCB2YWx1ZSk7
CisgICAgfQorICAgIHJldHVybiBncm91cHM7Cit9CisKK2Z1bmN0aW9uIGdyb3VwQnlUb01hcChj
YWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhp
cywgIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90
IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJh
eS5sZW5ndGgpOworCisgICAgaWYgKCFAaXNDYWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0
aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcCBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisg
ICAgdmFyIGdyb3VwcyA9IG5ldyBATWFwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaV07CisgICAgICAgIHZhciBrZXkg
PSBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB2YWx1ZSwgaSwgYXJyYXkpOworICAgICAgICB2YXIg
Z3JvdXAgPSBncm91cHMuQGdldChrZXkpOworICAgICAgICBpZiAoIWdyb3VwKSB7CisgICAgICAg
ICAgICBncm91cCA9IFtdOworICAgICAgICAgICAgZ3JvdXBzLkBzZXQoa2V5LCBncm91cCk7Cisg
ICAgICAgIH0KKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGdyb3VwLCBncm91cC5sZW5ndGgsIHZh
bHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGdyb3VwczsKK30KKwogZnVuY3Rpb24gbWFwKGNhbGxi
YWNrIC8qLCB0aGlzQXJnICovKQogewogICAgICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCA1NjhkYTE5Yzg2NTczYjhm
N2YzMGU4OGQzZGY4ZTAxNmI4MTg5MzA1Li44MGE4N2ViMDA3YTlkMzhjNzE1NDI4OTY1OGY4ODEz
ODQ2YmM4ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC03MCw2ICs3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGRlZmlu
ZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVmYXVsdFByb21pc2VUaGVuKSBcCiAgICAgbWFjcm8o
U2V0KSBcCisgICAgbWFjcm8oTWFwKSBcCiAgICAgbWFjcm8odGhyb3dUeXBlRXJyb3JGdW5jdGlv
bikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlMZW5ndGgpIFwKICAgICBtYWNybyh0eXBlZEFycmF5
Q29udGVudFR5cGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlu
a1RpbWVDb25zdGFudC5oCmluZGV4IDU3YTkwZWMwZmFjYzEyZGRjZDlhYmY0YWMyZjJkY2JhYjBl
MGZhZDcuLmU2NmU4ZmRiMTZhZjBmNjg5ZjBhYmVhNDgwYWVjYjQ1MmFjOGI5ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAt
NzcsNiArNzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KGFwcGVuZE1lbWNweSwg
bnVsbHB0cikgXAogICAgIHYoaG9zdFByb21pc2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRyKSBc
CiAgICAgdihTZXQsIG51bGxwdHIpIFwKKyAgICB2KE1hcCwgbnVsbHB0cikgXAogICAgIHYodGhp
c1RpbWVWYWx1ZSwgbnVsbHB0cikgXAogICAgIHYoaW1wb3J0SW5SZWFsbSwgbnVsbHB0cikgXAog
ICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA2ZWE2YjY3YTA0ZjMzZDQxOTM2Mjdh
ZGZhNzAwZDExN2ZmY2EzNmQyLi4zZmJlYTQ1NDQ0Njg5ZWI0MzM0NDc2M2YzYjhkMjNhMTkyYzIz
NWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0xMDAsNiArMTAwLDEwIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBhcnJh
eVByb3RvRnVuY0luZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCAxLCBBcnJheUluZGV4T2ZJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIGFycmF5UHJvdG9GdW5j
TGFzdEluZGV4T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCAxKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04o
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZmlsdGVyUHVibGljTmFtZSgpLCBhcnJh
eVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlQXJyYXlHcm91
cEJ5TWV0aG9kKCkpIHsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFO
U0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlQdWJsaWNOYW1l
KCksIGFycmF5UHJvdG90eXBlR3JvdXBCeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5f
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdyb3VwQnlUb01hcFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5VG9NYXBD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgfQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJ
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0UHVibGljTmFtZSgpLCBh
cnJheVByb3RvdHlwZUZsYXRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRNYXBQ
dWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlRmxhdE1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJ
TFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucmVkdWNlUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZUNvZGVHZW5l
cmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKQEAgLTEzNyw2ICsxNDEsOCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6
OnVzZUFycmF5RmluZExhc3RNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5maW5kTGFzdEluZGV4UHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0TWFwUHVibGljTmFtZSgpLAorICAg
ICAgICBPcHRpb25zOjp1c2VBcnJheUdyb3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5ncm91cEJ5UHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAg
T3B0aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ3JvdXBCeVRvTWFwUHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAg
JnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpLAog
ICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUo
KSwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1Ymxp
Y05hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDBlNDhlMzMwY2FmOWYxNWQyMGRlYWRmYmYyYTY4NjMxNTM1M2VhNmQuLjI4
NjRhMTk1ZjU0MmUwOTQzNmFmZjc4MzExYzQ5NmI1MzUwMjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNTAsNiArMTM1
MCw5IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0KV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNl
dChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKS0+c2V0Q29uc3RydWN0b3IoKSk7
CiAgICAgICAgIH0pOworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciktPm1hcENvbnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAg
ICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0
YW50OjptYXBCdWNrZXRIZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0Nl
bGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBt
YXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwog
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CmluZGV4IGVhZjcyMzk2NGI3N2JhZTEzYWZmZjc3NzExODFiMjQxOThiY2ZmZTcuLmJmOWQ4YTM4
M2Y3Mzc5ZmIxYjk5Y2EyNDhhYTkyMGRjMTUxZjlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw3IEBAIGJvb2wgY2FuVXNl
V2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAgICAgLyogRmVhdHVyZSBGbGFncyAqL1wKICAgICBc
CiAgICAgdihCb29sLCB1c2VBcnJheUZpbmRMYXN0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBv
c2UgdGhlIGZpbmRMYXN0KCkgYW5kIGZpbmRMYXN0SW5kZXgoKSBtZXRob2RzIG9uIEFycmF5IGFu
ZCAlVHlwZWRBcnJheSUuIikgXAorICAgIHYoQm9vbCwgdXNlQXJyYXlHcm91cEJ5TWV0aG9kLCBm
YWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBncm91cEJ5KCkgYW5kIGdyb3VwQnlUb01hcCgpIG1l
dGhvZHMgb24gQXJyYXkuIikgXAogICAgIHYoQm9vbCwgdXNlQXRNZXRob2QsIHRydWUsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgYXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0
cmluZy4iKSBcCiAgICAgdihCb29sLCB1c2VIYXNPd24sIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0
aGUgT2JqZWN0Lmhhc093biBtZXRob2QiKSBcCiAgICAgdihCb29sLCB1c2VJbnRsRW51bWVyYXRp
b24sIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bCBlbnVtZXJhdGlvbiBBUElzLiIpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9O
YXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCmluZGV4IGE3YjY1OTFj
NjljZGJiMmMwYTdjZDEyYWQxZTAwMzNlNDYyOTVhNjcuLmY4YTkxM2MwZjIwNzgwMzYyMGEyOTQ2
ZjgzZWQxYWMyOTY2MWUyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1l
dGVycy5qcwpAQCAtMjUyLDYgKzI1Miw4IEBAIFdJLk5hdGl2ZVByb3RvdHlwZUZ1bmN0aW9uUGFy
YW1ldGVycyA9IHsKICAgICAgICAgZmluZExhc3Q6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAg
ICAgICAgZmluZExhc3RJbmRleDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAgICAgICBmb3JF
YWNoOiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCisgICAgICAgIGdyb3VwQnk6ICJjYWxsYmFjaywg
W3RoaXNBcmddIiwKKyAgICAgICAgZ3JvdXBCeVRvTWFwOiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIs
CiAgICAgICAgIGluY2x1ZGVzOiAic2VhcmNoVmFsdWUsIFtzdGFydEluZGV4PTBdIiwKICAgICAg
ICAgaW5kZXhPZjogInNlYXJjaFZhbHVlLCBbc3RhcnRJbmRleD0wXSIsCiAgICAgICAgIGpvaW46
ICJbc2VwYXJhdG9yPVwiLFwiXSIsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYwNTc5MjI2NmQxZTY2MTg3OWY0NjcxMTYxYmRjYzdhNmUy
NDNkMTIuLmU5MGRlZjM0Zjk2NzJlZGRiNDA1MjFlOTVlNDY5ODQwODZhYjU1NDMgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90
eXBlLmdyb3VwQnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKwor
ICAgICAgICAqIHN0cmVzcy9hcnJheS1ncm91cEJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0KToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0
LnJlcGxhY2VyKToKKyAgICAgICAgKG5vdFJlYWNoZWQpOgorICAgICAgICAodG9PYmplY3QpOgor
ICAgICAgICAocmV2ZXJzZUluc2VydGlvbk9yZGVyKToKKyAgICAgICAgKiBzdHJlc3MvYXJyYXkt
Z3JvdXBCeVRvTWFwLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZEJlT2JqZWN0KToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0LnJlcGxhY2VyKToKKyAgICAg
ICAgKHNob3VsZEJlTWFwKToKKyAgICAgICAgKG5vdFJlYWNoZWQpOgorICAgICAgICAodG9PYmpl
Y3QpOgorICAgICAgICAocmV2ZXJzZUluc2VydGlvbk9yZGVyKToKKwogMjAyMS0xMi0xNSAgSm9z
ZXBoIEdyaWVnbyAgPGpncmllZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbU2hhZG93IFJlYWxt
c10gV3JhcHBlZCBmdW5jdGlvbnMgbXVzdCBvbmx5IHRocm93IFR5cGVFcnJvciBmcm9tIGNhbGxp
bmcgcmVhbG0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnkuanMgYi9K
U1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZjcwOWQ3YmFiNDg5
MWIyMTQ4OWIxNTc0NDlkYWM2YjFhMzlkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hcnJheS1ncm91cEJ5LmpzCkBAIC0wLDAgKzEsMTUxIEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlQXJyYXlHcm91cEJ5TWV0aG9kPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRkFJTDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWR9JyBhY3R1YWwgJyR7YWN0
dWFsfSdgKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVPYmplY3QoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVl
ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gIiV1bmRlZmluZWQlIjsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIGxldCBhY3R1YWxKU09OID0gSlNPTi5zdHJp
bmdpZnkoYWN0dWFsLCByZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVu
ZGVmaW5lZCIpOworICAgIGxldCBleHBlY3RlZEpTT04gPSBKU09OLnN0cmluZ2lmeShleHBlY3Rl
ZCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsK
KyAgICBzaG91bGRCZShhY3R1YWxKU09OLCBleHBlY3RlZEpTT04pOworfQorCitmdW5jdGlvbiBu
b3RSZWFjaGVkKCkgeworICAgIHRocm93IG5ldyBFcnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJl
Iik7Cit9CisKKworLy8gSGVscGVyIHZhcmlhYmxlcworCitBcnJheS5wcm90b3R5cGUuX190ZXN0
ID0gNDI7CisKK2xldCBzcGFyc2VBcnJheUxlbmd0aCA9IDY7CitsZXQgbWl4UGFydGlhbEFuZEZh
c3QgPSBuZXcgQXJyYXkoc3BhcnNlQXJyYXlMZW5ndGgpOworbWl4UGFydGlhbEFuZEZhc3Rbc3Bh
cnNlQXJyYXlMZW5ndGggLSAxXSA9IHNwYXJzZUFycmF5TGVuZ3RoIC0gMTsKK2ZvcihsZXQgaSA9
IDA7IGkgPCAzOyArK2kpCisgICAgbWl4UGFydGlhbEFuZEZhc3RbaV0gPSBpOworCitmdW5jdGlv
biB0b09iamVjdChhcnJheSkgeworICAgIGxldCByZXN1bHQgPSB7fTsKKyAgICByZXN1bHQubGVu
Z3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZvciAobGV0IGkgaW4gYXJyYXkpCisgICAgICAgIHJl
c3VsdFtpXSA9IGFycmF5W2ldOworICAgIHJlc3VsdC5ncm91cEJ5ID0gQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKGFycmF5KSB7CisgICAgbGV0IG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICBs
ZXQgcHJvcHMgPSBbXTsKKyAgICBmb3IgKGxldCBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVz
aChpKTsKKyAgICBsZXQgcmVzdWx0ID0ge307CisgICAgZm9yIChsZXQgaSA9IHByb3BzLmxlbmd0
aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAgICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3Bz
W2ldXTsKKyAgICByZXN1bHQuZ3JvdXBCeSA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5OworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2xldCBvYmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzID0g
eworICAgIHRvU3RyaW5nOiBub3RSZWFjaGVkLAorfTsKKworbGV0IG9iamVjdFdpdGhWYWx1ZU9m
VGhhdFRocm93cyA9IHsKKyAgICB2YWx1ZU9mOiBub3RSZWFjaGVkLAorfTsKKworCisvLyBCYXNp
YworCitzaG91bGRCZShBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5sZW5ndGgsIDEpOworc2hvdWxk
QmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnkubmFtZSwgImdyb3VwQnkiKTsKKworc2hvdWxkQmVP
YmplY3QoW3VuZGVmaW5lZF0uZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDog
ImIiKSwgeyJhIjogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KFt1bmRlZmluZWRdLmdy
b3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1ZSI6IFt1bmRlZmluZWRdfSk7CisK
K3Nob3VsZEJlT2JqZWN0KChuZXcgQXJyYXkoNCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVm
aW5lZCA/ICJhIiA6ICJiIiksIHsiYSI6IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU9iamVjdCgobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4
KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3Jv
dXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIpLCB7ImEiOiBbMCwgMl0sICJiIjogWzEs
IDNdfSk7CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4ICYg
MSkpLCB7InRydWUiOiBbMCwgMl0sICJmYWxzZSI6IFsxLCAzXX0pOworCitzaG91bGRCZU9iamVj
dChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJi
IjogWzAsIDFdLCAiYSI6IFsyLCAzXX0pOworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdy
b3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIDNd
fSk7CisKK3Nob3VsZEJlT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0Lmdyb3VwQnkoKHgsIGkpID0+
IGkgPj0gMiA/ICJhIiA6ICJiIiksIHsiYiI6IFswLCAxXSwgImEiOiBbMiwgdW5kZWZpbmVkLCB1
bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKK3Nob3VsZEJlT2JqZWN0KG1peFBh
cnRpYWxBbmRGYXN0Lmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0s
ICJ0cnVlIjogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFd
fSk7CisKKworLy8gR2VuZXJpYyBPYmplY3QKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoW3Vu
ZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsi
YSI6IFt1bmRlZmluZWRdfSk7CitzaG91bGRCZU9iamVjdCh0b09iamVjdChbdW5kZWZpbmVkXSku
Z3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgeyJ0cnVlIjogW3VuZGVmaW5lZF19KTsK
Kworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4
ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7ImEiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobmV3IEFy
cmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVj
dCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpID8gImEiIDog
ImIiKSwgeyJhIjogWzAsIDJdLCAiYiI6IFsxLCAzXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmpl
Y3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSksIHsidHJ1ZSI6IFswLCAy
XSwgImZhbHNlIjogWzEsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KFswLCAxLCAy
LCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFd
LCAiYSI6IFsyLCAzXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCAz
XX0pOworCitzaG91bGRCZU9iamVjdCh0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBC
eSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVP
YmplY3QodG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0g
MiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBz
cGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisKKworLy8gQXJyYXktbGlrZSBvYmplY3Qgd2l0aCBp
bnZhbGlkIGxlbmd0aHMKKworc2hvdWxkQmVPYmplY3QoQXJyYXkucHJvdG90eXBlLmdyb3VwQnku
Y2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogMCB9LCBub3RSZWFjaGVkKSwg
e30pOworc2hvdWxkQmVPYmplY3QoQXJyYXkucHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAs
IDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogLTAgfSwgbm90UmVhY2hlZCksIHt9KTsKK3Nob3Vs
ZEJlT2JqZWN0KEFycmF5LnByb3RvdHlwZS5ncm91cEJ5LmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAy
LCAzOiAzLCBsZW5ndGg6IC00IH0sIG5vdFJlYWNoZWQpLCB7fSk7CisKKworLy8gUmV2ZXJzZWQg
Z2VuZXJpYyBPYmplY3QKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1
bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7
ImEiOiBbdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVy
KFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBb
dW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3
IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7
ImEiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworc2hv
dWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgo
eCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgeyJ0cnVlIjogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1
bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlv
bk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIp
LCB7ImEiOiBbMCwgMl0sICJiIjogWzEsIDNdfSk7CitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5z
ZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9PiAhKHggJiAxKSksIHsidHJ1
ZSI6IFswLCAyXSwgImZhbHNlIjogWzEsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJ
bnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJh
IiA6ICJiIiksIHsiYiI6IFswLCAxXSwgImEiOiBbMiwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHJl
dmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0g
MiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0
KHJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkg
PT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVPYmplY3QocmV2
ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5KCh4LCBpKSA9PiBp
ID49IDIpLCB7ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKy8vIEV4dHJhIGNhbGxiYWNrIHBhcmFt
ZXRlcnMKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKGksIGosIGssIGws
IG0pID0+IG0gPSAhbSksIHsidHJ1ZSI6IFswLCAxLCAyLCAzXX0pOworCisKKy8vIFNwZWNpYWwg
a2V5cworCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gImNvbnN0
cnVjdG9yIikuY29uc3RydWN0b3IsIFswLCAxLCAyLCAzXSk7CisKK3Nob3VsZEJlT2JqZWN0KFsw
LCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAicHJvdG90eXBlIikucHJvdG90eXBlLCBbMCwgMSwg
MiwgM10pOworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+ICJfX3By
b3RvX18iKS5fX3Byb3RvX18sIFswLCAxLCAyLCAzXSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAx
LCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAtMClbMF0sIFswLCAxLCAyLCAzXSk7CitzaG91bGRCZU9i
amVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gMClbMF0sIFswLCAxLCAyLCAzXSk7CisK
K3RyeSB7CisgICAgc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+IG9i
amVjdFdpdGhUb1N0cmluZ1RoYXRUaHJvd3MpLCB7fSk7CisgICAgbm90UmVhY2hlZCgpOworfSBj
YXRjaCAoZSkgeworICAgIHNob3VsZEJlKGUubWVzc2FnZSwgInNob3VsZCBub3QgcmVhY2ggaGVy
ZSIpOworfQorCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gb2Jq
ZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dzKVsiW29iamVjdCBPYmplY3RdIl0sIFswLCAxLCAyLCAz
XSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5VG9NYXAuanMgYi9K
U1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5VG9NYXAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVlMjBhMmRk
NzA4OTJjYmQzOWZhMjFlNWMyY2NmZWI4ZWRlOTNjZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2FycmF5LWdyb3VwQnlUb01hcC5qcwpAQCAtMCwwICsxLDE1MCBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZUFycmF5R3JvdXBCeU1ldGhvZD0xIikKKworZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZBSUw6IGV4cGVjdGVkICcke2V4cGVjdGVkfScgYWN0
dWFsICcke2FjdHVhbH0nYCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlT2JqZWN0KGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKSB7CisgICAgICAg
IGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuICIldW5kZWZpbmVk
JSI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBsZXQgYWN0dWFsSlNPTiA9
IEpTT04uc3RyaW5naWZ5KGFjdHVhbCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5l
ZCVcIiIsICJ1bmRlZmluZWQiKTsKKyAgICBsZXQgZXhwZWN0ZWRKU09OID0gSlNPTi5zdHJpbmdp
ZnkoZXhwZWN0ZWQsIHJlcGxhY2VyKS5yZXBsYWNlQWxsKCJcIiV1bmRlZmluZWQlXCIiLCAidW5k
ZWZpbmVkIik7CisgICAgc2hvdWxkQmUoYWN0dWFsSlNPTiwgZXhwZWN0ZWRKU09OKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVNYXAoYSwgYikgeworICAgIHNob3VsZEJlT2JqZWN0KEFycmF5LmZy
b20oYSksIGIpOworfQorCitmdW5jdGlvbiBub3RSZWFjaGVkKCkgeworICAgIHRocm93IG5ldyBF
cnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJlIik7Cit9CisKKworLy8gSGVscGVyIHZhcmlhYmxl
cworCitBcnJheS5wcm90b3R5cGUuX190ZXN0ID0gNDI7CisKK2xldCBzcGFyc2VBcnJheUxlbmd0
aCA9IDY7CitsZXQgbWl4UGFydGlhbEFuZEZhc3QgPSBuZXcgQXJyYXkoc3BhcnNlQXJyYXlMZW5n
dGgpOworbWl4UGFydGlhbEFuZEZhc3Rbc3BhcnNlQXJyYXlMZW5ndGggLSAxXSA9IHNwYXJzZUFy
cmF5TGVuZ3RoIC0gMTsKK2ZvcihsZXQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgbWl4UGFydGlh
bEFuZEZhc3RbaV0gPSBpOworCitmdW5jdGlvbiB0b09iamVjdChhcnJheSkgeworICAgIGxldCBy
ZXN1bHQgPSB7fTsKKyAgICByZXN1bHQubGVuZ3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZvciAo
bGV0IGkgaW4gYXJyYXkpCisgICAgICAgIHJlc3VsdFtpXSA9IGFycmF5W2ldOworICAgIHJlc3Vs
dC5ncm91cEJ5VG9NYXAgPSBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIHJldmVyc2VJbnNlcnRpb25PcmRlcihhcnJheSkgewor
ICAgIGxldCBvYmogPSB0b09iamVjdChhcnJheSk7CisgICAgbGV0IHByb3BzID0gW107CisgICAg
Zm9yIChsZXQgaSBpbiBvYmopCisgICAgICAgIHByb3BzLnB1c2goaSk7CisgICAgbGV0IHJlc3Vs
dCA9IHt9OworICAgIGZvciAobGV0IGkgPSBwcm9wcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkK
KyAgICAgICAgcmVzdWx0W3Byb3BzW2ldXSA9IG9ialtwcm9wc1tpXV07CisgICAgcmVzdWx0Lmdy
b3VwQnlUb01hcCA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXA7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworbGV0IG9iamVjdFdpdGhUb1N0cmluZ1RoYXRUaHJvd3MgPSB7CisgICAgdG9T
dHJpbmc6IG5vdFJlYWNoZWQsCit9OworCitsZXQgb2JqZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dz
ID0geworICAgIHZhbHVlT2Y6IG5vdFJlYWNoZWQsCit9OworCisKKy8vIEJhc2ljCisKK3Nob3Vs
ZEJlKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAubGVuZ3RoLCAxKTsKK3Nob3VsZEJlKEFy
cmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAubmFtZSwgImdyb3VwQnlUb01hcCIpOworCitzaG91
bGRCZU1hcChbdW5kZWZpbmVkXS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/
ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKFt1bmRlZmlu
ZWRdLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZp
bmVkXV1dKTsKKworc2hvdWxkQmVNYXAoKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9
PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcCgobmV3IEFycmF5KDQp
KS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5l
ZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CisKK3Nob3VsZEJlTWFwKFsw
LCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIiKSwgW1si
YSIsIFswLCAyXV0sIFsiYiIsIFsxLCAzXV1dKTsKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5n
cm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpKSwgW1t0cnVlLCBbMCwgMl1dLCBbZmFsc2UsIFsx
LCAzXV1dKTsKKworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCwgaSkg
PT4gaSA+PSAyID8gImEiIDogImIiKSwgW1siYiIsIFswLCAxXV0sIFsiYSIsIFsyLCAzXV1dKTsK
K3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiks
IFtbZmFsc2UsIFswLCAxXV0sIFt0cnVlLCBbMiwgM11dXSk7CisKK3Nob3VsZEJlTWFwKG1peFBh
cnRpYWxBbmRGYXN0Lmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwg
W1siYiIsIFswLCAxXV0sIFsiYSIsIFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJy
YXlMZW5ndGggLSAxXV1dKTsKK3Nob3VsZEJlTWFwKG1peFBhcnRpYWxBbmRGYXN0Lmdyb3VwQnlU
b01hcCgoeCwgaSkgPT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXV1dKTsKKworCisvLyBHZW5l
cmljIE9iamVjdAorCitzaG91bGRCZU1hcCh0b09iamVjdChbdW5kZWZpbmVkXSkuZ3JvdXBCeVRv
TWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5l
ZF1dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4
KSA9PiB4ID09PSB1bmRlZmluZWQpLCBbW3RydWUsIFt1bmRlZmluZWRdXV0pOworCitzaG91bGRC
ZU1hcCh0b09iamVjdChuZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWRdXV0pOworc2hvdWxkQmVNYXAodG9PYmplY3QobmV3IEFycmF5KDQpKS5n
cm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZCwg
dW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CisKK3Nob3VsZEJlTWFwKHRvT2Jq
ZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSA/ICJhIiA6ICJi
IiksIFtbImEiLCBbMCwgMl1dLCBbImIiLCBbMSwgM11dXSk7CitzaG91bGRCZU1hcCh0b09iamVj
dChbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpLCBbW3RydWUsIFsw
LCAyXV0sIFtmYWxzZSwgWzEsIDNdXV0pOworCitzaG91bGRCZU1hcCh0b09iamVjdChbMCwgMSwg
MiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgW1siYiIs
IFswLCAxXV0sIFsiYSIsIFsyLCAzXV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFswLCAxLCAy
LCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBb
dHJ1ZSwgWzIsIDNdXV0pOworCitzaG91bGRCZU1hcCh0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFz
dCkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCBbWyJiIiwgWzAs
IDFdXSwgWyJhIiwgWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAt
IDFdXV0pOworc2hvdWxkQmVNYXAodG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlU
b01hcCgoeCwgaSkgPT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXV1dKTsKKworCisvLyBBcnJh
eS1saWtlIG9iamVjdCB3aXRoIGludmFsaWQgbGVuZ3RocworCitzaG91bGRCZU1hcChBcnJheS5w
cm90b3R5cGUuZ3JvdXBCeVRvTWFwLmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5n
dGg6IDAgfSwgbm90UmVhY2hlZCksIFtdKTsKK3Nob3VsZEJlTWFwKEFycmF5LnByb3RvdHlwZS5n
cm91cEJ5VG9NYXAuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogLTAgfSwg
bm90UmVhY2hlZCksIFtdKTsKK3Nob3VsZEJlTWFwKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9N
YXAuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDogLTQgfSwgbm90UmVhY2hl
ZCksIFtdKTsKKworCisvLyBSZXZlcnNlZCBnZW5lcmljIE9iamVjdAorCitzaG91bGRCZU1hcChy
ZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9
PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWRdXV0pOworc2hvdWxk
QmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoKHgp
ID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZF1dXSk7CisKK3Nob3VsZEJl
TWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkg
PT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWQsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXV0pOworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmlu
ZWQpLCBbW3RydWUsIFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRd
XV0pOworCitzaG91bGRCZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIiKSwgW1siYSIsIFswLCAyXV0s
IFsiYiIsIFsxLCAzXV1dKTsKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwg
MSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpLCBbW3RydWUsIFswLCAyXV0s
IFtmYWxzZSwgWzEsIDNdXV0pOworCitzaG91bGRCZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIo
WzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiks
IFtbImIiLCBbMCwgMV1dLCBbImEiLCBbMiwgM11dXSk7CitzaG91bGRCZU1hcChyZXZlcnNlSW5z
ZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiks
IFtbZmFsc2UsIFswLCAxXV0sIFt0cnVlLCBbMiwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHJldmVy
c2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9
PiBpID49IDIgPyAiYSIgOiAiYiIpLCBbWyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIHVuZGVmaW5l
ZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOworc2hvdWxkQmVNYXAocmV2
ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkp
ID0+IGkgPj0gMiksIFtbZmFsc2UsIFswLCAxXV0sIFt0cnVlLCBbMiwgdW5kZWZpbmVkLCB1bmRl
ZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV1dXSk7CisKKworLy8gRXh0cmEgY2FsbGJhY2sg
cGFyYW1ldGVycworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKChpLCBq
LCBrLCBsLCBtKSA9PiBtID0gIW0pLCBbW3RydWUsIFswLCAxLCAyLCAzXV1dKTsKKworCisvLyBT
cGVjaWFsIGtleXMKKworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkg
PT4gImNvbnN0cnVjdG9yIikuZ2V0KCJjb25zdHJ1Y3RvciIpLCBbMCwgMSwgMiwgM10pOworCitz
aG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiAicHJvdG90eXBlIiku
Z2V0KCJwcm90b3R5cGUiKSwgWzAsIDEsIDIsIDNdKTsKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAz
XS5ncm91cEJ5VG9NYXAoKHgpID0+ICJfX3Byb3RvX18iKS5nZXQoIl9fcHJvdG9fXyIpLCBbMCwg
MSwgMiwgM10pOworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9
PiAtMCkuZ2V0KDApLCBbMCwgMSwgMiwgM10pOworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdy
b3VwQnlUb01hcCgoeCkgPT4gMCkuZ2V0KDApLCBbMCwgMSwgMiwgM10pOworCitzaG91bGRCZU1h
cChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiBvYmplY3RXaXRoVG9TdHJpbmdUaGF0
VGhyb3dzKS5nZXQob2JqZWN0V2l0aFRvU3RyaW5nVGhhdFRocm93cyksIFswLCAxLCAyLCAzXSk7
CisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IG9iamVjdFdp
dGhWYWx1ZU9mVGhhdFRocm93cykuZ2V0KG9iamVjdFdpdGhWYWx1ZU9mVGhhdFRocm93cyksIFsw
LCAxLCAyLCAzXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447323</attachid>
            <date>2021-12-15 20:13:25 -0800</date>
            <delta_ts>2021-12-15 22:58:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>234327.diff</filename>
            <type>text/plain</type>
            <size>26244</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDlhNGUxZjQ2NDVmMTVjNGIxMTgyNGNmMWUwY2Fh
ZmZmOWVhYzA1MjguLjJmMDJjMmFiMjMwYmY0NmI0NGI5MDUwMzJhOWEyZGFjMTM2Y2Q4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBB
cnJheSBHcm91cGluZyBwcm9wb3NhbCA8aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5LWdy
b3VwaW5nLz4sIHdoaWNoIGp1c3QKKyAgICAgICAgcmVhY2hlZCBTdGFnZSAzLgorCisgICAgICAg
IGBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeWAvYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXBg
IHdpbGwgcmV0dXJuIGEgYHt9YC9gTWFwYCB3aGVyZSBlYWNoCisgICAgICAgIHZhbHVlIGluIHRo
ZSBhcnJheSBpcyBwdXQgaW50byBhICJidWNrZXQiIGtleWVkIGJ5IHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIHByb3ZvZGVkIGNhbGxiYWNrLgorCisgICAgICAgIGBgYGpzCisgICAgICAgIGNvbnN0
IGFycmF5ID0gWzEsIDIsIDMsIDRdOworCisgICAgICAgIGFycmF5Lmdyb3VwQnkobiA9PiBuICUg
MiA/ICJvZGQiIDogImV2ZW4iKSAvLyB7IG9kZDogWzEsIDNdLCBldmVuOiBbMiwgNF0gfQorICAg
ICAgICBhcnJheS5ncm91cEJ5VG9NYXAobiA9PiBuICUgMiA/ICJvZGQiIDogImV2ZW4iKSAvLyBu
ZXcgTWFwKFtbIm9kZCIsIFsxLCAzXV0sIFsiZXZlbiIsIFsyLCA0XV0pCisgICAgICAgIGBgYAor
CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5
KTogQWRkZWQuCisgICAgICAgIChncm91cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKworICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICBBbGxvdyBgQE1hcGAgdG8gYmUgdXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBw
cmltb3JkaWFsIGBNYXBgIGluc3RhbmNlLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlz
dC5oOgorICAgICAgICBBZGQgYHVzZUFycmF5R3JvdXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIx
LTEyLTE1ICBKb3NlcGggR3JpZWdvICA8amdyaWVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtT
aGFkb3cgUmVhbG1zXSBXcmFwcGVkIGZ1bmN0aW9ucyBtdXN0IG9ubHkgdGhyb3cgVHlwZUVycm9y
IGZyb20gY2FsbGluZyByZWFsbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMx
MjU2ZTBhMTA3ZDQxMmM0YTAwZjM0MTdjZjJmZThiNS4uMzQ2YmUwNTlmNTNhNjliNTNjMmE5ZmQ4
ZDQzYTkyZjg1NDc1ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjEtMTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoK
KwogMjAyMS0xMi0xNCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29tcHV0ZWQgUGFuZWw6IEFkanVzdCBjb2xvciBvZiBDU1Mg
VmFyaWFibGVzIGdyb3VwaW5nIG1vZGUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IGVhMjE5YTcwMjljZTA2OWRhYTcy
NTNmMzJmODAzMDBiY2Q0NTM1MmEuLmE3NjI5YWJhNzdlZDEzMmJkNzJhZGVlZjRmZmVmMzVhMWJi
NWY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMKQEAgLTE1Niw2ICsxNTYsNTAgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8q
LCB0aGlzQXJnICovKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Z1bmN0aW9uIGdyb3VwQnko
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRo
aXMsICJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUg
bnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxl
bmd0aCk7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93
VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKTsKKworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdy
b3VwcyA9IEBPYmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworICAgICAgICB2YXIg
a2V5ID0gY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGksIGFycmF5KTsKKyAgICAgICAg
dmFyIGdyb3VwID0gKGdyb3Vwc1trZXldID8/PSBbXSk7CisgICAgICAgIEBwdXRCeVZhbERpcmVj
dChncm91cCwgZ3JvdXAubGVuZ3RoLCB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBncm91cHM7
Cit9CisKK2Z1bmN0aW9uIGdyb3VwQnlUb01hcChjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sK
KyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3RvdHlwZS5ncm91cEJ5
VG9NYXAgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIik7Cisg
ICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYgKCFAaXND
YWxsYWJsZShjYWxsYmFjaykpCisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXkucHJvdG90
eXBlLmdyb3VwQnlUb01hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKKworICAgIHZh
ciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdyb3VwcyA9IG5ldyBATWFwOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHZhbHVl
ID0gYXJyYXlbaV07CisgICAgICAgIHZhciBrZXkgPSBjYWxsYmFjay5AY2FsbCh0aGlzQXJnLCB2
YWx1ZSwgaSwgYXJyYXkpOworICAgICAgICB2YXIgZ3JvdXAgPSBncm91cHMuQGdldChrZXkpOwor
ICAgICAgICBpZiAoIWdyb3VwKSB7CisgICAgICAgICAgICBncm91cCA9IFtdOworICAgICAgICAg
ICAgZ3JvdXBzLkBzZXQoa2V5LCBncm91cCk7CisgICAgICAgIH0KKyAgICAgICAgQHB1dEJ5VmFs
RGlyZWN0KGdyb3VwLCBncm91cC5sZW5ndGgsIHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGdy
b3VwczsKK30KKwogZnVuY3Rpb24gbWFwKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogewogICAg
ICJ1c2Ugc3RyaWN0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAppbmRleCA1NjhkYTE5Yzg2NTczYjhmN2YzMGU4OGQzZGY4ZTAxNmI4MTg5MzA1Li44
MGE4N2ViMDA3YTlkMzhjNzE1NDI4OTY1OGY4ODEzODQ2YmM4ODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC03MCw2ICs3MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVm
YXVsdFByb21pc2VUaGVuKSBcCiAgICAgbWFjcm8oU2V0KSBcCisgICAgbWFjcm8oTWFwKSBcCiAg
ICAgbWFjcm8odGhyb3dUeXBlRXJyb3JGdW5jdGlvbikgXAogICAgIG1hY3JvKHR5cGVkQXJyYXlM
ZW5ndGgpIFwKICAgICBtYWNybyh0eXBlZEFycmF5Q29udGVudFR5cGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDU3YTkw
ZWMwZmFjYzEyZGRjZDlhYmY0YWMyZjJkY2JhYjBlMGZhZDcuLmU2NmU4ZmRiMTZhZjBmNjg5ZjBh
YmVhNDgwYWVjYjQ1MmFjOGI5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtNzcsNiArNzcsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICB2KGFwcGVuZE1lbWNweSwgbnVsbHB0cikgXAogICAgIHYoaG9zdFByb21p
c2VSZWplY3Rpb25UcmFja2VyLCBudWxscHRyKSBcCiAgICAgdihTZXQsIG51bGxwdHIpIFwKKyAg
ICB2KE1hcCwgbnVsbHB0cikgXAogICAgIHYodGhpc1RpbWVWYWx1ZSwgbnVsbHB0cikgXAogICAg
IHYoaW1wb3J0SW5SZWFsbSwgbnVsbHB0cikgXAogICAgIHYoZXZhbEluUmVhbG0sIG51bGxwdHIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAppbmRleCA2ZWE2YjY3YTA0ZjMzZDQxOTM2MjdhZGZhNzAwZDExN2ZmY2EzNmQyLi4zZmJlYTQ1
NDQ0Njg5ZWI0MzM0NDc2M2YzYjhkMjNhMTkyYzIzNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDAsNiArMTAwLDEwIEBA
IHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBhcnJheVByb3RvRnVuY0luZGV4T2YsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBBcnJheUluZGV4
T2ZJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KCJsYXN0SW5kZXhPZiIsIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZmlsdGVyUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUZpbHRlckNvZGVHZW5lcmF0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
KyAgICBpZiAoT3B0aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0aG9kKCkpIHsKKyAgICAgICAgSlND
X0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdyb3VwQnlQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBlR3JvdXBCeUNv
ZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlUb01hcFB1YmxpY05hbWUo
KSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5VG9NYXBDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgfQogICAgIEpTQ19C
VUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5mbGF0UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUZsYXRDb2RlR2VuZXJh
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRNYXBQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90eXBl
RmxhdE1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVkdWNlUHVibGljTmFtZSgp
LCBhcnJheVByb3RvdHlwZVJlZHVjZUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTEzNyw2ICsxNDEsOCBAQCB2b2lk
IEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6OnVzZUFycmF5RmluZExhc3RNZXRob2QoKSA/
ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5maW5kTGFzdEluZGV4UHVibGljTmFt
ZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmZsYXRQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5mbGF0TWFwUHVibGljTmFtZSgpLAorICAgICAgICBPcHRpb25zOjp1c2VBcnJheUdyb3Vw
QnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5ncm91cEJ5UHVi
bGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0
aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ3JvdXBCeVRvTWFwUHVi
bGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpLAogICAgICAgICAmdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwKICAgICAgICAgJnZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBlNDhlMzMwY2FmOWYx
NWQyMGRlYWRmYmYyYTY4NjMxNTM1M2VhNmQuLjI4NjRhMTk1ZjU0MmUwOTQzNmFmZjc4MzExYzQ5
NmI1MzUwMjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTEzNTAsNiArMTM1MCw5IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0
cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxO
YW1lCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6U2V0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKS0+c2V0Q29uc3RydWN0b3IoKSk7CiAgICAgICAgIH0pOworICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Ok1hcCld
LmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAg
ICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciktPm1hcENv
bnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRIZWFkKV0uaW5pdExh
dGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBp
bml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01hcEJ1Y2tldEhlYWQs
IEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGVhZjcyMzk2NGI3N2JhZTEzYWZm
Zjc3NzExODFiMjQxOThiY2ZmZTcuLmJmOWQ4YTM4M2Y3Mzc5ZmIxYjk5Y2EyNDhhYTkyMGRjMTUx
ZjlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApA
QCAtNTM4LDYgKzUzOCw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCk7CiAg
ICAgLyogRmVhdHVyZSBGbGFncyAqL1wKICAgICBcCiAgICAgdihCb29sLCB1c2VBcnJheUZpbmRM
YXN0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGZpbmRMYXN0KCkgYW5kIGZpbmRM
YXN0SW5kZXgoKSBtZXRob2RzIG9uIEFycmF5IGFuZCAlVHlwZWRBcnJheSUuIikgXAorICAgIHYo
Qm9vbCwgdXNlQXJyYXlHcm91cEJ5TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBn
cm91cEJ5KCkgYW5kIGdyb3VwQnlUb01hcCgpIG1ldGhvZHMgb24gQXJyYXkuIikgXAogICAgIHYo
Qm9vbCwgdXNlQXRNZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgYXQoKSBtZXRob2Qg
b24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBcCiAgICAgdihCb29sLCB1c2VI
YXNPd24sIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgT2JqZWN0Lmhhc093biBtZXRob2QiKSBc
CiAgICAgdihCb29sLCB1c2VJbnRsRW51bWVyYXRpb24sIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0
aGUgSW50bCBlbnVtZXJhdGlvbiBBUElzLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rp
b25QYXJhbWV0ZXJzLmpzCmluZGV4IGE3YjY1OTFjNjljZGJiMmMwYTdjZDEyYWQxZTAwMzNlNDYy
OTVhNjcuLmY4YTkxM2MwZjIwNzgwMzYyMGEyOTQ2ZjgzZWQxYWMyOTY2MWUyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5j
dGlvblBhcmFtZXRlcnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcwpAQCAtMjUyLDYgKzI1Miw4IEBA
IFdJLk5hdGl2ZVByb3RvdHlwZUZ1bmN0aW9uUGFyYW1ldGVycyA9IHsKICAgICAgICAgZmluZExh
c3Q6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAgICAgICAgZmluZExhc3RJbmRleDogImNhbGxi
YWNrLCBbdGhpc0FyZ10iLAogICAgICAgICBmb3JFYWNoOiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIs
CisgICAgICAgIGdyb3VwQnk6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKKyAgICAgICAgZ3JvdXBC
eVRvTWFwOiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGluY2x1ZGVzOiAic2VhcmNo
VmFsdWUsIFtzdGFydEluZGV4PTBdIiwKICAgICAgICAgaW5kZXhPZjogInNlYXJjaFZhbHVlLCBb
c3RhcnRJbmRleD0wXSIsCiAgICAgICAgIGpvaW46ICJbc2VwYXJhdG9yPVwiLFwiXSIsCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYwNTc5
MjI2NmQxZTY2MTg3OWY0NjcxMTYxYmRjYzdhNmUyNDNkMTIuLmU5MGRlZjM0Zjk2NzJlZGRiNDA1
MjFlOTVlNDY5ODQwODZhYjU1NDMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTItMTUgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBBcnJheS5wcm90
b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIHN0cmVzcy9hcnJheS1ncm91
cEJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlT2Jq
ZWN0KToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0LnJlcGxhY2VyKToKKyAgICAgICAgKG5vdFJl
YWNoZWQpOgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAocmV2ZXJzZUluc2VydGlvbk9y
ZGVyKToKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktZ3JvdXBCeVRvTWFwLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0KToKKyAgICAgICAgKHNo
b3VsZEJlT2JqZWN0LnJlcGxhY2VyKToKKyAgICAgICAgKHNob3VsZEJlTWFwKToKKyAgICAgICAg
KG5vdFJlYWNoZWQpOgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKToKKwogMjAyMS0xMi0xNSAgSm9zZXBoIEdyaWVnbyAgPGpncmllZ29AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbU2hhZG93IFJlYWxtc10gV3JhcHBlZCBmdW5jdGlvbnMgbXVzdCBv
bmx5IHRocm93IFR5cGVFcnJvciBmcm9tIGNhbGxpbmcgcmVhbG0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2FycmF5LWdyb3VwQnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEzZjcwOWQ3YmFiNDg5MWIyMTQ4OWIxNTc0NDlkYWM2YjFhMzlkZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5LmpzCkBAIC0w
LDAgKzEsMTU4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXJyYXlHcm91cEJ5TWV0aG9k
PTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRkFJTDogZXhwZWN0
ZWQgJyR7ZXhwZWN0ZWR9JyBhY3R1YWwgJyR7YWN0dWFsfSdgKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkQmVPYmplY3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtl
eSwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpCisgICAgICAgICAg
ICByZXR1cm4gIiV1bmRlZmluZWQlIjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKwor
ICAgIGxldCBhY3R1YWxKU09OID0gSlNPTi5zdHJpbmdpZnkoYWN0dWFsLCByZXBsYWNlcikucmVw
bGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworICAgIGxldCBleHBlY3Rl
ZEpTT04gPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwi
JXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZShhY3R1YWxKU09OLCBl
eHBlY3RlZEpTT04pOworfQorCitmdW5jdGlvbiBub3RSZWFjaGVkKCkgeworICAgIHRocm93IG5l
dyBFcnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJlIik7Cit9CisKKworLy8gSGVscGVyIHZhcmlh
YmxlcworCitBcnJheS5wcm90b3R5cGUuX190ZXN0ID0gNDI7CisKK2xldCBzcGFyc2VBcnJheUxl
bmd0aCA9IDY7CitsZXQgbWl4UGFydGlhbEFuZEZhc3QgPSBuZXcgQXJyYXkoc3BhcnNlQXJyYXlM
ZW5ndGgpOworbWl4UGFydGlhbEFuZEZhc3Rbc3BhcnNlQXJyYXlMZW5ndGggLSAxXSA9IHNwYXJz
ZUFycmF5TGVuZ3RoIC0gMTsKK2ZvcihsZXQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgbWl4UGFy
dGlhbEFuZEZhc3RbaV0gPSBpOworCitmdW5jdGlvbiB0b09iamVjdChhcnJheSkgeworICAgIGxl
dCByZXN1bHQgPSB7fTsKKyAgICByZXN1bHQubGVuZ3RoID0gYXJyYXkubGVuZ3RoOworICAgIGZv
ciAobGV0IGkgaW4gYXJyYXkpCisgICAgICAgIHJlc3VsdFtpXSA9IGFycmF5W2ldOworICAgIHJl
c3VsdC5ncm91cEJ5ID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2VydGlvbk9yZGVyKGFycmF5KSB7CisgICAgbGV0
IG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBmb3IgKGxl
dCBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVzaChpKTsKKyAgICBsZXQgcmVzdWx0ID0ge307
CisgICAgZm9yIChsZXQgaSA9IHByb3BzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKQorICAgICAg
ICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3BzW2ldXTsKKyAgICByZXN1bHQuZ3JvdXBCeSA9
IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2xldCBv
YmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzID0geworICAgIHRvU3RyaW5nOiBub3RSZWFjaGVk
LAorfTsKKworbGV0IG9iamVjdFdpdGhWYWx1ZU9mVGhhdFRocm93cyA9IHsKKyAgICB2YWx1ZU9m
OiBub3RSZWFjaGVkLAorfTsKKworCisvLyBCYXNpYworCitzaG91bGRCZShBcnJheS5wcm90b3R5
cGUuZ3JvdXBCeS5sZW5ndGgsIDEpOworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnku
bmFtZSwgImdyb3VwQnkiKTsKKworc2hvdWxkQmVPYmplY3QoW3VuZGVmaW5lZF0uZ3JvdXBCeSgo
eCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgeyJhIjogW3VuZGVmaW5lZF19KTsK
K3Nob3VsZEJlT2JqZWN0KFt1bmRlZmluZWRdLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5l
ZCksIHsidHJ1ZSI6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0KChuZXcgQXJyYXko
NCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsiYSI6IFt1
bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CitzaG91bGRCZU9i
amVjdCgobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRy
dWUiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworCitz
aG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkgPyAiYSIg
OiAiYiIpLCB7ImEiOiBbMCwgMl0sICJiIjogWzEsIDNdfSk7CitzaG91bGRCZU9iamVjdChbMCwg
MSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gISh4ICYgMSkpLCB7InRydWUiOiBbMCwgMl0sICJmYWxz
ZSI6IFsxLCAzXX0pOworCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCwg
aSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCAzXX0pOwor
c2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsi
ZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KG1peFBh
cnRpYWxBbmRGYXN0Lmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIHsiYiI6
IFswLCAxXSwgImEiOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3Ro
IC0gMV19KTsKK3Nob3VsZEJlT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0Lmdyb3VwQnkoKHgsIGkp
ID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVlIjogWzIsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisKKworLy8gR2VuZXJpYyBPYmplY3QK
Kworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHgg
PT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsiYSI6IFt1bmRlZmluZWRdfSk7CitzaG91bGRC
ZU9iamVjdCh0b09iamVjdChbdW5kZWZpbmVkXSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZp
bmVkKSwgeyJ0cnVlIjogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3Qo
bmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIp
LCB7ImEiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOwor
c2hvdWxkQmVPYmplY3QodG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4ID09
PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
dW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVjdCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdy
b3VwQnkoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIiKSwgeyJhIjogWzAsIDJdLCAiYiI6IFsx
LCAzXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4
KSA9PiAhKHggJiAxKSksIHsidHJ1ZSI6IFswLCAyXSwgImZhbHNlIjogWzEsIDNdfSk7CisKK3No
b3VsZEJlT2JqZWN0KHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+
PSAyID8gImEiIDogImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCAzXX0pOworc2hvdWxkQmVP
YmplY3QodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7
ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCAzXX0pOworCitzaG91bGRCZU9iamVjdCh0b09i
amVjdChtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDog
ImIiKSwgeyJiIjogWzAsIDFdLCAiYSI6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNl
QXJyYXlMZW5ndGggLSAxXX0pOworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobWl4UGFydGlhbEFu
ZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVl
IjogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7CisK
KworLy8gQXJyYXktbGlrZSBvYmplY3Qgd2l0aCBpbnZhbGlkIGxlbmd0aHMKKworc2hvdWxkQmVP
YmplY3QoQXJyYXkucHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6
IDMsIGxlbmd0aDogMCB9LCBub3RSZWFjaGVkKSwge30pOworc2hvdWxkQmVPYmplY3QoQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIsIDM6IDMsIGxlbmd0aDog
LTAgfSwgbm90UmVhY2hlZCksIHt9KTsKK3Nob3VsZEJlT2JqZWN0KEFycmF5LnByb3RvdHlwZS5n
cm91cEJ5LmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC00IH0sIG5vdFJl
YWNoZWQpLCB7fSk7CisKKworLy8gUmV2ZXJzZWQgZ2VuZXJpYyBPYmplY3QKKworc2hvdWxkQmVP
YmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4
ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7ImEiOiBbdW5kZWZpbmVkXX0pOworc2hvdWxk
QmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9
PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUiOiBbdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9i
amVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5KCh4KSA9PiB4
ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7ImEiOiBbdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlv
bk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgeyJ0
cnVlIjogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKwor
c2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBC
eSgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIpLCB7ImEiOiBbMCwgMl0sICJiIjogWzEsIDNd
fSk7CitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5n
cm91cEJ5KCh4KSA9PiAhKHggJiAxKSksIHsidHJ1ZSI6IFswLCAyXSwgImZhbHNlIjogWzEsIDNd
fSk7CisKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10p
Lmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIHsiYiI6IFswLCAxXSwgImEi
OiBbMiwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwg
MiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiksIHsiZmFsc2UiOiBbMCwgMV0sICJ0cnVl
IjogWzIsIDNdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQ
YXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgeyJi
IjogWzAsIDFdLCAiYSI6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5n
dGggLSAxXX0pOworc2hvdWxkQmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRp
YWxBbmRGYXN0KS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ImZhbHNlIjogWzAsIDFdLCAi
dHJ1ZSI6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0p
OworCisKKy8vIEV4dHJhIGNhbGxiYWNrIHBhcmFtZXRlcnMKKworc2hvdWxkQmVPYmplY3QoWzAs
IDEsIDIsIDNdLmdyb3VwQnkoKGksIGosIGssIGwsIG0pID0+IG0gPSAhbSksIHsidHJ1ZSI6IFsw
LCAxLCAyLCAzXX0pOworCisKKy8vIFNwZWNpYWwga2V5cworCitzaG91bGRCZU9iamVjdChbMCwg
MSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gImNvbnN0cnVjdG9yIikuY29uc3RydWN0b3IsIFswLCAx
LCAyLCAzXSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAi
cHJvdG90eXBlIikucHJvdG90eXBlLCBbMCwgMSwgMiwgM10pOworc2hvdWxkQmVPYmplY3QoWzAs
IDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+ICJfX3Byb3RvX18iKS5fX3Byb3RvX18sIFswLCAxLCAy
LCAzXSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiAtMClb
MF0sIFswLCAxLCAyLCAzXSk7CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgo
eCkgPT4gMClbMF0sIFswLCAxLCAyLCAzXSk7CisKK2xldCBvYmplY3RXaXRoVG9TdHJpbmdDb3Vu
dGVyID0geworICAgIGNvdW50ZXI6IDAsCisgICAgdG9TdHJpbmcoKSB7IHJldHVybiB0aGlzLmNv
dW50ZXIrKzsgfSwKK307CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkg
PT4gb2JqZWN0V2l0aFRvU3RyaW5nQ291bnRlciksIHsiMCI6IFswXSwgIjEiOiBbMV0sICIyIjog
WzJdLCAiMyI6IFszXX0pOworc2hvdWxkQmUob2JqZWN0V2l0aFRvU3RyaW5nQ291bnRlci5jb3Vu
dGVyLCA0KTsKKwordHJ5IHsKKyAgICBzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBC
eSgoeCkgPT4gb2JqZWN0V2l0aFRvU3RyaW5nVGhhdFRocm93cyksIHt9KTsKKyAgICBub3RSZWFj
aGVkKCk7Cit9IGNhdGNoIChlKSB7CisgICAgc2hvdWxkQmUoZS5tZXNzYWdlLCAic2hvdWxkIG5v
dCByZWFjaCBoZXJlIik7Cit9CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5
KCh4KSA9PiBvYmplY3RXaXRoVmFsdWVPZlRoYXRUaHJvd3MpWyJbb2JqZWN0IE9iamVjdF0iXSwg
WzAsIDEsIDIsIDNdKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnlU
b01hcC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnlUb01hcC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NWUyMGEyZGQ3MDg5MmNiZDM5ZmEyMWU1YzJjY2ZlYjhlZGU5M2NlCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXJyYXktZ3JvdXBCeVRvTWFwLmpzCkBAIC0wLDAgKzEsMTUw
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXJyYXlHcm91cEJ5TWV0aG9kPTEiKQorCitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRkFJTDogZXhwZWN0ZWQgJyR7ZXhw
ZWN0ZWR9JyBhY3R1YWwgJyR7YWN0dWFsfSdgKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVPYmpl
Y3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUp
IHsKKyAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4g
IiV1bmRlZmluZWQlIjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIGxldCBh
Y3R1YWxKU09OID0gSlNPTi5zdHJpbmdpZnkoYWN0dWFsLCByZXBsYWNlcikucmVwbGFjZUFsbCgi
XCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworICAgIGxldCBleHBlY3RlZEpTT04gPSBK
U09OLnN0cmluZ2lmeShleHBlY3RlZCwgcmVwbGFjZXIpLnJlcGxhY2VBbGwoIlwiJXVuZGVmaW5l
ZCVcIiIsICJ1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZShhY3R1YWxKU09OLCBleHBlY3RlZEpT
T04pOworfQorCitmdW5jdGlvbiBzaG91bGRCZU1hcChhLCBiKSB7CisgICAgc2hvdWxkQmVPYmpl
Y3QoQXJyYXkuZnJvbShhKSwgYik7Cit9CisKK2Z1bmN0aW9uIG5vdFJlYWNoZWQoKSB7CisgICAg
dGhyb3cgbmV3IEVycm9yKCJzaG91bGQgbm90IHJlYWNoIGhlcmUiKTsKK30KKworCisvLyBIZWxw
ZXIgdmFyaWFibGVzCisKK0FycmF5LnByb3RvdHlwZS5fX3Rlc3QgPSA0MjsKKworbGV0IHNwYXJz
ZUFycmF5TGVuZ3RoID0gNjsKK2xldCBtaXhQYXJ0aWFsQW5kRmFzdCA9IG5ldyBBcnJheShzcGFy
c2VBcnJheUxlbmd0aCk7CittaXhQYXJ0aWFsQW5kRmFzdFtzcGFyc2VBcnJheUxlbmd0aCAtIDFd
ID0gc3BhcnNlQXJyYXlMZW5ndGggLSAxOworZm9yKGxldCBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICBtaXhQYXJ0aWFsQW5kRmFzdFtpXSA9IGk7CisKK2Z1bmN0aW9uIHRvT2JqZWN0KGFycmF5KSB7
CisgICAgbGV0IHJlc3VsdCA9IHt9OworICAgIHJlc3VsdC5sZW5ndGggPSBhcnJheS5sZW5ndGg7
CisgICAgZm9yIChsZXQgaSBpbiBhcnJheSkKKyAgICAgICAgcmVzdWx0W2ldID0gYXJyYXlbaV07
CisgICAgcmVzdWx0Lmdyb3VwQnlUb01hcCA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXA7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gcmV2ZXJzZUluc2VydGlvbk9yZGVy
KGFycmF5KSB7CisgICAgbGV0IG9iaiA9IHRvT2JqZWN0KGFycmF5KTsKKyAgICBsZXQgcHJvcHMg
PSBbXTsKKyAgICBmb3IgKGxldCBpIGluIG9iaikKKyAgICAgICAgcHJvcHMucHVzaChpKTsKKyAg
ICBsZXQgcmVzdWx0ID0ge307CisgICAgZm9yIChsZXQgaSA9IHByb3BzLmxlbmd0aCAtIDE7IGkg
Pj0gMDsgaS0tKQorICAgICAgICByZXN1bHRbcHJvcHNbaV1dID0gb2JqW3Byb3BzW2ldXTsKKyAg
ICByZXN1bHQuZ3JvdXBCeVRvTWFwID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcDsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgb2JqZWN0V2l0aFRvU3RyaW5nVGhhdFRocm93cyA9
IHsKKyAgICB0b1N0cmluZzogbm90UmVhY2hlZCwKK307CisKK2xldCBvYmplY3RXaXRoVmFsdWVP
ZlRoYXRUaHJvd3MgPSB7CisgICAgdmFsdWVPZjogbm90UmVhY2hlZCwKK307CisKKworLy8gQmFz
aWMKKworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5sZW5ndGgsIDEpOwor
c2hvdWxkQmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcC5uYW1lLCAiZ3JvdXBCeVRvTWFw
Iik7CisKK3Nob3VsZEJlTWFwKFt1bmRlZmluZWRdLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0g
dW5kZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWRdXV0pOworc2hvdWxkQmVN
YXAoW3VuZGVmaW5lZF0uZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCBbW3Ry
dWUsIFt1bmRlZmluZWRdXV0pOworCitzaG91bGRCZU1hcCgobmV3IEFycmF5KDQpKS5ncm91cEJ5
VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKChu
ZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVl
LCBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKKworc2hv
dWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIg
OiAiYiIpLCBbWyJhIiwgWzAsIDJdXSwgWyJiIiwgWzEsIDNdXV0pOworc2hvdWxkQmVNYXAoWzAs
IDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkpLCBbW3RydWUsIFswLCAyXV0s
IFtmYWxzZSwgWzEsIDNdXV0pOworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRv
TWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCBbWyJiIiwgWzAsIDFdXSwgWyJhIiwg
WzIsIDNdXV0pOworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCwgaSkg
PT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCAzXV1dKTsKKworc2hvdWxk
QmVNYXAobWl4UGFydGlhbEFuZEZhc3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAi
YSIgOiAiYiIpLCBbWyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOworc2hvdWxkQmVNYXAobWl4UGFydGlhbEFuZEZh
c3QuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBbdHJ1
ZSwgWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOwor
CisKKy8vIEdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFt1bmRlZmluZWRd
KS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEi
LCBbdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91
cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZF1dXSk7
CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeVRvTWFwKCh4KSA9
PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZCwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChuZXcg
QXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBb
dW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKKworc2hvdWxk
QmVNYXAodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEp
ID8gImEiIDogImIiKSwgW1siYSIsIFswLCAyXV0sIFsiYiIsIFsxLCAzXV1dKTsKK3Nob3VsZEJl
TWFwKHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSks
IFtbdHJ1ZSwgWzAsIDJdXSwgW2ZhbHNlLCBbMSwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHRvT2Jq
ZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAi
YiIpLCBbWyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIDNdXV0pOworc2hvdWxkQmVNYXAodG9PYmpl
Y3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiksIFtbZmFsc2Us
IFswLCAxXV0sIFt0cnVlLCBbMiwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG1peFBh
cnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiks
IFtbImIiLCBbMCwgMV1dLCBbImEiLCBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFy
cmF5TGVuZ3RoIC0gMV1dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChtaXhQYXJ0aWFsQW5kRmFz
dCkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBbdHJ1
ZSwgWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOwor
CisKKy8vIEFycmF5LWxpa2Ugb2JqZWN0IHdpdGggaW52YWxpZCBsZW5ndGhzCisKK3Nob3VsZEJl
TWFwKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAuY2FsbCh7IDA6IDAsIDE6IDEsIDI6IDIs
IDM6IDMsIGxlbmd0aDogMCB9LCBub3RSZWFjaGVkKSwgW10pOworc2hvdWxkQmVNYXAoQXJyYXku
cHJvdG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVu
Z3RoOiAtMCB9LCBub3RSZWFjaGVkKSwgW10pOworc2hvdWxkQmVNYXAoQXJyYXkucHJvdG90eXBl
Lmdyb3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtNCB9
LCBub3RSZWFjaGVkKSwgW10pOworCisKKy8vIFJldmVyc2VkIGdlbmVyaWMgT2JqZWN0CisKK3No
b3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFw
KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZF1d
XSk7CitzaG91bGRCZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoW3VuZGVmaW5lZF0pLmdyb3Vw
QnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZpbmVkXV1dKTsK
Kworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBC
eVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVm
aW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcChy
ZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHgg
PT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZF1dXSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwg
MSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIpLCBbWyJh
IiwgWzAsIDJdXSwgWyJiIiwgWzEsIDNdXV0pOworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlv
bk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSksIFtbdHJ1
ZSwgWzAsIDJdXSwgW2ZhbHNlLCBbMSwgM11dXSk7CisKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNl
cnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8g
ImEiIDogImIiKSwgW1siYiIsIFswLCAxXV0sIFsiYSIsIFsyLCAzXV1dKTsKK3Nob3VsZEJlTWFw
KHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCwgaSkg
PT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCAzXV1dKTsKKworc2hvdWxk
QmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9N
YXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtbImIiLCBbMCwgMV1dLCBbImEiLCBb
MiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV1dXSk7CitzaG91
bGRCZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlU
b01hcCgoeCwgaSkgPT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3RydWUsIFsyLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXV1dKTsKKworCisvLyBFeHRy
YSBjYWxsYmFjayBwYXJhbWV0ZXJzCisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5
VG9NYXAoKGksIGosIGssIGwsIG0pID0+IG0gPSAhbSksIFtbdHJ1ZSwgWzAsIDEsIDIsIDNdXV0p
OworCisKKy8vIFNwZWNpYWwga2V5cworCitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBC
eVRvTWFwKCh4KSA9PiAiY29uc3RydWN0b3IiKS5nZXQoImNvbnN0cnVjdG9yIiksIFswLCAxLCAy
LCAzXSk7CisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+ICJw
cm90b3R5cGUiKS5nZXQoInByb3RvdHlwZSIpLCBbMCwgMSwgMiwgM10pOworc2hvdWxkQmVNYXAo
WzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gIl9fcHJvdG9fXyIpLmdldCgiX19wcm90
b19fIiksIFswLCAxLCAyLCAzXSk7CisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5
VG9NYXAoKHgpID0+IC0wKS5nZXQoMCksIFswLCAxLCAyLCAzXSk7CitzaG91bGRCZU1hcChbMCwg
MSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiAwKS5nZXQoMCksIFswLCAxLCAyLCAzXSk7CisK
K3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IG9iamVjdFdpdGhU
b1N0cmluZ1RoYXRUaHJvd3MpLmdldChvYmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzKSwgWzAs
IDEsIDIsIDNdKTsKKworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkg
PT4gb2JqZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dzKS5nZXQob2JqZWN0V2l0aFZhbHVlT2ZUaGF0
VGhyb3dzKSwgWzAsIDEsIDIsIDNdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447330</attachid>
            <date>2021-12-15 22:58:05 -0800</date>
            <delta_ts>2021-12-16 08:11:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234327-20211215235804.patch</filename>
            <type>text/plain</type>
            <size>29007</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk3YmQ4YTI4MjJjYzQxNWE5ZTQ1NDI4ZWY5ODQ2
YTE2ZGM0NWQ4YmQuLmEwYjg5MGZhZmM5ZDk4YjY3MzcyZTc2ZmIxMmRiYjA5ODNjOTk2NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTEyLTE1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQXJyYXku
cHJvdG90eXBlLmdyb3VwQnkgYW5kIEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDMyNworCisgICAg
ICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBB
cnJheSBHcm91cGluZyBwcm9wb3NhbCA8aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWFycmF5LWdy
b3VwaW5nLz4sIHdoaWNoIGp1c3QKKyAgICAgICAgcmVhY2hlZCBTdGFnZSAzLgorCisgICAgICAg
IGBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeWAvYEFycmF5LnByb3RvdHlwZS5ncm91cEJ5VG9NYXBg
IHdpbGwgcmV0dXJuIGEgYHt9YC9gTWFwYCB3aGVyZSBlYWNoCisgICAgICAgIHZhbHVlIGluIHRo
ZSBhcnJheSBpcyBwdXQgaW50byBhICJidWNrZXQiIGtleWVkIGJ5IHRoZSByZXR1cm4gdmFsdWUg
b2YgdGhlIHByb3ZvZGVkIGNhbGxiYWNrLgorCisgICAgICAgIGBgYGpzCisgICAgICAgIGNvbnN0
IGFycmF5ID0gWzEsIDIsIDMsIDRdOworCisgICAgICAgIGFycmF5Lmdyb3VwQnkobiA9PiBuICUg
MiA/ICJvZGQiIDogImV2ZW4iKSAvLyB7IG9kZDogWzEsIDNdLCBldmVuOiBbMiwgNF0gfQorICAg
ICAgICBhcnJheS5ncm91cEJ5VG9NYXAobiA9PiBuICUgMiA/ICJvZGQiIDogImV2ZW4iKSAvLyBu
ZXcgTWFwKFtbIm9kZCIsIFsxLCAzXV0sIFsiZXZlbiIsIFsyLCA0XV0pCisgICAgICAgIGBgYAor
CisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanM6CisgICAgICAgIChncm91cEJ5
KTogQWRkZWQuCisgICAgICAgIChncm91cEJ5VG9NYXApOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190b1Byb3BlcnR5
S2V5KTogQWRkZWQuCisgICAgICAgIEFsbG93IGBAdG9Qcm9wZXJ0eUtleWAgdG8gYmUgdXNlZCBp
biBidWlsdGlucyB0byBjb252ZXJ0IGEgdmFsdWUgdG8gYSBwcm9wZXJ0eSBrZXkuIFRoaXMgaXMK
KyAgICAgICAgdXNlZCB0byBhdm9pZCBjb252ZXJ0aW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhl
IGNhbGxiYWNrIGdpdmVuIHRvIGBncm91cEJ5YCBtb3JlIHRoYW4gb25jZS4KKworICAgICAgICAq
IGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICBBbGxvdyBgQE1hcGAgdG8gYmUg
dXNlZCBpbiBidWlsdGlucyB0byBjcmVhdGUgYSBwcmltb3JkaWFsIGBNYXBgIGluc3RhbmNlLiBU
aGlzIGlzIHVzZWQgdG8KKyAgICAgICAgYXZvaWQgc2lkZSBlZmZlY3RzIHdoZW4gY3JlYXRpbmcg
YW5kIHBvcHVsYXRpbmcgdGhlIGBNYXBgIHJldHVybmVkIGJ5IGBncm91cEJ5VG9NYXBgLgorCisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICBBZGQgYHVzZUFycmF5R3Jv
dXBCeU1ldGhvZGAgb3B0aW9uLgorCiAyMDIxLTEyLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdhc206OkNvZGVCbG9jayB0byBXYXNtOjpD
YWxsZWVHcm91cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggOGQ4ZDg4YTMxMjU2ZTBhMTA3
ZDQxMmM0YTAwZjM0MTdjZjJmZThiNS4uMzQ2YmUwNTlmNTNhNjliNTNjMmE5ZmQ4ZDQzYTkyZjg1
NDc1ZDJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEt
MTItMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlU
b01hcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoKKwogMjAyMS0x
Mi0xNCAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQ29tcHV0ZWQgUGFuZWw6IEFkanVzdCBjb2xvciBvZiBDU1MgVmFyaWFibGVz
IGdyb3VwaW5nIG1vZGUgY29udHJvbApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0FycmF5UHJvdG90eXBlLmpzCmluZGV4IGVhMjE5YTcwMjljZTA2OWRhYTcyNTNmMzJmODAz
MDBiY2Q0NTM1MmEuLjI3NjhkMTQwMTc4MGU0YjUzMzM2MzMzNGFjZmIxYTgyNjUzZTllMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMK
QEAgLTE1Niw2ICsxNTYsNTQgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJn
ICovKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Z1bmN0aW9uIGdyb3VwQnkoY2FsbGJhY2sg
LyosIHRoaXNBcmcgKi8pCit7CisgICAgdmFyIGFycmF5ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJh
eS5wcm90b3R5cGUuZ3JvdXBCeSByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiKTsKKyAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisK
KyAgICBpZiAoIUBpc0NhbGxhYmxlKGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsK
KworICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIGdyb3VwcyA9IEBP
YmplY3QuQGNyZWF0ZShudWxsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2ldOworICAgICAgICB2YXIga2V5ID0gQHRv
UHJvcGVydHlLZXkoY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGksIGFycmF5KSk7Cisg
ICAgICAgIHZhciBncm91cCA9IGdyb3Vwc1trZXldOworICAgICAgICBpZiAoIWdyb3VwKSB7Cisg
ICAgICAgICAgICBncm91cCA9IFtdOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGdyb3Vw
cywga2V5LCBncm91cCk7CisgICAgICAgIH0KKyAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGdyb3Vw
LCBncm91cC5sZW5ndGgsIHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGdyb3VwczsKK30KKwor
ZnVuY3Rpb24gZ3JvdXBCeVRvTWFwKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQoreworICAgIHZh
ciBhcnJheSA9IEB0b09iamVjdCh0aGlzLCAiQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcCBy
ZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiKTsKKyAgICB2YXIg
bGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0aCk7CisKKyAgICBpZiAoIUBpc0NhbGxhYmxl
KGNhbGxiYWNrKSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZ3Jv
dXBCeVRvTWFwIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOworCisgICAgdmFyIHRoaXNB
cmcgPSBAYXJndW1lbnQoMSk7CisKKyAgICB2YXIgZ3JvdXBzID0gbmV3IEBNYXA7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgdmFsdWUgPSBhcnJh
eVtpXTsKKyAgICAgICAgdmFyIGtleSA9IGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBp
LCBhcnJheSk7CisgICAgICAgIHZhciBncm91cCA9IGdyb3Vwcy5AZ2V0KGtleSk7CisgICAgICAg
IGlmICghZ3JvdXApIHsKKyAgICAgICAgICAgIGdyb3VwID0gW107CisgICAgICAgICAgICBncm91
cHMuQHNldChrZXksIGdyb3VwKTsKKyAgICAgICAgfQorICAgICAgICBAcHV0QnlWYWxEaXJlY3Qo
Z3JvdXAsIGdyb3VwLmxlbmd0aCwgdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gZ3JvdXBzOwor
fQorCiBmdW5jdGlvbiBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiB7CiAgICAgInVzZSBz
dHJpY3QiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CmluZGV4IDU2OGRhMTljODY1NzNiOGY3ZjMwZTg4ZDNkZjhlMDE2YjgxODkzMDUuLjgwYTg3ZWIw
MDdhOWQzOGM3MTU0Mjg5NjU4Zjg4MTM4NDZiYzg4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTcwLDYgKzcwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgbWFjcm8oZGVmaW5lUHJvcGVydHkpIFwKICAgICBtYWNybyhkZWZhdWx0UHJv
bWlzZVRoZW4pIFwKICAgICBtYWNybyhTZXQpIFwKKyAgICBtYWNybyhNYXApIFwKICAgICBtYWNy
byh0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKSBcCiAgICAgbWFjcm8odHlwZWRBcnJheUxlbmd0aCkg
XAogICAgIG1hY3JvKHR5cGVkQXJyYXlDb250ZW50VHlwZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgK
aW5kZXggYjMyY2NkYWY0M2E2NjJjODc3OTU1ODA3ZjZkNDFmMTI1OTE5NGY1Mi4uZTI2MTZhYTkx
NGViOWVjMGNkMTZiMDZiMjk3Y2E1MWNiZmU1ZDc4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBA
IC05MCw2ICs5MCw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAg
ICAgbWFjcm8ocHV0U2V0SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8odG9OdW1i
ZXIpIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHRvUHJvcGVydHlLZXkpIFwK
ICAgICBtYWNybyh0b09iamVjdCkgXAogICAgIG1hY3JvKG5ld0FycmF5V2l0aFNpemUpIFwKICAg
ICBtYWNybyhuZXdQcm9taXNlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCA1N2E5MGVjMGZhY2MxMmRkY2Q5YWJmNGFjMmYy
ZGNiYWIwZTBmYWQ3Li5lNjZlOGZkYjE2YWYwZjY4OWYwYWJlYTQ4MGFlY2I0NTJhYzhiOWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgKQEAgLTc3LDYgKzc3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihhcHBlbmRN
ZW1jcHksIG51bGxwdHIpIFwKICAgICB2KGhvc3RQcm9taXNlUmVqZWN0aW9uVHJhY2tlciwgbnVs
bHB0cikgXAogICAgIHYoU2V0LCBudWxscHRyKSBcCisgICAgdihNYXAsIG51bGxwdHIpIFwKICAg
ICB2KHRoaXNUaW1lVmFsdWUsIG51bGxwdHIpIFwKICAgICB2KGltcG9ydEluUmVhbG0sIG51bGxw
dHIpIFwKICAgICB2KGV2YWxJblJlYWxtLCBudWxscHRyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNWQ4NDU2NDVi
YTMzOTMyMzk4ZGEzMzM0OTIyNWRhMGZjNjhhZjNiNi4uN2IyNzdjNjlkNDUxZmQ3ZWEzNzVmMGQ0
ZGNjNDg4YWYzZWI3OTllNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTg0MSw2ICsxODQxLDE1IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdG9TdHJpbmcoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9y
LmVtaXRUb1N0cmluZyhnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSkp
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X3RvUHJvcGVydHlLZXkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsK
KyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUo
ZHN0LCBnZW5lcmF0b3IuZW1pdFRvUHJvcGVydHlLZXkoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBzcmMuZ2V0KCkpKTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNO
b2RlOjplbWl0X2ludHJpbnNpY190b09iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcAppbmRleCA2ZWE2YjY3YTA0ZjMzZDQxOTM2MjdhZGZhNzAwZDExN2ZmY2Ez
NmQyLi4zZmJlYTQ1NDQ0Njg5ZWI0MzM0NDc2M2YzYjhkMjNhMTkyYzIzNWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xMDAs
NiArMTAwLDEwIEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oImluZGV4T2YiLCBhcnJheVByb3RvRnVuY0luZGV4
T2YsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAx
LCBBcnJheUluZGV4T2ZJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJsYXN0SW5kZXhPZiIsIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAg
ICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZmlsdGVyUHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUZpbHRl
ckNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlQXJyYXlHcm91cEJ5TWV0aG9kKCkpIHsK
KyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlQdWJsaWNOYW1lKCksIGFycmF5UHJvdG90
eXBlR3JvdXBCeUNvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdyb3VwQnlUb01h
cFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b3R5cGVHcm91cEJ5VG9NYXBDb2RlR2VuZXJhdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
fQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5mbGF0UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZUZs
YXRDb2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9O
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmZsYXRNYXBQdWJsaWNOYW1lKCksIGFy
cmF5UHJvdG90eXBlRmxhdE1hcENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9X
SVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVkdWNl
UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVJlZHVjZUNvZGVHZW5lcmF0b3IsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTEzNyw2ICsx
NDEsOCBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIE9wdGlvbnM6OnVzZUFycmF5RmluZExh
c3RNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5maW5kTGFzdElu
ZGV4UHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmZsYXRQdWJsaWNOYW1lKCksCiAgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5mbGF0TWFwUHVibGljTmFtZSgpLAorICAgICAgICBPcHRpb25zOjp1
c2VBcnJheUdyb3VwQnlNZXRob2QoKSA/ICZ2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5ncm91cEJ5UHVibGljTmFtZSgpIDogbnVsbHB0ciwKKyAgICAgICAgT3B0aW9uczo6dXNlQXJy
YXlHcm91cEJ5TWV0aG9kKCkgPyAmdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ3Jv
dXBCeVRvTWFwUHVibGljTmFtZSgpIDogbnVsbHB0ciwKICAgICAgICAgJnZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmluY2x1ZGVzUHVibGljTmFtZSgpLAogICAgICAgICAmdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkua2V5c1B1YmxpY05hbWUoKSwKICAgICAgICAgJnZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBl
NDhlMzMwY2FmOWYxNWQyMGRlYWRmYmYyYTY4NjMxNTM1M2VhNmQuLjI4NjRhMTk1ZjU0MmUwOTQz
NmFmZjc4MzExYzQ5NmI1MzUwMjEzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNTAsNiArMTM1MCw5IEBAIGNhcGl0YWxO
YW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxh
ZyA/IGNhcGl0YWxOYW1lCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6U2V0KV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFs
aXplcjxKU0NlbGw+JiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldChqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKS0+c2V0Q29uc3RydWN0b3IoKSk7CiAgICAgICAgIH0pOwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6Ok1hcCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5p
dCkgeworICAgICAgICAgICAgaW5pdC5zZXQoanNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciktPm1hcENvbnN0cnVjdG9yKCkpOworICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29u
c3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjptYXBCdWNrZXRI
ZWFkKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBtYXBQcml2YXRlRnVuY01h
cEJ1Y2tldEhlYWQsIEpTTWFwQnVja2V0SGVhZEludHJpbnNpYykpOwogICAgICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGVhZjcyMzk2
NGI3N2JhZTEzYWZmZjc3NzExODFiMjQxOThiY2ZmZTcuLmJmOWQ4YTM4M2Y3Mzc5ZmIxYjk5Y2Ey
NDhhYTkyMGRjMTUxZjlhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaApAQCAtNTM4LDYgKzUzOCw3IEBAIGJvb2wgY2FuVXNlV2ViQXNzZW1ibHlGYXN0
TWVtb3J5KCk7CiAgICAgLyogRmVhdHVyZSBGbGFncyAqL1wKICAgICBcCiAgICAgdihCb29sLCB1
c2VBcnJheUZpbmRMYXN0TWV0aG9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGZpbmRMYXN0
KCkgYW5kIGZpbmRMYXN0SW5kZXgoKSBtZXRob2RzIG9uIEFycmF5IGFuZCAlVHlwZWRBcnJheSUu
IikgXAorICAgIHYoQm9vbCwgdXNlQXJyYXlHcm91cEJ5TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAi
RXhwb3NlIHRoZSBncm91cEJ5KCkgYW5kIGdyb3VwQnlUb01hcCgpIG1ldGhvZHMgb24gQXJyYXku
IikgXAogICAgIHYoQm9vbCwgdXNlQXRNZXRob2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUg
YXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBcCiAgICAg
dihCb29sLCB1c2VIYXNPd24sIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgT2JqZWN0Lmhhc093
biBtZXRob2QiKSBcCiAgICAgdihCb29sLCB1c2VJbnRsRW51bWVyYXRpb24sIHRydWUsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgSW50bCBlbnVtZXJhdGlvbiBBUElzLiIpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBh
cmFtZXRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
TmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCmluZGV4IGE3YjY1OTFjNjljZGJiMmMwYTdjZDEy
YWQxZTAwMzNlNDYyOTVhNjcuLmY4YTkxM2MwZjIwNzgwMzYyMGEyOTQ2ZjgzZWQxYWMyOTY2MWUy
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcwpAQCAtMjUy
LDYgKzI1Miw4IEBAIFdJLk5hdGl2ZVByb3RvdHlwZUZ1bmN0aW9uUGFyYW1ldGVycyA9IHsKICAg
ICAgICAgZmluZExhc3Q6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKICAgICAgICAgZmluZExhc3RJ
bmRleDogImNhbGxiYWNrLCBbdGhpc0FyZ10iLAogICAgICAgICBmb3JFYWNoOiAiY2FsbGJhY2ss
IFt0aGlzQXJnXSIsCisgICAgICAgIGdyb3VwQnk6ICJjYWxsYmFjaywgW3RoaXNBcmddIiwKKyAg
ICAgICAgZ3JvdXBCeVRvTWFwOiAiY2FsbGJhY2ssIFt0aGlzQXJnXSIsCiAgICAgICAgIGluY2x1
ZGVzOiAic2VhcmNoVmFsdWUsIFtzdGFydEluZGV4PTBdIiwKICAgICAgICAgaW5kZXhPZjogInNl
YXJjaFZhbHVlLCBbc3RhcnRJbmRleD0wXSIsCiAgICAgICAgIGpvaW46ICJbc2VwYXJhdG9yPVwi
LFwiXSIsCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDYwNTc5MjI2NmQxZTY2MTg3OWY0NjcxMTYxYmRjYzdhNmUyNDNkMTIuLmU5MGRlZjM0
Zjk2NzJlZGRiNDA1MjFlOTVlNDY5ODQwODZhYjU1NDMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTIt
MTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeSBhbmQgQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01h
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MzI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICAqIHN0cmVz
cy9hcnJheS1ncm91cEJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZEJlT2JqZWN0KToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0LnJlcGxhY2VyKToKKyAg
ICAgICAgKG5vdFJlYWNoZWQpOgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAocmV2ZXJz
ZUluc2VydGlvbk9yZGVyKToKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktZ3JvdXBCeVRvTWFwLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlT2JqZWN0KToK
KyAgICAgICAgKHNob3VsZEJlT2JqZWN0LnJlcGxhY2VyKToKKyAgICAgICAgKHNob3VsZEJlTWFw
KToKKyAgICAgICAgKG5vdFJlYWNoZWQpOgorICAgICAgICAodG9PYmplY3QpOgorICAgICAgICAo
cmV2ZXJzZUluc2VydGlvbk9yZGVyKToKKwogMjAyMS0xMi0xNSAgSm9zZXBoIEdyaWVnbyAgPGpn
cmllZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbU2hhZG93IFJlYWxtc10gV3JhcHBlZCBmdW5j
dGlvbnMgbXVzdCBvbmx5IHRocm93IFR5cGVFcnJvciBmcm9tIGNhbGxpbmcgcmVhbG0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnkuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
cnJheS1ncm91cEJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2N2RmZjM2OGEwNTU3YmU2YTM1ZThmZDNkZTE3
NDJmMmIxOTg4NWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91
cEJ5LmpzCkBAIC0wLDAgKzEsMTYyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQXJyYXlH
cm91cEJ5TWV0aG9kPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RkFJTDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWR9JyBhY3R1YWwgJyR7YWN0dWFsfSdgKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVPYmplY3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGZ1bmN0aW9u
IHJlcGxhY2VyKGtleSwgdmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQp
CisgICAgICAgICAgICByZXR1cm4gIiV1bmRlZmluZWQlIjsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKworICAgIGxldCBhY3R1YWxKU09OID0gSlNPTi5zdHJpbmdpZnkoYWN0dWFsLCBy
ZXBsYWNlcikucmVwbGFjZUFsbCgiXCIldW5kZWZpbmVkJVwiIiwgInVuZGVmaW5lZCIpOworICAg
IGxldCBleHBlY3RlZEpTT04gPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZCwgcmVwbGFjZXIpLnJl
cGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKyAgICBzaG91bGRCZShh
Y3R1YWxKU09OLCBleHBlY3RlZEpTT04pOworfQorCitmdW5jdGlvbiBub3RSZWFjaGVkKCkgewor
ICAgIHRocm93IG5ldyBFcnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJlIik7Cit9CisKKworLy8g
SGVscGVyIHZhcmlhYmxlcworCitBcnJheS5wcm90b3R5cGUuX190ZXN0ID0gNDI7CisKK2xldCBz
eW1ib2wgPSBTeW1ib2woInN5bWJvbCIpOworCitsZXQgc3BhcnNlQXJyYXlMZW5ndGggPSA2Owor
bGV0IG1peFBhcnRpYWxBbmRGYXN0ID0gbmV3IEFycmF5KHNwYXJzZUFycmF5TGVuZ3RoKTsKK21p
eFBhcnRpYWxBbmRGYXN0W3NwYXJzZUFycmF5TGVuZ3RoIC0gMV0gPSBzcGFyc2VBcnJheUxlbmd0
aCAtIDE7Citmb3IobGV0IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIG1peFBhcnRpYWxBbmRGYXN0
W2ldID0gaTsKKworZnVuY3Rpb24gdG9PYmplY3QoYXJyYXkpIHsKKyAgICBsZXQgcmVzdWx0ID0g
e307CisgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAgICBmb3IgKGxldCBpIGlu
IGFycmF5KQorICAgICAgICByZXN1bHRbaV0gPSBhcnJheVtpXTsKKyAgICByZXN1bHQuZ3JvdXBC
eSA9IEFycmF5LnByb3RvdHlwZS5ncm91cEJ5OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1
bmN0aW9uIHJldmVyc2VJbnNlcnRpb25PcmRlcihhcnJheSkgeworICAgIGxldCBvYmogPSB0b09i
amVjdChhcnJheSk7CisgICAgbGV0IHByb3BzID0gW107CisgICAgZm9yIChsZXQgaSBpbiBvYmop
CisgICAgICAgIHByb3BzLnB1c2goaSk7CisgICAgbGV0IHJlc3VsdCA9IHt9OworICAgIGZvciAo
bGV0IGkgPSBwcm9wcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkKKyAgICAgICAgcmVzdWx0W3By
b3BzW2ldXSA9IG9ialtwcm9wc1tpXV07CisgICAgcmVzdWx0Lmdyb3VwQnkgPSBBcnJheS5wcm90
b3R5cGUuZ3JvdXBCeTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitsZXQgb2JqZWN0V2l0aFRv
U3RyaW5nVGhhdFRocm93cyA9IHsKKyAgICB0b1N0cmluZzogbm90UmVhY2hlZCwKK307CisKK2xl
dCBvYmplY3RXaXRoVmFsdWVPZlRoYXRUaHJvd3MgPSB7CisgICAgdmFsdWVPZjogbm90UmVhY2hl
ZCwKK307CisKKworLy8gQmFzaWMKKworc2hvdWxkQmUoQXJyYXkucHJvdG90eXBlLmdyb3VwQnku
bGVuZ3RoLCAxKTsKK3Nob3VsZEJlKEFycmF5LnByb3RvdHlwZS5ncm91cEJ5Lm5hbWUsICJncm91
cEJ5Iik7CisKK3Nob3VsZEJlT2JqZWN0KFt1bmRlZmluZWRdLmdyb3VwQnkoKHgpID0+IHggPT09
IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIHsiYSI6IFt1bmRlZmluZWRdfSk7CitzaG91bGRCZU9i
amVjdChbdW5kZWZpbmVkXS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCB7InRydWUi
OiBbdW5kZWZpbmVkXX0pOworCitzaG91bGRCZU9iamVjdCgobmV3IEFycmF5KDQpKS5ncm91cEJ5
KCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAiYSIgOiAiYiIpLCB7ImEiOiBbdW5kZWZpbmVkLCB1
bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QoKG5ldyBB
cnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkKSwgeyJ0cnVlIjogW3VuZGVm
aW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmpl
Y3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+ICEoeCAmIDEpID8gImEiIDogImIiKSwgeyJh
IjogWzAsIDJdLCAiYiI6IFsxLCAzXX0pOworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdy
b3VwQnkoKHgpID0+ICEoeCAmIDEpKSwgeyJ0cnVlIjogWzAsIDJdLCAiZmFsc2UiOiBbMSwgM119
KTsKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0g
MiA/ICJhIiA6ICJiIiksIHsiYiI6IFswLCAxXSwgImEiOiBbMiwgM119KTsKK3Nob3VsZEJlT2Jq
ZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ImZhbHNlIjogWzAs
IDFdLCAidHJ1ZSI6IFsyLCAzXX0pOworCitzaG91bGRCZU9iamVjdChtaXhQYXJ0aWFsQW5kRmFz
dC5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIiOiBbMCwgMV0sICJh
IjogWzIsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdfSk7Citz
aG91bGRCZU9iamVjdChtaXhQYXJ0aWFsQW5kRmFzdC5ncm91cEJ5KCh4LCBpKSA9PiBpID49IDIp
LCB7ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3Bh
cnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKy8vIEdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJl
T2JqZWN0KHRvT2JqZWN0KFt1bmRlZmluZWRdKS5ncm91cEJ5KCh4KSA9PiB4ID09PSB1bmRlZmlu
ZWQgPyAiYSIgOiAiYiIpLCB7ImEiOiBbdW5kZWZpbmVkXX0pOworc2hvdWxkQmVPYmplY3QodG9P
YmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1
ZSI6IFt1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KG5ldyBBcnJheSg0
KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgeyJhIjogW3Vu
ZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2Jq
ZWN0KHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZpbmVk
KSwgeyJ0cnVlIjogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF19
KTsKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3QoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4KSA9
PiAhKHggJiAxKSA/ICJhIiA6ICJiIiksIHsiYSI6IFswLCAyXSwgImIiOiBbMSwgM119KTsKK3No
b3VsZEJlT2JqZWN0KHRvT2JqZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkgPT4gISh4ICYg
MSkpLCB7InRydWUiOiBbMCwgMl0sICJmYWxzZSI6IFsxLCAzXX0pOworCitzaG91bGRCZU9iamVj
dCh0b09iamVjdChbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6
ICJiIiksIHsiYiI6IFswLCAxXSwgImEiOiBbMiwgM119KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2Jq
ZWN0KFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwgeyJmYWxzZSI6IFsw
LCAxXSwgInRydWUiOiBbMiwgM119KTsKKworc2hvdWxkQmVPYmplY3QodG9PYmplY3QobWl4UGFy
dGlhbEFuZEZhc3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIHsiYiI6
IFswLCAxXSwgImEiOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3Ro
IC0gMV19KTsKK3Nob3VsZEJlT2JqZWN0KHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0KS5ncm91
cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXX0pOworCisKKy8vIEFycmF5
LWxpa2Ugb2JqZWN0IHdpdGggaW52YWxpZCBsZW5ndGhzCisKK3Nob3VsZEJlT2JqZWN0KEFycmF5
LnByb3RvdHlwZS5ncm91cEJ5LmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6
IDAgfSwgbm90UmVhY2hlZCksIHt9KTsKK3Nob3VsZEJlT2JqZWN0KEFycmF5LnByb3RvdHlwZS5n
cm91cEJ5LmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC0wIH0sIG5vdFJl
YWNoZWQpLCB7fSk7CitzaG91bGRCZU9iamVjdChBcnJheS5wcm90b3R5cGUuZ3JvdXBCeS5jYWxs
KHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3RoOiAtNCB9LCBub3RSZWFjaGVkKSwge30p
OworCisKKy8vIFJldmVyc2VkIGdlbmVyaWMgT2JqZWN0CisKK3Nob3VsZEJlT2JqZWN0KHJldmVy
c2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZp
bmVkID8gImEiIDogImIiKSwgeyJhIjogW3VuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KHJl
dmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5k
ZWZpbmVkKSwgeyJ0cnVlIjogW3VuZGVmaW5lZF19KTsKKworc2hvdWxkQmVPYmplY3QocmV2ZXJz
ZUluc2VydGlvbk9yZGVyKG5ldyBBcnJheSg0KSkuZ3JvdXBCeSgoeCkgPT4geCA9PT0gdW5kZWZp
bmVkID8gImEiIDogImIiKSwgeyJhIjogW3VuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHVuZGVmaW5lZF19KTsKK3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihuZXcg
QXJyYXkoNCkpLmdyb3VwQnkoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIHsidHJ1ZSI6IFt1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdfSk7CisKK3Nob3VsZEJlT2Jq
ZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihbMCwgMSwgMiwgM10pLmdyb3VwQnkoKHgpID0+ICEo
eCAmIDEpID8gImEiIDogImIiKSwgeyJhIjogWzAsIDJdLCAiYiI6IFsxLCAzXX0pOworc2hvdWxk
QmVPYmplY3QocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeSgoeCkg
PT4gISh4ICYgMSkpLCB7InRydWUiOiBbMCwgMl0sICJmYWxzZSI6IFsxLCAzXX0pOworCitzaG91
bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91cEJ5KCh4
LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCB7ImIiOiBbMCwgMV0sICJhIjogWzIsIDNdfSk7
CitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEsIDIsIDNdKS5ncm91
cEJ5KCh4LCBpKSA9PiBpID49IDIpLCB7ImZhbHNlIjogWzAsIDFdLCAidHJ1ZSI6IFsyLCAzXX0p
OworCitzaG91bGRCZU9iamVjdChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZh
c3QpLmdyb3VwQnkoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIHsiYiI6IFswLCAxXSwg
ImEiOiBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsK
K3Nob3VsZEJlT2JqZWN0KHJldmVyc2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFzdCku
Z3JvdXBCeSgoeCwgaSkgPT4gaSA+PSAyKSwgeyJmYWxzZSI6IFswLCAxXSwgInRydWUiOiBbMiwg
dW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV19KTsKKworCisvLyBF
eHRyYSBjYWxsYmFjayBwYXJhbWV0ZXJzCisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5n
cm91cEJ5KChpLCBqLCBrLCBsLCBtKSA9PiBtID0gIW0pLCB7InRydWUiOiBbMCwgMSwgMiwgM119
KTsKKworCisvLyBTcGVjaWFsIGtleXMKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdy
b3VwQnkoKHgpID0+ICJjb25zdHJ1Y3RvciIpLmNvbnN0cnVjdG9yLCBbMCwgMSwgMiwgM10pOwor
CitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gInByb3RvdHlwZSIp
LnByb3RvdHlwZSwgWzAsIDEsIDIsIDNdKTsKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5n
cm91cEJ5KCh4KSA9PiAiX19wcm90b19fIikuX19wcm90b19fLCBbMCwgMSwgMiwgM10pOworCitz
aG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gLTApWzBdLCBbMCwgMSwg
MiwgM10pOworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+IDApWzBd
LCBbMCwgMSwgMiwgM10pOworCitsZXQgb2JqZWN0V2l0aFRvU3RyaW5nQ291bnRlciA9IHsKKyAg
ICBjb3VudGVyOiAwLAorICAgIHRvU3RyaW5nKCkgeyByZXR1cm4gdGhpcy5jb3VudGVyKys7IH0s
Cit9Oworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+IG9iamVjdFdp
dGhUb1N0cmluZ0NvdW50ZXIpLCB7IjAiOiBbMF0sICIxIjogWzFdLCAiMiI6IFsyXSwgIjMiOiBb
M119KTsKK3Nob3VsZEJlKG9iamVjdFdpdGhUb1N0cmluZ0NvdW50ZXIuY291bnRlciwgNCk7CisK
K3RyeSB7CisgICAgc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnkoKHgpID0+IG9i
amVjdFdpdGhUb1N0cmluZ1RoYXRUaHJvd3MpLCB7fSk7CisgICAgbm90UmVhY2hlZCgpOworfSBj
YXRjaCAoZSkgeworICAgIHNob3VsZEJlKGUubWVzc2FnZSwgInNob3VsZCBub3QgcmVhY2ggaGVy
ZSIpOworfQorCitzaG91bGRCZU9iamVjdChbMCwgMSwgMiwgM10uZ3JvdXBCeSgoeCkgPT4gb2Jq
ZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dzKVsiW29iamVjdCBPYmplY3RdIl0sIFswLCAxLCAyLCAz
XSk7CisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5KCh4KSA9PiBzeW1ib2wp
W3N5bWJvbF0sIFswLCAxLCAyLCAzXSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcnJh
eS1ncm91cEJ5VG9NYXAuanMgYi9KU1Rlc3RzL3N0cmVzcy9hcnJheS1ncm91cEJ5VG9NYXAuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWE0ZWFlZTUwY2M2NjA5MmExYTZmMGE0MTczNGM1MTVhYjRjZDIxNgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FycmF5LWdyb3VwQnlUb01hcC5qcwpAQCAt
MCwwICsxLDE2MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUFycmF5R3JvdXBCeU1ldGhv
ZD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZBSUw6IGV4cGVj
dGVkICcke2V4cGVjdGVkfScgYWN0dWFsICcke2FjdHVhbH0nYCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZEJlT2JqZWN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBmdW5jdGlvbiByZXBsYWNlcihr
ZXksIHZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQorICAgICAgICAg
ICAgcmV0dXJuICIldW5kZWZpbmVkJSI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisK
KyAgICBsZXQgYWN0dWFsSlNPTiA9IEpTT04uc3RyaW5naWZ5KGFjdHVhbCwgcmVwbGFjZXIpLnJl
cGxhY2VBbGwoIlwiJXVuZGVmaW5lZCVcIiIsICJ1bmRlZmluZWQiKTsKKyAgICBsZXQgZXhwZWN0
ZWRKU09OID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWQsIHJlcGxhY2VyKS5yZXBsYWNlQWxsKCJc
IiV1bmRlZmluZWQlXCIiLCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmUoYWN0dWFsSlNPTiwg
ZXhwZWN0ZWRKU09OKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVNYXAoYSwgYikgeworICAgIHNo
b3VsZEJlT2JqZWN0KEFycmF5LmZyb20oYSksIGIpOworfQorCitmdW5jdGlvbiBub3RSZWFjaGVk
KCkgeworICAgIHRocm93IG5ldyBFcnJvcigic2hvdWxkIG5vdCByZWFjaCBoZXJlIik7Cit9CisK
KworLy8gSGVscGVyIHZhcmlhYmxlcworCitBcnJheS5wcm90b3R5cGUuX190ZXN0ID0gNDI7CisK
K2xldCBzeW1ib2wgPSBTeW1ib2woInN5bWJvbCIpOworCitsZXQgc3BhcnNlQXJyYXlMZW5ndGgg
PSA2OworbGV0IG1peFBhcnRpYWxBbmRGYXN0ID0gbmV3IEFycmF5KHNwYXJzZUFycmF5TGVuZ3Ro
KTsKK21peFBhcnRpYWxBbmRGYXN0W3NwYXJzZUFycmF5TGVuZ3RoIC0gMV0gPSBzcGFyc2VBcnJh
eUxlbmd0aCAtIDE7Citmb3IobGV0IGkgPSAwOyBpIDwgMzsgKytpKQorICAgIG1peFBhcnRpYWxB
bmRGYXN0W2ldID0gaTsKKworZnVuY3Rpb24gdG9PYmplY3QoYXJyYXkpIHsKKyAgICBsZXQgcmVz
dWx0ID0ge307CisgICAgcmVzdWx0Lmxlbmd0aCA9IGFycmF5Lmxlbmd0aDsKKyAgICBmb3IgKGxl
dCBpIGluIGFycmF5KQorICAgICAgICByZXN1bHRbaV0gPSBhcnJheVtpXTsKKyAgICByZXN1bHQu
Z3JvdXBCeVRvTWFwID0gQXJyYXkucHJvdG90eXBlLmdyb3VwQnlUb01hcDsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitmdW5jdGlvbiByZXZlcnNlSW5zZXJ0aW9uT3JkZXIoYXJyYXkpIHsKKyAg
ICBsZXQgb2JqID0gdG9PYmplY3QoYXJyYXkpOworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGZv
ciAobGV0IGkgaW4gb2JqKQorICAgICAgICBwcm9wcy5wdXNoKGkpOworICAgIGxldCByZXN1bHQg
PSB7fTsKKyAgICBmb3IgKGxldCBpID0gcHJvcHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pCisg
ICAgICAgIHJlc3VsdFtwcm9wc1tpXV0gPSBvYmpbcHJvcHNbaV1dOworICAgIHJlc3VsdC5ncm91
cEJ5VG9NYXAgPSBBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2xldCBvYmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzID0geworICAgIHRvU3Ry
aW5nOiBub3RSZWFjaGVkLAorfTsKKworbGV0IG9iamVjdFdpdGhWYWx1ZU9mVGhhdFRocm93cyA9
IHsKKyAgICB2YWx1ZU9mOiBub3RSZWFjaGVkLAorfTsKKworCisvLyBCYXNpYworCitzaG91bGRC
ZShBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLmxlbmd0aCwgMSk7CitzaG91bGRCZShBcnJh
eS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFwLm5hbWUsICJncm91cEJ5VG9NYXAiKTsKKworc2hvdWxk
QmVNYXAoW3VuZGVmaW5lZF0uZ3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQgPyAi
YSIgOiAiYiIpLCBbWyJhIiwgW3VuZGVmaW5lZF1dXSk7CitzaG91bGRCZU1hcChbdW5kZWZpbmVk
XS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVmaW5lZCksIFtbdHJ1ZSwgW3VuZGVmaW5l
ZF1dXSk7CisKK3Nob3VsZEJlTWFwKChuZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4g
eCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXV0pOworc2hvdWxkQmVNYXAoKG5ldyBBcnJheSg0KSku
Z3JvdXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCBbW3RydWUsIFt1bmRlZmluZWQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXV0pOworCitzaG91bGRCZU1hcChbMCwg
MSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSA/ICJhIiA6ICJiIiksIFtbImEi
LCBbMCwgMl1dLCBbImIiLCBbMSwgM11dXSk7CitzaG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3Jv
dXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSksIFtbdHJ1ZSwgWzAsIDJdXSwgW2ZhbHNlLCBbMSwg
M11dXSk7CisKK3Nob3VsZEJlTWFwKFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+
IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtbImIiLCBbMCwgMV1dLCBbImEiLCBbMiwgM11dXSk7Citz
aG91bGRCZU1hcChbMCwgMSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCBb
W2ZhbHNlLCBbMCwgMV1dLCBbdHJ1ZSwgWzIsIDNdXV0pOworCitzaG91bGRCZU1hcChtaXhQYXJ0
aWFsQW5kRmFzdC5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtb
ImIiLCBbMCwgMV1dLCBbImEiLCBbMiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5
TGVuZ3RoIC0gMV1dXSk7CitzaG91bGRCZU1hcChtaXhQYXJ0aWFsQW5kRmFzdC5ncm91cEJ5VG9N
YXAoKHgsIGkpID0+IGkgPj0gMiksIFtbZmFsc2UsIFswLCAxXV0sIFt0cnVlLCBbMiwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV1dXSk7CisKKworLy8gR2VuZXJp
YyBPYmplY3QKKworc2hvdWxkQmVNYXAodG9PYmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01h
cCgoeCkgPT4geCA9PT0gdW5kZWZpbmVkID8gImEiIDogImIiKSwgW1siYSIsIFt1bmRlZmluZWRd
XV0pOworc2hvdWxkQmVNYXAodG9PYmplY3QoW3VuZGVmaW5lZF0pLmdyb3VwQnlUb01hcCgoeCkg
PT4geCA9PT0gdW5kZWZpbmVkKSwgW1t0cnVlLCBbdW5kZWZpbmVkXV1dKTsKKworc2hvdWxkQmVN
YXAodG9PYmplY3QobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09IHVuZGVm
aW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG5ldyBBcnJheSg0KSkuZ3Jv
dXBCeVRvTWFwKCh4KSA9PiB4ID09PSB1bmRlZmluZWQpLCBbW3RydWUsIFt1bmRlZmluZWQsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdXV0pOworCitzaG91bGRCZU1hcCh0b09iamVj
dChbMCwgMSwgMiwgM10pLmdyb3VwQnlUb01hcCgoeCkgPT4gISh4ICYgMSkgPyAiYSIgOiAiYiIp
LCBbWyJhIiwgWzAsIDJdXSwgWyJiIiwgWzEsIDNdXV0pOworc2hvdWxkQmVNYXAodG9PYmplY3Qo
WzAsIDEsIDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpKSwgW1t0cnVlLCBbMCwg
Ml1dLCBbZmFsc2UsIFsxLCAzXV1dKTsKKworc2hvdWxkQmVNYXAodG9PYmplY3QoWzAsIDEsIDIs
IDNdKS5ncm91cEJ5VG9NYXAoKHgsIGkpID0+IGkgPj0gMiA/ICJhIiA6ICJiIiksIFtbImIiLCBb
MCwgMV1dLCBbImEiLCBbMiwgM11dXSk7CitzaG91bGRCZU1hcCh0b09iamVjdChbMCwgMSwgMiwg
M10pLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyKSwgW1tmYWxzZSwgWzAsIDFdXSwgW3Ry
dWUsIFsyLCAzXV1dKTsKKworc2hvdWxkQmVNYXAodG9PYmplY3QobWl4UGFydGlhbEFuZEZhc3Qp
Lmdyb3VwQnlUb01hcCgoeCwgaSkgPT4gaSA+PSAyID8gImEiIDogImIiKSwgW1siYiIsIFswLCAx
XV0sIFsiYSIsIFsyLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAx
XV1dKTsKK3Nob3VsZEJlTWFwKHRvT2JqZWN0KG1peFBhcnRpYWxBbmRGYXN0KS5ncm91cEJ5VG9N
YXAoKHgsIGkpID0+IGkgPj0gMiksIFtbZmFsc2UsIFswLCAxXV0sIFt0cnVlLCBbMiwgdW5kZWZp
bmVkLCB1bmRlZmluZWQsIHNwYXJzZUFycmF5TGVuZ3RoIC0gMV1dXSk7CisKKworLy8gQXJyYXkt
bGlrZSBvYmplY3Qgd2l0aCBpbnZhbGlkIGxlbmd0aHMKKworc2hvdWxkQmVNYXAoQXJyYXkucHJv
dG90eXBlLmdyb3VwQnlUb01hcC5jYWxsKHsgMDogMCwgMTogMSwgMjogMiwgMzogMywgbGVuZ3Ro
OiAwIH0sIG5vdFJlYWNoZWQpLCBbXSk7CitzaG91bGRCZU1hcChBcnJheS5wcm90b3R5cGUuZ3Jv
dXBCeVRvTWFwLmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC0wIH0sIG5v
dFJlYWNoZWQpLCBbXSk7CitzaG91bGRCZU1hcChBcnJheS5wcm90b3R5cGUuZ3JvdXBCeVRvTWFw
LmNhbGwoeyAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzLCBsZW5ndGg6IC00IH0sIG5vdFJlYWNoZWQp
LCBbXSk7CisKKworLy8gUmV2ZXJzZWQgZ2VuZXJpYyBPYmplY3QKKworc2hvdWxkQmVNYXAocmV2
ZXJzZUluc2VydGlvbk9yZGVyKFt1bmRlZmluZWRdKS5ncm91cEJ5VG9NYXAoKHgpID0+IHggPT09
IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJl
TWFwKHJldmVyc2VJbnNlcnRpb25PcmRlcihbdW5kZWZpbmVkXSkuZ3JvdXBCeVRvTWFwKCh4KSA9
PiB4ID09PSB1bmRlZmluZWQpLCBbW3RydWUsIFt1bmRlZmluZWRdXV0pOworCitzaG91bGRCZU1h
cChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIobmV3IEFycmF5KDQpKS5ncm91cEJ5VG9NYXAoKHgpID0+
IHggPT09IHVuZGVmaW5lZCA/ICJhIiA6ICJiIiksIFtbImEiLCBbdW5kZWZpbmVkLCB1bmRlZmlu
ZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1dKTsKK3Nob3VsZEJlTWFwKHJldmVyc2VJbnNlcnRp
b25PcmRlcihuZXcgQXJyYXkoNCkpLmdyb3VwQnlUb01hcCgoeCkgPT4geCA9PT0gdW5kZWZpbmVk
KSwgW1t0cnVlLCBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXV1d
KTsKKworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3Jv
dXBCeVRvTWFwKCh4KSA9PiAhKHggJiAxKSA/ICJhIiA6ICJiIiksIFtbImEiLCBbMCwgMl1dLCBb
ImIiLCBbMSwgM11dXSk7CitzaG91bGRCZU1hcChyZXZlcnNlSW5zZXJ0aW9uT3JkZXIoWzAsIDEs
IDIsIDNdKS5ncm91cEJ5VG9NYXAoKHgpID0+ICEoeCAmIDEpKSwgW1t0cnVlLCBbMCwgMl1dLCBb
ZmFsc2UsIFsxLCAzXV1dKTsKKworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2VydGlvbk9yZGVyKFsw
LCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIgPyAiYSIgOiAiYiIpLCBb
WyJiIiwgWzAsIDFdXSwgWyJhIiwgWzIsIDNdXV0pOworc2hvdWxkQmVNYXAocmV2ZXJzZUluc2Vy
dGlvbk9yZGVyKFswLCAxLCAyLCAzXSkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9PiBpID49IDIpLCBb
W2ZhbHNlLCBbMCwgMV1dLCBbdHJ1ZSwgWzIsIDNdXV0pOworCitzaG91bGRCZU1hcChyZXZlcnNl
SW5zZXJ0aW9uT3JkZXIobWl4UGFydGlhbEFuZEZhc3QpLmdyb3VwQnlUb01hcCgoeCwgaSkgPT4g
aSA+PSAyID8gImEiIDogImIiKSwgW1siYiIsIFswLCAxXV0sIFsiYSIsIFsyLCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgc3BhcnNlQXJyYXlMZW5ndGggLSAxXV1dKTsKK3Nob3VsZEJlTWFwKHJldmVy
c2VJbnNlcnRpb25PcmRlcihtaXhQYXJ0aWFsQW5kRmFzdCkuZ3JvdXBCeVRvTWFwKCh4LCBpKSA9
PiBpID49IDIpLCBbW2ZhbHNlLCBbMCwgMV1dLCBbdHJ1ZSwgWzIsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkLCBzcGFyc2VBcnJheUxlbmd0aCAtIDFdXV0pOworCisKKy8vIEV4dHJhIGNhbGxiYWNrIHBh
cmFtZXRlcnMKKworc2hvdWxkQmVNYXAoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoaSwgaiwg
aywgbCwgbSkgPT4gbSA9ICFtKSwgW1t0cnVlLCBbMCwgMSwgMiwgM11dXSk7CisKKworLy8gU3Bl
Y2lhbCBrZXlzCisKK3Nob3VsZEJlT2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgp
ID0+ICJjb25zdHJ1Y3RvciIpLmdldCgiY29uc3RydWN0b3IiKSwgWzAsIDEsIDIsIDNdKTsKKwor
c2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4gInByb3RvdHlw
ZSIpLmdldCgicHJvdG90eXBlIiksIFswLCAxLCAyLCAzXSk7CitzaG91bGRCZU9iamVjdChbMCwg
MSwgMiwgM10uZ3JvdXBCeVRvTWFwKCh4KSA9PiAiX19wcm90b19fIikuZ2V0KCJfX3Byb3RvX18i
KSwgWzAsIDEsIDIsIDNdKTsKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnlU
b01hcCgoeCkgPT4gLTApLmdldCgwKSwgWzAsIDEsIDIsIDNdKTsKK3Nob3VsZEJlT2JqZWN0KFsw
LCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IDApLmdldCgwKSwgWzAsIDEsIDIsIDNdKTsK
KworbGV0IG9iamVjdFdpdGhUb1N0cmluZ0NvdW50ZXIgPSB7CisgICAgY291bnRlcjogMCwKKyAg
ICB0b1N0cmluZygpIHsgcmV0dXJuIHRoaXMuY291bnRlcisrOyB9LAorfTsKK3Nob3VsZEJlT2Jq
ZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IG9iamVjdFdpdGhUb1N0cmluZ0Nv
dW50ZXIpLmdldChvYmplY3RXaXRoVG9TdHJpbmdDb3VudGVyKSwgWzAsIDEsIDIsIDNdKTsKK3No
b3VsZEJlKG9iamVjdFdpdGhUb1N0cmluZ0NvdW50ZXIuY291bnRlciwgMCk7CisKK3Nob3VsZEJl
T2JqZWN0KFswLCAxLCAyLCAzXS5ncm91cEJ5VG9NYXAoKHgpID0+IG9iamVjdFdpdGhUb1N0cmlu
Z1RoYXRUaHJvd3MpLmdldChvYmplY3RXaXRoVG9TdHJpbmdUaGF0VGhyb3dzKSwgWzAsIDEsIDIs
IDNdKTsKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3VwQnlUb01hcCgoeCkgPT4g
b2JqZWN0V2l0aFZhbHVlT2ZUaGF0VGhyb3dzKS5nZXQob2JqZWN0V2l0aFZhbHVlT2ZUaGF0VGhy
b3dzKSwgWzAsIDEsIDIsIDNdKTsKKworc2hvdWxkQmVPYmplY3QoWzAsIDEsIDIsIDNdLmdyb3Vw
QnlUb01hcCgoeCkgPT4gc3ltYm9sKS5nZXQoc3ltYm9sKSwgWzAsIDEsIDIsIDNdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>