<?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>149562</bug_id>
          
          <creation_ts>2015-09-25 13:39:54 -0700</creation_ts>
          <short_desc>Object.getOwnPropertyNames() does not return named properties</short_desc>
          <delta_ts>2015-09-28 10:44:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://heycam.github.io/webidl/#property-enumeration</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128755</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-25 13:39:54 -0700</bug_when>
    <thetext>Property enumeration does not enumerate named properties for interfaces with named property getters such as HTMLCollection.

This is documented by Web IDL at:
https://heycam.github.io/webidl/#property-enumeration

The exact order of the named properties for HTMLCollection is defined at https://dom.spec.whatwg.org/#interface-htmlcollection:
&quot;&quot;&quot;
The supported property names, all unenumerable, are the values from the list returned by these steps:

Let result be an empty list.
For each element represented by the collection, in tree order, run these substeps:
If element has an ID which is neither the empty string nor is in result, append element’s ID to result.
If element is in the HTML namespace and has a name attribute whose value is neither the empty string nor is in result, append element’s name attribute value to result.
Return result.
&quot;&quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128796</commentid>
    <comment_count>1</comment_count>
      <attachid>261947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-25 15:17:35 -0700</bug_when>
    <thetext>Created attachment 261947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128808</commentid>
    <comment_count>2</comment_count>
      <attachid>261947</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-25 15:54:58 -0700</bug_when>
    <thetext>Comment on attachment 261947
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        This is because these are always enumerable for existing DOM interfaces:

You mean &quot;never enumerable&quot; or &quot;always not enumerable&quot; or &quot;always DontEnum&quot;.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2781
&gt; +            push(@implContent, &quot;    for (unsigned i = 0, count = thisObject-&gt;impl().length(); i &lt; count; ++i)\n&quot;);
&gt; +            push(@implContent, &quot;        propertyNames.add(Identifier::from(state, i));\n&quot;);

Seems so inefficient to keep calling length over and over again, but I suppose that’s nothing compared to allocating all the identifiers!

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2787
&gt; +            push(@implContent, &quot;        for (auto&amp; propertyName : thisObject-&gt;impl().supportedPropertyNames()) {\n&quot;);
&gt; +            push(@implContent, &quot;            propertyNames.add(Identifier::fromString(state, propertyName));\n&quot;);

Is creating an Identifier from an AtomicString inexpensive?

&gt; Source/WebCore/html/HTMLCollection.h:143
&gt; +    return (m_idMap.size() + m_nameMap.size()) * sizeof(Element*) + m_propertyNames.size() * sizeof(AtomicString);

Seems really strange to consider only the cost of the pointer to the AtomicStringImpl as part of the memory cost. What about the cost of the block holding the characters of the string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129015</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-28 09:30:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/22879779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129019</commentid>
    <comment_count>4</comment_count>
      <attachid>261947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-28 09:52:56 -0700</bug_when>
    <thetext>Comment on attachment 261947
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        This is because these are always enumerable for existing DOM interfaces:
&gt; 
&gt; You mean &quot;never enumerable&quot; or &quot;always not enumerable&quot; or &quot;always DontEnum&quot;.

Ok, I meant unenumerable.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2781
&gt;&gt; +            push(@implContent, &quot;        propertyNames.add(Identifier::from(state, i));\n&quot;);
&gt; 
&gt; Seems so inefficient to keep calling length over and over again, but I suppose that’s nothing compared to allocating all the identifiers!

We don&apos;t, we initialize count from thisObject-&gt;impl().length() at the beginning of the loop.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2787
&gt;&gt; +            push(@implContent, &quot;            propertyNames.add(Identifier::fromString(state, propertyName));\n&quot;);
&gt; 
&gt; Is creating an Identifier from an AtomicString inexpensive?

Yes, fairly inexpensive. Identifier::fromString(ExecState*, const AtomicString&amp;) is inline and its implementation merely initializes the internal m_string member to atomicString.string(), which is cheap. Identifier does not seem to have any member besides String m_string.

&gt;&gt; Source/WebCore/html/HTMLCollection.h:143
&gt;&gt; +    return (m_idMap.size() + m_nameMap.size()) * sizeof(Element*) + m_propertyNames.size() * sizeof(AtomicString);
&gt; 
&gt; Seems really strange to consider only the cost of the pointer to the AtomicStringImpl as part of the memory cost. What about the cost of the block holding the characters of the string?

It is a very gross estimation, similarly to the pre-existing code which only considers sizeof(Element*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129020</commentid>
    <comment_count>5</comment_count>
      <attachid>262011</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-28 09:56:28 -0700</bug_when>
    <thetext>Created attachment 262011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129027</commentid>
    <comment_count>6</comment_count>
      <attachid>262011</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-28 10:44:13 -0700</bug_when>
    <thetext>Comment on attachment 262011
Patch

Clearing flags on attachment: 262011

Committed r190280: &lt;http://trac.webkit.org/changeset/190280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129028</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-28 10:44:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261947</attachid>
            <date>2015-09-25 15:17:35 -0700</date>
            <delta_ts>2015-09-28 09:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149562-20150925151715.patch</filename>
            <type>text/plain</type>
            <size>28283</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ODVlMzE1MjBkMmI0
MDU1YjRjMTY4ODk2OTM1MTA3MTYxMzYyMi4uZGJhZjU1YTlhNzlkNWMzZGQzZTM4ODMwMjk4ODU1
NTYxYTdhOWM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE1LTA5LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMoKSBkb2VzIG5vdCByZXR1cm4gbmFtZWQgcHJvcGVydGllcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoKSBkaWQgbm90IHJldHVybiBuYW1lZCBwcm9wZXJ0aWVzCisgICAg
ICAgIGZvciBpbnRlcmZhY2VzIHdpdGggbmFtZWQgcHJvcGVydHkgZ2V0dGVycy4gVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yCisgICAgICAgIHRoaXMgaW4gdGhlIEpTIGJpbmRpbmdzIGdlbmVy
YXRvciBhbmQgdXNlcyBpdCBmb3IgSFRNTENvbGxlY3Rpb24gb25seQorICAgICAgICBmb3Igbm93
LiBPdGhlciBpbnRlcmZhY2VzIHdpbGwgYmUgdGFrZW4gY2FyZSBvZiBpbmRlcGVuZGVudGx5Lgor
CisgICAgICAgIE5vdGUgdGhhdCBjdXJyZW50bHksIGV2ZW4gdGhvdWdoIHRoZSBuYW1lZCBwcm9w
ZXJ0aWVzIGFyZSByZXR1cm5lZCBieQorICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cygpLCB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBub3QgZW51bWVyYXRlZC4KKyAgICAgICAg
VGhpcyBpcyBiZWNhdXNlIHRoZXNlIGFyZSBhbHdheXMgZW51bWVyYWJsZSBmb3IgZXhpc3Rpbmcg
RE9NIGludGVyZmFjZXM6CisgICAgICAgIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNp
bnRlcmZhY2UtaHRtbGNvbGxlY3Rpb24KKyAgICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3
Zy5vcmcvI25hbWVkbm9kZW1hcAorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIHdlIG1heSBuZWVk
IHRvIGV4dGVuZCBzdXBwb3J0IGlmIHNvbWUgaW50ZXJmYWNlcyByZXF1aXJlCisgICAgICAgIHRo
b3NlIHRvIGJlIGVudW1lcmFibGUuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaHRtbGNvbGxl
Y3Rpb24tZ2V0b3ducHJvcGVydHluYW1lcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZTo6
UlRDU3RhdHNSZXNwb25zZTo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVl
dExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldExpc3Q6OnN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0TGlzdC5oOgorICAgICAgICAq
IGRvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU5h
bWVkRmxvd0NvbGxlY3Rpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIGRv
bS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmg6CisgICAgICAgICogZG9tL05hbWVkTm9kZU1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuaDoKKyAgICAgICAgKiBodG1sL0hUTUxD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpzdXBwb3J0
ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OnByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmRU
b0lkQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hl
OjphcHBlbmRUb05hbWVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xsZWN0aW9uTmFtZWRF
bGVtZW50Q2FjaGU6Om1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlvbk5h
bWVkRWxlbWVudENhY2hlOjphcHBlbmQpOgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGVB
cnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZUFycmF5OjpzdXBwb3J0ZWRQ
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaDoKKyAg
ICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVn
aW46OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHBsdWdpbnMvRE9NUGx1Z2lu
Lmg6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01QbHVnaW5BcnJheTo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcyk6CisgICAgICAgICog
cGx1Z2lucy9ET01QbHVnaW5BcnJheS5oOgorCiAyMDE1LTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgRml4IHRoZSBicm9rZW4gIUVO
QUJMRShTVFJFQU1fQVBJKSBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAKaW5kZXggYzM4NWJlZjI1NzY2Y2Yz
YTkwNzFlYjFjNjRlY2I4ODc1NDY2ZjlmNi4uYTI2ZDJiMGZmMGRkNzljYjk2ZDcwZjhjMzNkZWIx
NDgyNDExZTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENTdGF0c1Jlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuY3BwCkBAIC00Niw2ICs0NiwxMiBAQCBSZWZQdHI8UlRD
U3RhdHNSZXBvcnQ+IFJUQ1N0YXRzUmVzcG9uc2U6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZlY3RvcjxBdG9taWNTdHJpbmc+
IFdlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2U6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQorewor
ICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIFZlY3RvcjxB
dG9taWNTdHJpbmc+KCk7Cit9CisKIHNpemVfdCBSVENTdGF0c1Jlc3BvbnNlOjphZGRSZXBvcnQo
U3RyaW5nIGlkLCBTdHJpbmcgdHlwZSwgZG91YmxlIHRpbWVzdGFtcCkKIHsKICAgICBtX3Jlc3Vs
dC5hcHBlbmQoUlRDU3RhdHNSZXBvcnQ6OmNyZWF0ZShpZCwgdHlwZSwgdGltZXN0YW1wKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNw
b25zZS5oCmluZGV4IGQ3MDRhYzJjZTJmMmUwMDQzNmRmNjEyOWQ4MGU1NWNmZjIxMjA1OTIuLjEy
MzU3ODNhNTI5ZGE5ZDc4NTAwZmZlYWVlMmQwMjM5NDJlYmU3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5oCkBAIC00
Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVw
b3J0Pj4mIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OwogCiAgICAgUmVmUHRy
PFJUQ1N0YXRzUmVwb3J0PiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgVmVj
dG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOwogCiAgICAgdmlydHVh
bCBzaXplX3QgYWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5nIHR5cGUsIGRvdWJsZSB0aW1lc3Rh
bXApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9y
dCwgU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDliYzBlZTU0
NWQxNzA3N2U5MDFiNmUxYjBjNzUxOTI5MmY5MzhmNWMuLjgxM2UxMmZlZTg3ZjA4N2U2Y2QzMDRk
MmJmN2Q1NDBmZTY3ZDEyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICB9CiAKICAgICAjIEN1c3RvbSBnZXRPd25Qcm9wZXJ0eU5hbWVzIGZ1bmN0
aW9uCi0gICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVt
ZXJhdGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKKyAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUVudW1lcmF0ZVByb3BlcnR5In0g
fHwgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5
TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVB
cnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlNDOjpFbnVtZXJhdGlvbk1vZGUoKSk7XG4i
KTsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMifSA9IDE7ICAgICAgIAogICAgIH0KQEAgLTI3NzEsMTMgKzI3NzEsMjMgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkaW5kZXhlZEdl
dHRlckZ1bmN0aW9uICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
RW51bWVyYXRlUHJvcGVydHkifSkgeworICAgIGlmICgoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8
fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9i
amVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4ob2JqZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytp
KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpKSk7XG4iKTsKKyAgICAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgp
OyBpIDwgY291bnQ7ICsraSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTtcbiIp
OworICAgICAgICB9CisgICAgICAgIGlmICgkbmFtZWRHZXR0ZXJGdW5jdGlvbikgeworICAgICAg
ICAgICAgIyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gYWRkIGFuIElETCBleHRlbmRlZCBhdHRyaWJ1
dGUgYXQgc29tZSBwb2ludCBpZiBhbiBpbnRlcmZhY2UgbmVlZHMgZW51bWVyYWJsZSBuYW1lZCBw
cm9wZXJ0aWVzLgorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKG1vZGUu
aW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5TmFtZSA6IHRoaXNPYmplY3Qt
PmltcGwoKS5zdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkpIHtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHN0YXRlLCBwcm9wZXJ0eU5hbWUpKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CisgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBzdGF0ZSwgcHJvcGVy
dHlOYW1lcywgbW9kZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCmluZGV4IGM4MGNhMTIz
MzEyNGIxZjhkYjg3ZjM4OGI5YTQ2N2M2Y2E2ZjU1NzAuLjlmNzA2ZmNkNWEzZTY5ZjI1NjI2NjAy
M2RjNTk1OWZiOWFiOGNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcApA
QCAtODEsNCArODEsMTAgQEAgSFRNTFN0eWxlRWxlbWVudCogU3R5bGVTaGVldExpc3Q6OmdldE5h
bWVkSXRlbShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK1ZlY3RvcjxBdG9taWNTdHJpbmc+IFN0eWxlU2hlZXRMaXN0OjpzdXBwb3J0ZWRQcm9wZXJ0
eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGltcGxlbWVudGVkLgorICAgIHJl
dHVybiBWZWN0b3I8QXRvbWljU3RyaW5nPigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCmluZGV4IDEyYTdjNDU5ZGJhM2NjYTNmOTM4
YjkxZjY0Mzk4YTUzYmU1ZTdmMjUuLjRkMTA5ZDM3ZDBkMTVkMWYwODJmNjlkMzRiYmRjZWM4NGVk
Zjk3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5oCkBAIC00MSw2ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBTdHlsZVNoZWV0KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIEhU
TUxTdHlsZUVsZW1lbnQqIGdldE5hbWVkSXRlbShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBW
ZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKICAgICBEb2N1
bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCBkZGQzMmU2M2U3YjliMjVi
ZWRkMThjY2RjOTU2ZjA2MGQyMTBhYWRiLi5lMGI0MmNkZmM3MTdiNzkzYWY3NzE0NzU3NzFkY2E3
NzQ2MWNiMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCkBAIC02MSw2ICs2MSwxMiBAQCBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitWZWN0b3I8QXRvbWljU3RyaW5nPiBET01OYW1lZEZsb3dDb2xs
ZWN0aW9uOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxk
IGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3RyaW5nPigpOworfQor
CiAvLyBUaGUgSGFzaEZ1bmN0aW9ucyBvYmplY3QgdXNlZCBieSB0aGUgSGFzaFNldCB0byBjb21w
YXJlIGJldHdlZW4gUmVmUHRyPE5hbWVkRmxvd3M+LgogLy8gSXQgaXMgc2FmZSB0byBzZXQgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgYmVjYXVzZSB0aGUgSGFzaFNldCB3aWxsIG5ldmVy
IGNvbnRhaW4gbnVsbCBwb2ludGVycyBvciBkZWxldGVkIHZhbHVlcy4KIHN0cnVjdCBET01OYW1l
ZEZsb3dDb2xsZWN0aW9uOjpET01OYW1lZEZsb3dIYXNoRnVuY3Rpb25zIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCmluZGV4IDA5Zjk3ZDAwOWU3YTkxMDM1
NDM0MDI1ODVlZmU5MWNlYWJkOGQwZmUuLjM3OWVlYTM0NzU1YWEzNGFiN2FhOTYxMjJkODUwNGQy
OGRmYjQzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24u
aApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gaXRlbSh1bnNpZ25lZCBsb25n
IGluZGV4KSBjb25zdDsKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IERPTU5hbWVk
Rmxvd0hhc2hGdW5jdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRO
b2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCmluZGV4IGQ5
YWI2NjE3YmEyZTc5ZWMwMzc5NTE4MjE4YWY4YzY0ODhjZjJiZTQuLjJlMGFkZjBiZWNiYzQ2ZjAz
ZWViZDVhMTIyNDNhODQ5ODc4ZWNmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3Bw
CkBAIC02Myw2ICs2MywxMiBAQCBSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25DbwogICAgIHJldHVybiBt
X2VsZW1lbnQuZGV0YWNoQXR0cmlidXRlKGluZGV4KTsKIH0KIAorVmVjdG9yPEF0b21pY1N0cmlu
Zz4gTmFtZWROb2RlTWFwOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhN
RTogU2hvdWxkIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3RyaW5n
PigpOworfQorCiBSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW1OUyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2Nh
bE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9lbGVt
ZW50Lmhhc0F0dHJpYnV0ZXMoKSA/IG1fZWxlbWVudC5maW5kQXR0cmlidXRlSW5kZXhCeU5hbWUo
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKSA6IEVsZW1l
bnREYXRhOjphdHRyaWJ1dGVOb3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZE5vZGVNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaAppbmRl
eCBkMzI1NjM5YTU3YmVmNjU0ZWJmNmY5MzBmMTc4ZWU5NzA3ODMxYjAyLi40OWJkMjlmNDIxZjgw
YWI2ODcwOWQ4NWI1YWNmMGRlYjI5MTU0MjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTmFtZWROb2RlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5o
CkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxOb2RlPiBnZXROYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgUmVmUHRyPE5vZGU+IHJlbW92ZU5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBW
ZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKICAgICBSZWZQ
dHI8Tm9kZT4gZ2V0TmFtZWRJdGVtTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKICAgICBSZWZQdHI8Tm9kZT4g
cmVtb3ZlTmFtZWRJdGVtTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDYxMWQwNDM2YjkyZTg1NWZkNWM4MDVmOGViN2Vi
YmFkYzg3Yzc4YzIuLmU3ODAxYmY3MWMxMjgxOGFhZjE4YWQ2YWRjZTNhNTc2ZjdiOGFiZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0xNjYsNiArMTY2LDE1IEBA
IEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1TbG93KGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorLy8gRG9jdW1lbnRlZCBp
biBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1odG1sY29sbGVjdGlvbi4K
K2NvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+JiBIVE1MQ29sbGVjdGlvbjo6c3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpCit7CisgICAgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKTsKKyAgICBBU1NF
UlQobV9uYW1lZEVsZW1lbnRDYWNoZSk7CisKKyAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNo
ZS0+cHJvcGVydHlOYW1lcygpOworfQorCiB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1l
ZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKaW5kZXggM2I0YzE0YTg3YjdmNzJiMjNi
MTdmYzM1ZDRjN2VjZGY2ZjUxNWUwOS4uODExYTQxOGUxODMxY2I5ZGJmNzczNzA0ZmJjOTUxNDZj
OWU3NWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGUgewogcHVibGljOgogICAgIGNv
bnN0IFZlY3RvcjxFbGVtZW50Kj4qIGZpbmRFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBmaW5kRWxlbWVudHNX
aXRoTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgIGNvbnN0IFZlY3Rv
cjxBdG9taWNTdHJpbmc+JiBwcm9wZXJ0eU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eU5hbWVzOyB9CiAKICAgICB2b2lkIGFwcGVuZFRvSWRDYWNoZShjb25zdCBBdG9taWNTdHJpbmcm
IGlkLCBFbGVtZW50Jik7CiAgICAgdm9pZCBhcHBlbmRUb05hbWVDYWNoZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIEVsZW1lbnQmKTsKQEAgLTQ4LDEwICs0OSwxMSBAQCBwcml2YXRlOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgVmVjdG9yPEVsZW1lbnQqPj4gU3Ry
aW5nVG9FbGVtZW50c01hcDsKIAogICAgIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIGZpbmQoY29u
c3QgU3RyaW5nVG9FbGVtZW50c01hcCYsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5KSBjb25zdDsK
LSAgICBzdGF0aWMgdm9pZCBhcHBlbmQoU3RyaW5nVG9FbGVtZW50c01hcCYsIGNvbnN0IEF0b21p
Y1N0cmluZyYga2V5LCBFbGVtZW50Jik7CisgICAgdm9pZCBhcHBlbmQoU3RyaW5nVG9FbGVtZW50
c01hcCYsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50Jik7CiAKICAgICBTdHJpbmdU
b0VsZW1lbnRzTWFwIG1faWRNYXA7CiAgICAgU3RyaW5nVG9FbGVtZW50c01hcCBtX25hbWVNYXA7
CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV9wcm9wZXJ0eU5hbWVzOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgIGJvb2wgbV9kaWRQb3B1bGF0ZSB7IGZhbHNlIH07CkBAIC02Niw2ICs2
OCw3IEBAIHB1YmxpYzoKICAgICAvLyBET00gQVBJCiAgICAgdmlydHVhbCBFbGVtZW50KiBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZSA9IDA7IC8vIFRpZ2h0ZW4gcmV0dXJuIHR5
cGUgZnJvbSBOb2RlTGlzdDo6aXRlbSgpLgogICAgIHZpcnR1YWwgRWxlbWVudCogbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgPSAwOworICAgIGNvbnN0IFZlY3RvcjxB
dG9taWNTdHJpbmc+JiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAgICAgUmVmUHRyPE5vZGVM
aXN0PiB0YWdzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gTm9uLURPTSBBUEkKQEAgLTEyNywx
NyArMTMwLDE3IEBAIGlubGluZSBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBDb2xsZWN0aW9uTmFt
ZWRFbGVtZW50Q2FjaGU6OmZpbmRFbGVtZW50c1dpdGhOYW1lCiAKIGlubGluZSB2b2lkIENvbGxl
Y3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kVG9JZENhY2hlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWQsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFwcGVuZChtX2lkTWFwLCBp
ZCwgZWxlbWVudCk7CisgICAgYXBwZW5kKG1faWRNYXAsIGlkLCBlbGVtZW50KTsKIH0KIAogaW5s
aW5lIHZvaWQgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmRUb05hbWVDYWNoZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJu
IGFwcGVuZChtX25hbWVNYXAsIG5hbWUsIGVsZW1lbnQpOworICAgIGFwcGVuZChtX25hbWVNYXAs
IG5hbWUsIGVsZW1lbnQpOwogfQogCiBpbmxpbmUgc2l6ZV90IENvbGxlY3Rpb25OYW1lZEVsZW1l
bnRDYWNoZTo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2lkTWFwLnNpemUo
KSArIG1fbmFtZU1hcC5zaXplKCkpICogc2l6ZW9mKEVsZW1lbnQqKTsKKyAgICByZXR1cm4gKG1f
aWRNYXAuc2l6ZSgpICsgbV9uYW1lTWFwLnNpemUoKSkgKiBzaXplb2YoRWxlbWVudCopICsgbV9w
cm9wZXJ0eU5hbWVzLnNpemUoKSAqIHNpemVvZihBdG9taWNTdHJpbmcpOwogfQogCiBpbmxpbmUg
dm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmRpZFBvcHVsYXRlKCkKQEAgLTE1OCw2
ICsxNjEsOCBAQCBpbmxpbmUgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogQ29sbGVjdGlvbk5hbWVk
RWxlbWVudENhY2hlOjpmaW5kKGNvbnN0IFN0cmluZ1RvRQogCiBpbmxpbmUgdm9pZCBDb2xsZWN0
aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFwcGVuZChTdHJpbmdUb0VsZW1lbnRzTWFwJiBtYXAsIGNv
bnN0IEF0b21pY1N0cmluZyYga2V5LCBFbGVtZW50JiBlbGVtZW50KQogeworICAgIGlmICghbV9p
ZE1hcC5jb250YWlucyhrZXkuaW1wbCgpKSAmJiAhbV9uYW1lTWFwLmNvbnRhaW5zKGtleS5pbXBs
KCkpKQorICAgICAgICBtX3Byb3BlcnR5TmFtZXMuYXBwZW5kKGtleSk7CiAgICAgbWFwLmFkZChr
ZXkuaW1wbCgpLCBWZWN0b3I8RWxlbWVudCo+KCkpLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoJmVs
ZW1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVU
eXBlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNw
cAppbmRleCA4ZDhhY2U1MWFlMTMzYjg2ZGY2OWZhNjkxYTYyMDBlZTkzMzAxZjQyLi4xZTMxNmFm
Y2JiMWYwMDEyNDI1NzgzM2FmNzVmNjI3MWM3YjE2Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKQEAgLTg2LDYgKzg2LDEyIEBAIFJlZlB0cjxET01N
aW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYg
cHJvcGVydHlOYW1lCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZlY3RvcjxBdG9taWNTdHJp
bmc+IERPTU1pbWVUeXBlQXJyYXk6OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQoreworICAgIC8v
IEZJWE1FOiBTaG91bGQgYmUgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIFZlY3RvcjxBdG9taWNT
dHJpbmc+KCk7Cit9CisKIFBsdWdpbkRhdGEqIERPTU1pbWVUeXBlQXJyYXk6OmdldFBsdWdpbkRh
dGEoKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01NaW1lVHlwZUFycmF5LmgKaW5kZXggMGZjZDMxMmRlMWMxNjczODA3ZmFkMTQ0NmFkMTUzZWJj
YzdlZGIxZC4uYTI0ODVmYjk3OWRmNmVhZTZhZDkxYWY2YWFjZmVjZjdjNzliMjc5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmgKQEAgLTM5LDYgKzM5LDcgQEAg
cHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFJlZlB0cjxET01NaW1l
VHlwZT4gaXRlbSh1bnNpZ25lZCBpbmRleCk7CiAgICAgUmVmUHRyPERPTU1pbWVUeXBlPiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOworICAgIFZlY3RvcjxBdG9t
aWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBET01NaW1lVHlwZUFycmF5KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdp
bi5jcHAKaW5kZXggMjcyY2JmNWY5OWNkNDRhMDg5NmEyNWE5N2M4MTVhNWJhNDFlMDZhZi4uZGFh
MDBjYWJkZDNjZjBmYTMzN2FhMjk0ODYzZGQ4ZDU4NTM2NmRkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luLmNwcApAQCAtODUsNCArODUsMTAgQEAgUmVmUHRyPERPTU1pbWVUeXBlPiBE
T01QbHVnaW46Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAorVmVjdG9yPEF0b21pY1N0cmluZz4gRE9NUGx1Z2luOjpz
dXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGltcGxl
bWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3RyaW5nPigpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBs
dWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAppbmRleCBlNzBjOTk3
ZTQwYjQ0MzBlZTE4YzhiODQ2MDQ0NmI4ZjgzZjdhMGRhLi44NjNmYWQzZWZmOWVlMjA5MDhjMzk5
NGRlNDRjYWMyOTM5YmRhMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RP
TVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2ln
bmVkIGluZGV4KTsKICAgICBSZWZQdHI8RE9NTWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9y
dGVkUHJvcGVydHlOYW1lcygpOwogCiBwcml2YXRlOgogICAgIERPTVBsdWdpbihQbHVnaW5EYXRh
KiwgRnJhbWUqLCBQbHVnaW5JbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5B
cnJheS5jcHAKaW5kZXggNzE5MmFhY2RjZTc1M2M1YmI5ZDhkMTBkZDc4YzkzODM0MjdkODk0Mi4u
OGY0NGRkNTJjY2NjMmIwMzA3ZDlhNjkyYzM5MWViNGY1ZDM2OTE1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKQEAgLTc3LDYgKzc3LDEyIEBAIFJlZlB0cjxE
T01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1ZlY3RvcjxBdG9taWNTdHJp
bmc+IERPTVBsdWdpbkFycmF5OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBG
SVhNRTogU2hvdWxkIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3Ry
aW5nPigpOworfQorCiB2b2lkIERPTVBsdWdpbkFycmF5OjpyZWZyZXNoKGJvb2wgcmVsb2FkKQog
ewogICAgIFBhZ2U6OnJlZnJlc2hQbHVnaW5zKHJlbG9hZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmgKaW5kZXggYTkyMmQ0MzgwNWZlMjA4ZTRmMjAyNDViNjRkNTkwMjQy
ZDdiNTYwYi4uYzZmNzUyNDMyODYyOWQ0YmI5YjZlMGYyYzcwNjY5N2YyOGJiNzBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaApAQCAtMzksNiArMzksNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgUmVmUHRyPERPTVBsdWdpbj4g
aXRlbSh1bnNpZ25lZCBpbmRleCk7CiAgICAgUmVmUHRyPERPTVBsdWdpbj4gbmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5n
PiBzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKICAgICB2b2lkIHJlZnJlc2goYm9vbCByZWxv
YWQpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZDZlOGQzODM3ZDhiYzQwODQ4ZmI4NTQ0OGZhMTNkMzY0ZTFhNGU0YS4u
YzM4ODYzMWJiYmQ4MmFmYjVhOGRhNDQxZmYyZjNkYTA3ZmVmOWIxOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDE1LTA5LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoKSBkb2VzIG5vdCByZXR1cm4gbmFtZWQg
cHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ5NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGxheW91dCB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhhdCBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcygpIHJldHVybnMKKyAgICAgICAgYW4gSFRNTENvbGxlY3Rpb24ncyBuYW1lZCBwcm9w
ZXJ0aWVzLCBpbiBhZGRpdGlvbiB0byBpdHMgaW5kZXhlcy4gSXQKKyAgICAgICAgYWxzbyBjaGVj
a3MgdGhhdCB0aGV5IGFyZSBub3QgZW51bWVyYWJsZSwgYXMgcGVyIHRoZSBET00gc3BlY2lmaWNh
dGlvbi4KKworICAgICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5
bmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9odG1sY29sbGVj
dGlvbi1nZXRvd25wcm9wZXJ0eW5hbWVzLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA5LTI1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBtZWRpYS9tZWRpYS1j
b250cm9scy1wbGF5LWJ1dHRvbi11cGRhdGVzLmh0bWwgZmFpbGVkIGZvciBhbGwgTWFjIHBsYXRm
b3Jtcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDYxMDc2NjhlMjJmODA1MWRk
OWE0ZjRkMjA2NTk0ZjEwMGM0Y2U0NjMuLjRhZmYzY2NiMGUwMjEyOTBhYjk2N2QzYzMzOTY5NmM3
MGMzOGU2Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDE1LTA5LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoKSBkb2VzIG5vdCByZXR1cm4gbmFtZWQgcHJvcGVy
dGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVi
YXNlbGluZSBleGlzdGluZyBXM0MgdGVzdHMgbm93IHRoYXQgT2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXMoKQorICAgICAgICByZXR1cm5zIG5hbWVkIHByb3BlcnRpZXMgZm9yIEhUTUxDb2xsZWN0
aW9uLiBXZSB1bmZvcnR1bmF0ZWx5IHN0aWxsCisgICAgICAgIGRvbid0IHBhc3MgdGhvc2UgYmVj
YXVzZSAnbGVuZ3RoJyAvICdjb25zdHJ1Y3RvcicgcHJvcGVydGllcyBhcmUKKyAgICAgICAgY3Vy
cmVudGx5IG9uIHRoZSBpbnN0YW5jZSBhbmQgdGhleSBzaG91bGQgYmUgb24gdGhlIHByb3RvdHlw
ZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vY29sbGVjdGlvbnMvSFRNTENv
bGxlY3Rpb24tc3VwcG9ydGVkLXByb3BlcnR5LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0RvY3VtZW50LWdldEVsZW1lbnRzQnlUYWdO
YW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVz
L0VsZW1lbnQtZ2V0RWxlbWVudHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9kb2N1bWVudHMvZG9tLXRyZWUtYWNjZXNzb3JzL2Rv
Y3VtZW50LmZvcm1zLWV4cGVjdGVkLnR4dDoKKwogMjAxNS0wOS0yNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE5vZGUucmVwbGFjZUNoaWxkKCkgZG9lcyBub3Qg
YmVoYXZlIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHluYW1lcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0
eW5hbWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWUzZjI3YWQ4Y2FiMTkwZGFmZGRjMzQw
ZmVjMjEzOTM3NWNhMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
aHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHluYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNiBAQAorVGVzdHMgdGhhdCBIVE1MQ29sbGVjdGlvbidzIG5hbWVkIHByb3BlcnRpZXMgcmV0
dXJuZWQgYnkgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoKSBidXQgbm90IGVudW1lcmFibGUu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisqIE93biBwcm9wZXJ0aWVzCitBY3R1
YWw6ICAgWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnc29tZS1pZCcs
ICdzb21lLW5hbWUnLCAnYW5vdGhlci1pZCcsICdhbm90aGVyLW5hbWUnLCAnY29uc3RydWN0b3In
LCAnbGVuZ3RoJ10KK0V4cGVjdGVkOiBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYn
LCAnNycsICdzb21lLWlkJywgJ3NvbWUtbmFtZScsICdhbm90aGVyLWlkJywgJ2Fub3RoZXItbmFt
ZSddCisKKyogRW51bWVyYXRlZCBwcm9wZXJ0aWVzCitBY3R1YWw6ICAgWycwJywgJzEnLCAnMics
ICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnbGVuZ3RoJywgJ2l0ZW0nLCAnbmFtZWRJdGVtJ10K
K0V4cGVjdGVkOiBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICdsZW5n
dGgnLCAnaXRlbScsICduYW1lZEl0ZW0nXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0
bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5bmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5bmFtZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MDM3ZmNlZWI2ZDc1ZWM5YTgyYjE3ZmVlMzQ4OTIwMTljNzZhODUzCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHluYW1l
cy5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PGRpdiBpZD0icGxheWdyb3VuZCI+CisgICAgPCEtLSB3aXRoIG5vIGF0dHJpYnV0ZSAtLT4KKyAg
ICA8c3Bhbj48L3NwYW4+CisKKyAgICA8IS0tIHdpdGggYGlkYCBhdHRyaWJ1dGUgLS0+CisgICAg
PHNwYW4gaWQ9Jyc+PC9zcGFuPgorICAgIDxzcGFuIGlkPSdzb21lLWlkJz48L3NwYW4+CisgICAg
PHNwYW4gaWQ9J3NvbWUtaWQnPjwvc3Bhbj48IS0tIHRvIGVuc3VyZSBubyBkdXBsaWNhdGVzIC0t
PgorCisgICAgPCEtLSB3aXRoIGBuYW1lYCBhdHRyaWJ1dGUgLS0+CisgICAgPHNwYW4gbmFtZT0n
Jz48L3NwYW4+CisgICAgPHNwYW4gbmFtZT0nc29tZS1uYW1lJz48L3NwYW4+CisgICAgPHNwYW4g
bmFtZT0nc29tZS1uYW1lJz48L3NwYW4+PCEtLSB0byBlbnN1cmUgbm8gZHVwbGljYXRlcyAtLT4K
KworICAgIDwhLS0gd2l0aCBgbmFtZWAgYW5kIGBpZGAgYXR0cmlidXRlIC0tPgorICAgIDxzcGFu
IGlkPSdhbm90aGVyLWlkJyBuYW1lPSdhbm90aGVyLW5hbWUnPjwvc3Bhbj4KKzwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IEhUTUxDb2xsZWN0aW9uJ3MgbmFtZWQgcHJv
cGVydGllcyByZXR1cm5lZCBieSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIGJ1dCBub3Qg
ZW51bWVyYWJsZS4iKTsKKwordmFyIHBsYXlncm91bmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicGxheWdyb3VuZCIpOwordmFyIGVsZW1lbnRzID0gcGxheWdyb3VuZC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgic3BhbiIpOworCitkZWJ1ZygiKiBPd24gcHJvcGVydGllcyIpOwordmFyIG93blBy
b3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlbGVtZW50cyk7Cit2YXIgcmVz
dWx0ID0gIlsiOwordmFyIGlzRmlyc3QgPSB0cnVlOworZm9yICh2YXIgaSA9IDA7IGkgPCBvd25Q
cm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CisgICAgaWYgKGlzRmlyc3QpCisgICAgICAgIGlzRmly
c3QgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgcmVzdWx0ICs9ICIsICI7CisgICAgcmVzdWx0
ICs9ICInIiArIG93blByb3BlcnRpZXNbaV0gKyAiJyI7Cit9CityZXN1bHQgKz0gIl0iOworZGVi
dWcoIkFjdHVhbDogICAiICsgcmVzdWx0KTsKK2RlYnVnKCJFeHBlY3RlZDogWycwJywgJzEnLCAn
MicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnc29tZS1pZCcsICdzb21lLW5hbWUnLCAnYW5v
dGhlci1pZCcsICdhbm90aGVyLW5hbWUnXSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiKiBFbnVt
ZXJhdGVkIHByb3BlcnRpZXMiKTsKK3Jlc3VsdCA9ICJbIjsKK2lzRmlyc3QgPSB0cnVlOworZm9y
ICh2YXIgcHJvcGVydHkgaW4gZWxlbWVudHMpIHsKKyAgICBpZiAoaXNGaXJzdCkKKyAgICAgICAg
aXNGaXJzdCA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICByZXN1bHQgKz0gIiwgIjsKKyAgICBy
ZXN1bHQgKz0gIiciICsgcHJvcGVydHkgKyAiJyI7Cit9CityZXN1bHQgKz0gIl0iOworZGVidWco
IkFjdHVhbDogICAiICsgcmVzdWx0KTsKK2RlYnVnKCJFeHBlY3RlZDogWycwJywgJzEnLCAnMics
ICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnbGVuZ3RoJywgJ2l0ZW0nLCAnbmFtZWRJdGVtJ10i
KTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9jb2xsZWN0aW9ucy9IVE1MQ29s
bGVjdGlvbi1zdXBwb3J0ZWQtcHJvcGVydHktbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vY29sbGVjdGlvbnMvSFRNTENv
bGxlY3Rpb24tc3VwcG9ydGVkLXByb3BlcnR5LW5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCA2OGI0
NTFmNWJlMmFlYzI1MjI1NjdhYWJjMzdhYTFiNjEyNmQyYTNjLi4yY2JmODcxMzFmODNjN2U2YzQ0
ZDAxZTMzZjE4YjY5MTQ0YmRlYTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9jb2xsZWN0aW9ucy9IVE1MQ29sbGVjdGlvbi1zdXBw
b3J0ZWQtcHJvcGVydHktbmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2NvbGxlY3Rpb25zL0hUTUxDb2xsZWN0aW9u
LXN1cHBvcnRlZC1wcm9wZXJ0eS1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAK
LUZBSUwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgb24gSFRNTENvbGxlY3Rpb24gYXNzZXJ0
X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDEyIGdvdCAxMAorRkFJTCBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyBvbiBIVE1MQ29sbGVjdGlvbiBhc3NlcnRfYXJyYXlf
ZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMTIgZ290IDE0CiBGQUlMIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzIG9uIEhUTUxDb2xsZWN0aW9uIHdpdGggbm9uLUhUTUwgbmFtZXNw
YWNlIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAxIGdvdCAz
CiBGQUlMIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIG9uIEhUTUxDb2xsZWN0aW9uIHdpdGgg
ZXhwYW5kbyBvYmplY3QgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVj
dGVkIDIgZ290IDQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRG9jdW1lbnQtZ2V0RWxlbWVudHNCeVRhZ05hbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vbm9kZXMvRG9jdW1lbnQtZ2V0RWxlbWVudHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0CmluZGV4
IGRmY2Q4ZmYxZWViMTE3NmU0MDQ2NjFmMjAzNWI2YWQ5OTBiNjJhMTcuLjkwMmQ5MmQxZDFkNzQx
NWE5NjBiYzRkMTRmYTc2MzdmZGE1MzkwYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0RvY3VtZW50LWdldEVsZW1lbnRz
QnlUYWdOYW1lLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbS9ub2Rlcy9Eb2N1bWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1l
eHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIEZBSUwgU2hvdWxkbid0IGJlIGFibGUgdG8gc2V0
IHVuc2lnbmVkIHByb3BlcnRpZXMgb24gYSBIVE1MQ29sbGVjdGlvbiAoc3RyaWN0IG1vCiAgICAg
fSIgZGlkIG5vdCB0aHJvdwogUEFTUyBTaG91bGQgYmUgYWJsZSB0byBzZXQgZXhwYW5kbyBzaGFk
b3dpbmcgYSBwcm90byBwcm9wIChpdGVtKSAKIFBBU1MgU2hvdWxkIGJlIGFibGUgdG8gc2V0IGV4
cGFuZG8gc2hhZG93aW5nIGEgcHJvdG8gcHJvcCAobmFtZWRJdGVtKSAKLUZBSUwgaGFzT3duUHJv
cGVydHksIGdldE93blByb3BlcnR5RGVzY3JpcHRvciwgZ2V0T3duUHJvcGVydHlOYW1lcyBhc3Nl
cnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBnb3QgMworRkFJTCBo
YXNPd25Qcm9wZXJ0eSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBnZXRPd25Qcm9wZXJ0eU5h
bWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAyIGdvdCA0
CiBQQVNTIEhUTUwgZWxlbWVudCB3aXRoIHVwcGVyY2FzZSB0YWdOYW1lIG5ldmVyIG1hdGNoZXMg
aW4gSFRNTCBEb2N1bWVudHMgCiBQQVNTIEVsZW1lbnQgaW4gbm9uLUhUTUwgbmFtZXNwYWNlLCBu
byBwcmVmaXgsIGxvd2VyY2FzZSBuYW1lIAogUEFTUyBFbGVtZW50IGluIG5vbi1IVE1MIG5hbWVz
cGFjZSwgbm8gcHJlZml4LCB1cHBlcmNhc2UgbmFtZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtZ2V0RWxl
bWVudHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1l
eHBlY3RlZC50eHQKaW5kZXggYmVkZmM4NjdmNzc4MDlhYjY2MWYyMmVlODUxOGE3MmViYzZkZjUx
YS4uYmE1NjFhZDA5M2ZhM2ZjZWIzNDEzZmJjYmQyYWUzOTdhN2UyMWQzYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxl
bWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1nZXRFbGVt
ZW50c0J5VGFnTmFtZS1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIEZBSUwgU2hvdWxkbid0
IGJlIGFibGUgdG8gc2V0IHVuc2lnbmVkIHByb3BlcnRpZXMgb24gYSBIVE1MQ29sbGVjdGlvbiAo
c3RyaWN0IG1vCiAgICAgfSIgZGlkIG5vdCB0aHJvdwogUEFTUyBTaG91bGQgYmUgYWJsZSB0byBz
ZXQgZXhwYW5kbyBzaGFkb3dpbmcgYSBwcm90byBwcm9wIChpdGVtKSAKIFBBU1MgU2hvdWxkIGJl
IGFibGUgdG8gc2V0IGV4cGFuZG8gc2hhZG93aW5nIGEgcHJvdG8gcHJvcCAobmFtZWRJdGVtKSAK
LUZBSUwgaGFzT3duUHJvcGVydHksIGdldE93blByb3BlcnR5RGVzY3JpcHRvciwgZ2V0T3duUHJv
cGVydHlOYW1lcyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQg
MiBnb3QgMworRkFJTCBoYXNPd25Qcm9wZXJ0eSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBn
ZXRPd25Qcm9wZXJ0eU5hbWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBl
eHBlY3RlZCAyIGdvdCA0CiBQQVNTIEhUTUwgZWxlbWVudCB3aXRoIHVwcGVyY2FzZSB0YWdOYW1l
IG5ldmVyIG1hdGNoZXMgaW4gSFRNTCBEb2N1bWVudHMgCiBQQVNTIEVsZW1lbnQgaW4gbm9uLUhU
TUwgbmFtZXNwYWNlLCBubyBwcmVmaXgsIGxvd2VyY2FzZSBuYW1lIAogUEFTUyBFbGVtZW50IGlu
IG5vbi1IVE1MIG5hbWVzcGFjZSwgbm8gcHJlZml4LCB1cHBlcmNhc2UgbmFtZSAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20v
ZG9jdW1lbnRzL2RvbS10cmVlLWFjY2Vzc29ycy9kb2N1bWVudC5mb3Jtcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2Rv
Y3VtZW50cy9kb20tdHJlZS1hY2Nlc3NvcnMvZG9jdW1lbnQuZm9ybXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDgyYmY0NzIzY2IxZmNhMGY3Y2RkMjcwNWM2ZjEwNDhlODkzZWM4ZjYuLjBkYWMxMWE3NDM0
NjJlYzQyYmUwNGVjNzIwZGY2NTBmNDNhYzdlMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVl
LWFjY2Vzc29ycy9kb2N1bWVudC5mb3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9kb2N1bWVudHMvZG9tLXRy
ZWUtYWNjZXNzb3JzL2RvY3VtZW50LmZvcm1zLWV4cGVjdGVkLnR4dApAQCAtNSw1ICs1LDUgQEAg
UEFTUyBkb2N1bWVudC5mb3JtcwogUEFTUyBkb2N1bWVudC5mb3Jtcy5pdGVtIHdpdGggc3RyaW5n
IGFyZyAKIFBBU1MgZG9jdW1lbnQuZm9ybXMgd2l0aCBlbXB0eSBzdHJpbmcgCiBGQUlMIGRvY3Vt
ZW50LmZvcm1zIGl0ZXJhdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwcm9wZXJ0eSAzLCBleHBl
Y3RlZCAiaXRlbSIgYnV0IGdvdCAibGVuZ3RoIgotRkFJTCBkb2N1bWVudC5mb3JtcyBnZXRPd25Q
cm9wZXJ0eU5hbWVzIGFzc2VydF9hcnJheV9lcXVhbHM6IHByb3BlcnR5IDMsIGV4cGVjdGVkICJm
b3JtMSIgYnV0IGdvdCAiY29uc3RydWN0b3IiCitGQUlMIGRvY3VtZW50LmZvcm1zIGdldE93blBy
b3BlcnR5TmFtZXMgYXNzZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVk
IDUgZ290IDcKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262011</attachid>
            <date>2015-09-28 09:56:28 -0700</date>
            <delta_ts>2015-09-28 10:44:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149562-20150928095605.patch</filename>
            <type>text/plain</type>
            <size>32198</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM2OTBmZjRmYjhmYzlj
ZTFiMTc3OGE4MGM0ZmJjMTdhZmY3MWQ2NC4uMTY5OWE2MTYxZmI0ZTZjYzU2ZThjZGU3YjI4OGRj
OTQxODdhZmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTA5LTI1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXMoKSBkb2VzIG5vdCByZXR1cm4gbmFtZWQgcHJvcGVydGllcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTYyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMjg3OTc3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBQcmV2aW91c2x5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIGRpZCBu
b3QgcmV0dXJuIG5hbWVkIHByb3BlcnRpZXMKKyAgICAgICAgZm9yIGludGVyZmFjZXMgd2l0aCBu
YW1lZCBwcm9wZXJ0eSBnZXR0ZXJzLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IKKyAgICAg
ICAgdGhpcyBpbiB0aGUgSlMgYmluZGluZ3MgZ2VuZXJhdG9yIGFuZCB1c2VzIGl0IGZvciBIVE1M
Q29sbGVjdGlvbiBvbmx5CisgICAgICAgIGZvciBub3cuIE90aGVyIGludGVyZmFjZXMgd2lsbCBi
ZSB0YWtlbiBjYXJlIG9mIGluZGVwZW5kZW50bHkuCisKKyAgICAgICAgTm90ZSB0aGF0IGN1cnJl
bnRseSwgZXZlbiB0aG91Z2ggdGhlIG5hbWVkIHByb3BlcnRpZXMgYXJlIHJldHVybmVkIGJ5Cisg
ICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKCksIHRoZXNlIHByb3BlcnRpZXMgYXJl
IHN0aWxsIG5vdCBlbnVtZXJhdGVkLgorICAgICAgICBUaGlzIGlzIGJlY2F1c2UgdGhlc2UgYXJl
IGFsd2F5cyB1bmVudW1lcmFibGUgZm9yIGV4aXN0aW5nIERPTSBpbnRlcmZhY2VzOgorICAgICAg
ICAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLWh0bWxjb2xsZWN0aW9u
CisgICAgICAgIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNuYW1lZG5vZGVtYXAKKwor
ICAgICAgICBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgbmVlZCB0byBleHRlbmQgc3VwcG9ydCBpZiBz
b21lIGludGVyZmFjZXMgcmVxdWlyZQorICAgICAgICB0aG9zZSB0byBiZSBlbnVtZXJhYmxlLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93bnByb3BlcnR5bmFt
ZXMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmU6OlJUQ1N0YXRzUmVzcG9uc2U6OnN1cHBv
cnRlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXNwb25zZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU2hlZXRMaXN0OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KiBjc3MvU3R5bGVTaGVldExpc3QuaDoKKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlv
bi5oOgorICAgICAgICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmFtZWROb2RlTWFwOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBkb20vTmFt
ZWROb2RlTWFwLmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcyk6CisgICAg
ICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlOjpwcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kVG9JZENhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kVG9OYW1lQ2FjaGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjptZW1vcnlDb3N0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5k
KToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NTWltZVR5cGVBcnJheTo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcyk6CisgICAgICAg
ICogcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5Lmg6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVn
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpzdXBwb3J0ZWRQcm9wZXJ0eU5h
bWVzKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdpbi5oOgorICAgICAgICAqIHBsdWdpbnMv
RE9NUGx1Z2luQXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luQXJyYXk6OnN1
cHBvcnRlZFByb3BlcnR5TmFtZXMpOgorICAgICAgICAqIHBsdWdpbnMvRE9NUGx1Z2luQXJyYXku
aDoKKwogMjAxNS0wOS0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFuIFNWRyBpbmhlcml0cyB0aGUgY29udGFpbmVyIHNpemUgb2YgdGhl
IHByZXZpb3VzbHkgZHJhd24gSFRNTEltYWdlRWxlbWVudCB3aGVuIGRyYXdpbmcgaXQgb24gYSBj
YW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVzcG9uc2UuY3BwCmluZGV4IGMzODViZWYyNTc2NmNmM2E5MDcxZWIxYzY0ZWNiODg3
NTQ2NmY5ZjYuLmEyNmQyYjBmZjBkZDc5Y2I5NmQ3MGY4YzMzZGViMTQ4MjQxMWU1ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jl
c3BvbnNlLmNwcApAQCAtNDYsNiArNDYsMTIgQEAgUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBSVENT
dGF0c1Jlc3BvbnNlOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitWZWN0b3I8QXRvbWljU3RyaW5nPiBXZWJDb3JlOjpSVENTdGF0
c1Jlc3BvbnNlOjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogU2hv
dWxkIGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3RyaW5nPigpOwor
fQorCiBzaXplX3QgUlRDU3RhdHNSZXNwb25zZTo6YWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5n
IHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgbV9yZXN1bHQuYXBwZW5kKFJUQ1N0YXRz
UmVwb3J0OjpjcmVhdGUoaWQsIHR5cGUsIHRpbWVzdGFtcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAppbmRleCBkNzA0
YWMyY2UyZjJlMDA0MzZkZjYxMjlkODBlNTVjZmYyMTIwNTkyLi4xMjM1NzgzYTUyOWRhOWQ3ODUw
MGZmZWFlZTJkMDIzOTQyZWJlNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENTdGF0c1JlcG9ydD4+JiByZXN1bHQoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3VsdDsgfTsKIAogICAgIFJlZlB0cjxSVENTdGF0c1JlcG9ydD4g
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+
IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKIAogICAgIHZpcnR1YWwgc2l6ZV90IGFkZFJlcG9y
dChTdHJpbmcgaWQsIFN0cmluZyB0eXBlLCBkb3VibGUgdGltZXN0YW1wKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWRkU3RhdGlzdGljKHNpemVfdCByZXBvcnQsIFN0cmluZyBuYW1lLCBT
dHJpbmcgdmFsdWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA5YmMwZWU1NDVkMTcwNzdlOTAxYjZlMWIw
Yzc1MTkyOTJmOTM4ZjVjLi41OTgxNjU3MTRkMThiOTNmNWExNGNjY2ZiZDA5YjhiMDQ4YzRiMzQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQog
CiAgICAgIyBDdXN0b20gZ2V0T3duUHJvcGVydHlOYW1lcyBmdW5jdGlvbgotICAgIGlmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRW51bWVyYXRlUHJvcGVydHkifSB8
fCAkaW5kZXhlZEdldHRlckZ1bmN0aW9uKSB7CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9IHx8ICRpbmRleGVkR2V0dGVy
RnVuY3Rpb24gfHwgJG5hbWVkR2V0dGVyRnVuY3Rpb24pIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lQXJyYXkmLCBKU0M6OkVudW1l
cmF0aW9uTW9kZSA9IEpTQzo6RW51bWVyYXRpb25Nb2RlKCkpO1xuIik7CiAgICAgICAgICRzdHJ1
Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAK
ICAgICB9CkBAIC0yNzcxLDEzICsyNzcxLDIyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiAmJiAh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUVudW1lcmF0ZVByb3BlcnR5
In0pIHsKKyAgICBpZiAoKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24gfHwgJG5hbWVkR2V0dGVyRnVu
Y3Rpb24pICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tRW51bWVy
YXRlUHJvcGVydHkifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
c3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUg
bW9kZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NO
YW1lfSo+KG9iamVjdCk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGNvdW50ID0gdGhp
c09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291bnQ7ICsraSlcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6
ZnJvbShzdGF0ZSwgaSkpO1xuIik7CisgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9u
KSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kp
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpKSk7XG4iKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoJG5hbWVkR2V0dGVyRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICMgRklYTUU6IFdl
IG1heSBuZWVkIHRvIGFkZCBhbiBJREwgZXh0ZW5kZWQgYXR0cmlidXRlIGF0IHNvbWUgcG9pbnQg
aWYgYW4gaW50ZXJmYWNlIG5lZWRzIGVudW1lcmFibGUgbmFtZWQgcHJvcGVydGllcy4KKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChtb2RlLmluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMoKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgZm9yIChhdXRvJiBwcm9wZXJ0eU5hbWUgOiB0aGlzT2JqZWN0LT5pbXBsKCkuc3VwcG9ydGVk
UHJvcGVydHlOYW1lcygpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUs
IHByb3BlcnR5TmFtZSkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB9XG4iKTsKKyAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggODRjNTE1MWJkNjZiZjdmMTI5MDE0MWY1NDE1
YTkwYzAyMTQ2Y2E1ZS4uMmMzNTlkMmQ1NWM3MTJkMjE4ZTQ4ZjE4ODY1NTQ2MGE2MDU3OGZkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMzMsNiArMjMzLDEwIEBAIHZvaWQgSlNU
ZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBzdGF0ZSwKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3Qs
IGluZm8oKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSB0aGlzT2JqZWN0LT5p
bXBsKCkubGVuZ3RoKCk7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChJZGVudGlmaWVyOjpmcm9tKHN0YXRlLCBpKSk7CisgICAgaWYgKG1vZGUuaW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhp
c09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkKKyAgICAgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5TmFt
ZSkpOworICAgIH0KICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIHN0
YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCmluZGV4IGIyZTQzMTdlYTQ1YjdlOGFjYzFiY2I2ZmM2NzAzMTRhMTcxYTkyY2Mu
LjI3NDhlNjI4Y2E2MmMzZmRhMGYxMjMyM2MzNjhjNjA3YzgwMWVkZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKQEAgLTIwMSw2ICsyMDEsMTcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
T2JqZWN0KiwgRW4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CiAKK3ZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKKyAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgaWYgKG1v
ZGUuaW5jbHVkZURvbnRFbnVtUHJvcGVydGllcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJv
cGVydHlOYW1lIDogdGhpc09iamVjdC0+aW1wbCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSkK
KyAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsIHByb3BlcnR5TmFtZSkpOworICAgIH0KKyAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKwogSlNWYWx1ZSBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKaW5kZXgg
YmJhMzc1MzgxZmQyM2UzNWJjMjRiMzNjZTc3ZjY5MThkMmMxOWNhNy4uMGM5YTdmMTRmYTcwZWU1
MjkzNGQxZDZmZTBhMThiZjM1ZGE0NDYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAorICAgIHN0
YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlID0gSlND
OjpFbnVtZXJhdGlvbk1vZGUoKSk7CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIFRlc3RPdmVycmlkZUJ1
aWx0aW5zJiBpbXBsKCkgY29uc3QgeyByZXR1cm4gKm1faW1wbDsgfQogICAgIHZvaWQgcmVsZWFz
ZUltcGwoKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVyZWYoKTsgfQpAQCAt
NTksNyArNjAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFRlc3RPdmVycmlkZUJ1aWx0aW5z
KiBtX2ltcGw7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSlNDOjpIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFzSW1wdXJlR2V0T3du
UHJvcGVydHlTbG90IHwgSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IHByb3RlY3RlZDoKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmNwcAppbmRleCBjODBjYTEyMzMxMjRiMWY4ZGI4N2Yz
ODhiOWE0NjdjNmNhNmY1NTcwLi45ZjcwNmZjZDVhM2U2OWYyNTYyNjYwMjNkYzU5NTlmYjlhYjhj
ZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKQEAgLTgxLDQgKzgxLDEw
IEBAIEhUTUxTdHlsZUVsZW1lbnQqIFN0eWxlU2hlZXRMaXN0OjpnZXROYW1lZEl0ZW0oY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitWZWN0b3I8QXRv
bWljU3RyaW5nPiBTdHlsZVNoZWV0TGlzdDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCit7Cisg
ICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gVmVjdG9yPEF0
b21pY1N0cmluZz4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldExpc3QuaAppbmRleCAxMmE3YzQ1OWRiYTNjY2EzZjkzOGI5MWY2NDM5OGE1M2Jl
NWU3ZjI1Li40ZDEwOWQzN2QwZDE1ZDFmMDgyZjY5ZDM0YmJkY2VjODRlZGY5NzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldExpc3QuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAg
U3R5bGVTaGVldCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CiAKICAgICBIVE1MU3R5bGVFbGVtZW50
KiBnZXROYW1lZEl0ZW0oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAKaW5kZXggZGRkMzJlNjNlN2I5YjI1YmVkZDE4Y2NkYzk1NmYw
NjBkMjEwYWFkYi4uZTBiNDJjZGZjNzE3Yjc5M2FmNzcxNDc1NzcxZGNhNzc0NjFjYjI0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNjEs
NiArNjEsMTIgQEAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gRE9NTmFtZWRGbG93Q29sbGVjdGlv
bjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmEKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAorVmVjdG9yPEF0b21pY1N0cmluZz4gRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6c3VwcG9y
dGVkUHJvcGVydHlOYW1lcygpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbXBsZW1lbnRl
ZC4KKyAgICByZXR1cm4gVmVjdG9yPEF0b21pY1N0cmluZz4oKTsKK30KKwogLy8gVGhlIEhhc2hG
dW5jdGlvbnMgb2JqZWN0IHVzZWQgYnkgdGhlIEhhc2hTZXQgdG8gY29tcGFyZSBiZXR3ZWVuIFJl
ZlB0cjxOYW1lZEZsb3dzPi4KIC8vIEl0IGlzIHNhZmUgdG8gc2V0IHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkIGJlY2F1c2UgdGhlIEhhc2hTZXQgd2lsbCBuZXZlciBjb250YWluIG51bGwg
cG9pbnRlcnMgb3IgZGVsZXRlZCB2YWx1ZXMuCiBzdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlv
bjo6RE9NTmFtZWRGbG93SGFzaEZ1bmN0aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb24uaAppbmRleCAwOWY5N2QwMDllN2E5MTAzNTQzNDAyNTg1ZWZlOTFj
ZWFiZDhkMGZlLi4zNzllZWEzNDc1NWFhMzRhYjdhYTk2MTIyZDg1MDRkMjhkZmI0M2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmgKQEAgLTUwLDYgKzUw
LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkgY29uc3Q7
CiAgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3Q7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBET01OYW1lZEZsb3dIYXNoRnVuY3Rp
b25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcAppbmRleCBkOWFiNjYxN2JhMmU3OWVj
MDM3OTUxODIxOGFmOGM2NDg4Y2YyYmU0Li4yZTBhZGYwYmVjYmM0NmYwM2VlYmQ1YTEyMjQzYTg0
OTg3OGVjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcApAQCAtNjMsNiArNjMs
MTIgQEAgUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ28KICAgICByZXR1cm4gbV9lbGVtZW50LmRldGFj
aEF0dHJpYnV0ZShpbmRleCk7CiB9CiAKK1ZlY3RvcjxBdG9taWNTdHJpbmc+IE5hbWVkTm9kZU1h
cDo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBp
bXBsZW1lbnRlZC4KKyAgICByZXR1cm4gVmVjdG9yPEF0b21pY1N0cmluZz4oKTsKK30KKwogUmVm
UHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtTlMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fZWxlbWVudC5oYXNBdHRyaWJ1
dGVzKCkgPyBtX2VsZW1lbnQuZmluZEF0dHJpYnV0ZUluZGV4QnlOYW1lKFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSkgOiBFbGVtZW50RGF0YTo6YXR0cmli
dXRlTm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmgKaW5kZXggZDMyNTYzOWE1N2Jl
ZjY1NGViZjZmOTMwZjE3OGVlOTcwNzgzMWIwMi4uNDliZDI5ZjQyMWY4MGFiNjg3MDlkODViNWFj
ZjBkZWIyOTE1NDIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaApAQCAtNTMsNiArNTMs
NyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Tm9kZT4gZ2V0TmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OwogICAgIFJlZlB0cjxOb2RlPiByZW1vdmVOYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgVmVjdG9yPEF0b21pY1N0
cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOwogCiAgICAgUmVmUHRyPE5vZGU+IGdldE5h
bWVkSXRlbU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAgICAgUmVmUHRyPE5vZGU+IHJlbW92ZU5hbWVkSXRl
bU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAppbmRleCA2MTFkMDQzNmI5MmU4NTVmZDVjODA1ZjhlYjdlYmJhZGM4N2M3OGMyLi5l
NzgwMWJmNzFjMTI4MThhYWYxOGFkNmFkY2UzYTU3NmY3YjhhYmRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTY2LDYgKzE2NiwxNSBAQCBFbGVtZW50KiBIVE1M
Q29sbGVjdGlvbjo6bmFtZWRJdGVtU2xvdyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKKy8vIERvY3VtZW50ZWQgaW4gaHR0cHM6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtaHRtbGNvbGxlY3Rpb24uCitjb25zdCBWZWN0b3I8
QXRvbWljU3RyaW5nPiYgSFRNTENvbGxlY3Rpb246OnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKQor
eworICAgIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCk7CisgICAgQVNTRVJUKG1fbmFtZWRFbGVt
ZW50Q2FjaGUpOworCisgICAgcmV0dXJuIG1fbmFtZWRFbGVtZW50Q2FjaGUtPnByb3BlcnR5TmFt
ZXMoKTsKK30KKwogdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUo
KSBjb25zdAogewogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDNiNGMxNGE4N2I3ZjcyYjIzYjE3ZmMzNWQ0YzdlY2Rm
NmY1MTVlMDkuLjgxMWE0MThlMTgzMWNiOWRiZjc3MzcwNGZiYzk1MTQ2YzllNzVlYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ29s
bGVjdGlvbk5hbWVkRWxlbWVudENhY2hlIHsKIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8RWxl
bWVudCo+KiBmaW5kRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7
CiAgICAgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogZmluZEVsZW1lbnRzV2l0aE5hbWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5n
PiYgcHJvcGVydHlOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlOYW1lczsgfQogCiAg
ICAgdm9pZCBhcHBlbmRUb0lkQ2FjaGUoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRWxlbWVudCYp
OwogICAgIHZvaWQgYXBwZW5kVG9OYW1lQ2FjaGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBF
bGVtZW50Jik7CkBAIC00OCwxMCArNDksMTEgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIFZlY3RvcjxFbGVtZW50Kj4+IFN0cmluZ1RvRWxlbWVudHNN
YXA7CiAKICAgICBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBmaW5kKGNvbnN0IFN0cmluZ1RvRWxl
bWVudHNNYXAmLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSkgY29uc3Q7Ci0gICAgc3RhdGljIHZv
aWQgYXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmLCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwg
RWxlbWVudCYpOworICAgIHZvaWQgYXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmLCBjb25zdCBB
dG9taWNTdHJpbmcmIGtleSwgRWxlbWVudCYpOwogCiAgICAgU3RyaW5nVG9FbGVtZW50c01hcCBt
X2lkTWFwOwogICAgIFN0cmluZ1RvRWxlbWVudHNNYXAgbV9uYW1lTWFwOworICAgIFZlY3RvcjxB
dG9taWNTdHJpbmc+IG1fcHJvcGVydHlOYW1lczsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICBib29sIG1fZGlkUG9wdWxhdGUgeyBmYWxzZSB9OwpAQCAtNjYsNiArNjgsNyBAQCBwdWJsaWM6
CiAgICAgLy8gRE9NIEFQSQogICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Qgb3ZlcnJpZGUgPSAwOyAvLyBUaWdodGVuIHJldHVybiB0eXBlIGZyb20gTm9kZUxp
c3Q6Oml0ZW0oKS4KICAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0ID0gMDsKKyAgICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiYg
c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpOwogICAgIFJlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25z
dCBTdHJpbmcmKTsKIAogICAgIC8vIE5vbi1ET00gQVBJCkBAIC0xMjcsMTcgKzEzMCwxNyBAQCBp
bmxpbmUgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hl
OjpmaW5kRWxlbWVudHNXaXRoTmFtZQogCiBpbmxpbmUgdm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVt
ZW50Q2FjaGU6OmFwcGVuZFRvSWRDYWNoZShjb25zdCBBdG9taWNTdHJpbmcmIGlkLCBFbGVtZW50
JiBlbGVtZW50KQogewotICAgIHJldHVybiBhcHBlbmQobV9pZE1hcCwgaWQsIGVsZW1lbnQpOwor
ICAgIGFwcGVuZChtX2lkTWFwLCBpZCwgZWxlbWVudCk7CiB9CiAKIGlubGluZSB2b2lkIENvbGxl
Y3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kVG9OYW1lQ2FjaGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIHJldHVybiBhcHBlbmQobV9uYW1l
TWFwLCBuYW1lLCBlbGVtZW50KTsKKyAgICBhcHBlbmQobV9uYW1lTWFwLCBuYW1lLCBlbGVtZW50
KTsKIH0KIAogaW5saW5lIHNpemVfdCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6Om1lbW9y
eUNvc3QoKSBjb25zdAogewotICAgIHJldHVybiAobV9pZE1hcC5zaXplKCkgKyBtX25hbWVNYXAu
c2l6ZSgpKSAqIHNpemVvZihFbGVtZW50Kik7CisgICAgcmV0dXJuIChtX2lkTWFwLnNpemUoKSAr
IG1fbmFtZU1hcC5zaXplKCkpICogc2l6ZW9mKEVsZW1lbnQqKSArIG1fcHJvcGVydHlOYW1lcy5z
aXplKCkgKiBzaXplb2YoQXRvbWljU3RyaW5nKTsKIH0KIAogaW5saW5lIHZvaWQgQ29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlOjpkaWRQb3B1bGF0ZSgpCkBAIC0xNTgsNiArMTYxLDggQEAgaW5s
aW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6
ZmluZChjb25zdCBTdHJpbmdUb0UKIAogaW5saW5lIHZvaWQgQ29sbGVjdGlvbk5hbWVkRWxlbWVu
dENhY2hlOjphcHBlbmQoU3RyaW5nVG9FbGVtZW50c01hcCYgbWFwLCBjb25zdCBBdG9taWNTdHJp
bmcmIGtleSwgRWxlbWVudCYgZWxlbWVudCkKIHsKKyAgICBpZiAoIW1faWRNYXAuY29udGFpbnMo
a2V5LmltcGwoKSkgJiYgIW1fbmFtZU1hcC5jb250YWlucyhrZXkuaW1wbCgpKSkKKyAgICAgICAg
bV9wcm9wZXJ0eU5hbWVzLmFwcGVuZChrZXkpOwogICAgIG1hcC5hZGQoa2V5LmltcGwoKSwgVmVj
dG9yPEVsZW1lbnQqPigpKS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKCZlbGVtZW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKaW5kZXggOGQ4YWNl
NTFhZTEzM2I4NmRmNjlmYTY5MWE2MjAwZWU5MzMwMWY0Mi4uMWUzMTZhZmNiYjFmMDAxMjQyNTc4
MzNhZjc1ZjYyNzFjN2IxNmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01NaW1lVHlwZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVU
eXBlQXJyYXkuY3BwCkBAIC04Niw2ICs4NiwxMiBAQCBSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1p
bWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitWZWN0b3I8QXRvbWljU3RyaW5nPiBET01NaW1lVHlw
ZUFycmF5OjpzdXBwb3J0ZWRQcm9wZXJ0eU5hbWVzKCkKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxk
IGJlIGltcGxlbWVudGVkLgorICAgIHJldHVybiBWZWN0b3I8QXRvbWljU3RyaW5nPigpOworfQor
CiBQbHVnaW5EYXRhKiBET01NaW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJh
eS5oCmluZGV4IDBmY2QzMTJkZTFjMTY3MzgwN2ZhZDE0NDZhZDE1M2ViY2M3ZWRiMWQuLmEyNDg1
ZmI5NzlkZjZlYWU2YWQ5MWFmNmFhY2ZlY2Y3Yzc5YjI3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKICAgICBSZWZQdHI8RE9NTWltZVR5cGU+IGl0ZW0odW5z
aWduZWQgaW5kZXgpOwogICAgIFJlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0
b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKKyAgICBWZWN0b3I8QXRvbWljU3RyaW5nPiBzdXBw
b3J0ZWRQcm9wZXJ0eU5hbWVzKCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRE9NTWltZVR5
cGVBcnJheShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCmluZGV4IDI3
MmNiZjVmOTljZDQ0YTA4OTZhMjVhOTdjODE1YTViYTQxZTA2YWYuLmRhYTAwY2FiZGQzY2YwZmEz
MzdhYTI5NDg2M2RkOGQ1ODUzNjZkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5j
cHAKQEAgLTg1LDQgKzg1LDEwIEBAIFJlZlB0cjxET01NaW1lVHlwZT4gRE9NUGx1Z2luOjpuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKK1ZlY3RvcjxBdG9taWNTdHJpbmc+IERPTVBsdWdpbjo6c3VwcG9ydGVkUHJvcGVy
dHlOYW1lcygpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBiZSBpbXBsZW1lbnRlZC4KKyAgICBy
ZXR1cm4gVmVjdG9yPEF0b21pY1N0cmluZz4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKaW5kZXggZTcwYzk5N2U0MGI0NDMwZWUxOGM4
Yjg0NjA0NDZiOGY4M2Y3YTBkYS4uODYzZmFkM2VmZjllZTIwOTA4YzM5OTRkZTQ0Y2FjMjkzOWJk
YTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCkBAIC00NCw2ICs0NCw3IEBAIHB1
YmxpYzoKIAogICAgIFJlZlB0cjxET01NaW1lVHlwZT4gaXRlbSh1bnNpZ25lZCBpbmRleCk7CiAg
ICAgUmVmUHRyPERPTU1pbWVUeXBlPiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFByb3BlcnR5TmFt
ZXMoKTsKIAogcHJpdmF0ZToKICAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgUGx1
Z2luSW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4
IDcxOTJhYWNkY2U3NTNjNWJiOWQ4ZDEwZGQ3OGM5MzgzNDI3ZDg5NDIuLjhmNDRkZDUyY2NjYzJi
MDMwN2Q5YTY5MmMzOTFlYjRmNWQzNjkxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luQXJyYXkuY3BwCkBAIC03Nyw2ICs3NywxMiBAQCBSZWZQdHI8RE9NUGx1Z2luPiBET01Q
bHVnaW5BcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCitWZWN0b3I8QXRvbWljU3RyaW5nPiBET01QbHVnaW5B
cnJheTo6c3VwcG9ydGVkUHJvcGVydHlOYW1lcygpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBi
ZSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gVmVjdG9yPEF0b21pY1N0cmluZz4oKTsKK30KKwog
dm9pZCBET01QbHVnaW5BcnJheTo6cmVmcmVzaChib29sIHJlbG9hZCkKIHsKICAgICBQYWdlOjpy
ZWZyZXNoUGx1Z2lucyhyZWxvYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW5BcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJh
eS5oCmluZGV4IGE5MjJkNDM4MDVmZTIwOGU0ZjIwMjQ1YjY0ZDU5MDI0MmQ3YjU2MGIuLmM2Zjc1
MjQzMjg2MjlkNGJiOWI2ZTBmMmM3MDY2OTdmMjhiYjcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbkFycmF5LmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFJlZlB0cjxET01QbHVnaW4+IGl0ZW0odW5zaWduZWQg
aW5kZXgpOwogICAgIFJlZlB0cjxET01QbHVnaW4+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIHByb3BlcnR5TmFtZSk7CisgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJv
cGVydHlOYW1lcygpOwogCiAgICAgdm9pZCByZWZyZXNoKGJvb2wgcmVsb2FkKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGJlNjE2OWI0ZjVlMzQ5OGU2YmY5MDUzZjFlZWVkODk2OGI2MTIyOTUuLjlhZWIzMmE5MjBiYTc1
ZDIxNmUyNDYzOTlhZWFjOTJlZmI4NjE1Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0w
OS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKCkgZG9lcyBub3QgcmV0dXJuIG5hbWVkIHByb3BlcnRpZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU2MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjI4Nzk3Nzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhhdCBP
YmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIHJldHVybnMKKyAgICAgICAgYW4gSFRNTENvbGxl
Y3Rpb24ncyBuYW1lZCBwcm9wZXJ0aWVzLCBpbiBhZGRpdGlvbiB0byBpdHMgaW5kZXhlcy4gSXQK
KyAgICAgICAgYWxzbyBjaGVja3MgdGhhdCB0aGV5IGFyZSBub3QgZW51bWVyYWJsZSwgYXMgcGVy
IHRoZSBET00gc3BlY2lmaWNhdGlvbi4KKworICAgICAgICAqIGZhc3QvZG9tL2h0bWxjb2xsZWN0
aW9uLWdldG93bnByb3BlcnR5bmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eW5hbWVzLmh0bWw6IEFkZGVkLgor
CiAyMDE1LTA5LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVwZGF0ZSBidWcgbnVtYmVycyBmb3IgZmFpbGluZyB0ZXN0IGV4cGVjdGF0aW9ucyBpbiBmYXN0
L3NoYWRvdy1kb20uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2MTA3NjY4ZTIy
ZjgwNTFkZDlhNGY0ZDIwNjU5NGYxMDBjNGNlNDYzLi4zNDU5ZGE5NDE4OTdhYjQ5OTVhZGMzZTlh
OTYyNDJlZWQ2YjQwZDBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxNS0wOS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKCkgZG9lcyBub3QgcmV0dXJuIG5hbWVk
IHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTU2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjI4Nzk3Nzk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmViYXNlbGluZSBleGlzdGluZyBX
M0MgdGVzdHMgbm93IHRoYXQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoKQorICAgICAgICBy
ZXR1cm5zIG5hbWVkIHByb3BlcnRpZXMgZm9yIEhUTUxDb2xsZWN0aW9uLiBXZSB1bmZvcnR1bmF0
ZWx5IHN0aWxsCisgICAgICAgIGRvbid0IHBhc3MgdGhvc2UgYmVjYXVzZSAnbGVuZ3RoJyAvICdj
b25zdHJ1Y3RvcicgcHJvcGVydGllcyBhcmUKKyAgICAgICAgY3VycmVudGx5IG9uIHRoZSBpbnN0
YW5jZSBhbmQgdGhleSBzaG91bGQgYmUgb24gdGhlIHByb3RvdHlwZS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vY29sbGVjdGlvbnMvSFRNTENvbGxlY3Rpb24tc3VwcG9ydGVk
LXByb3BlcnR5LW5hbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL25vZGVzL0RvY3VtZW50LWdldEVsZW1lbnRzQnlUYWdOYW1lLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtZ2V0RWxlbWVu
dHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2RvbS9kb2N1bWVudHMvZG9tLXRyZWUtYWNjZXNzb3JzL2RvY3VtZW50LmZvcm1zLWV4cGVj
dGVkLnR4dDoKKwogMjAxNS0wOS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIE5vZGUucmVwbGFjZUNoaWxkKCkgZG9lcyBub3QgYmVoYXZlIGFjY29yZGluZyB0
byB0aGUgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRt
bGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHluYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9odG1sY29sbGVjdGlvbi1nZXRvd25wcm9wZXJ0eW5hbWVzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYWUzZjI3YWQ4Y2FiMTkwZGFmZGRjMzQwZmVjMjEzOTM3NWNhMGY5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0
b3ducHJvcGVydHluYW1lcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdHMgdGhh
dCBIVE1MQ29sbGVjdGlvbidzIG5hbWVkIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoKSBidXQgbm90IGVudW1lcmFibGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisqIE93biBwcm9wZXJ0aWVzCitBY3R1YWw6ICAgWycwJywgJzEnLCAn
MicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnc29tZS1pZCcsICdzb21lLW5hbWUnLCAnYW5v
dGhlci1pZCcsICdhbm90aGVyLW5hbWUnLCAnY29uc3RydWN0b3InLCAnbGVuZ3RoJ10KK0V4cGVj
dGVkOiBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICdzb21lLWlkJywg
J3NvbWUtbmFtZScsICdhbm90aGVyLWlkJywgJ2Fub3RoZXItbmFtZSddCisKKyogRW51bWVyYXRl
ZCBwcm9wZXJ0aWVzCitBY3R1YWw6ICAgWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2
JywgJzcnLCAnbGVuZ3RoJywgJ2l0ZW0nLCAnbmFtZWRJdGVtJ10KK0V4cGVjdGVkOiBbJzAnLCAn
MScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICdsZW5ndGgnLCAnaXRlbScsICduYW1l
ZEl0ZW0nXQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9uLWdldG93
bnByb3BlcnR5bmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2h0bWxjb2xsZWN0aW9u
LWdldG93bnByb3BlcnR5bmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDM3ZmNlZWI2ZDc1ZWM5YTgy
YjE3ZmVlMzQ4OTIwMTljNzZhODUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaHRtbGNvbGxlY3Rpb24tZ2V0b3ducHJvcGVydHluYW1lcy5odG1sCkBAIC0wLDAgKzEs
NjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0icGxheWdyb3Vu
ZCI+CisgICAgPCEtLSB3aXRoIG5vIGF0dHJpYnV0ZSAtLT4KKyAgICA8c3Bhbj48L3NwYW4+CisK
KyAgICA8IS0tIHdpdGggYGlkYCBhdHRyaWJ1dGUgLS0+CisgICAgPHNwYW4gaWQ9Jyc+PC9zcGFu
PgorICAgIDxzcGFuIGlkPSdzb21lLWlkJz48L3NwYW4+CisgICAgPHNwYW4gaWQ9J3NvbWUtaWQn
Pjwvc3Bhbj48IS0tIHRvIGVuc3VyZSBubyBkdXBsaWNhdGVzIC0tPgorCisgICAgPCEtLSB3aXRo
IGBuYW1lYCBhdHRyaWJ1dGUgLS0+CisgICAgPHNwYW4gbmFtZT0nJz48L3NwYW4+CisgICAgPHNw
YW4gbmFtZT0nc29tZS1uYW1lJz48L3NwYW4+CisgICAgPHNwYW4gbmFtZT0nc29tZS1uYW1lJz48
L3NwYW4+PCEtLSB0byBlbnN1cmUgbm8gZHVwbGljYXRlcyAtLT4KKworICAgIDwhLS0gd2l0aCBg
bmFtZWAgYW5kIGBpZGAgYXR0cmlidXRlIC0tPgorICAgIDxzcGFuIGlkPSdhbm90aGVyLWlkJyBu
YW1lPSdhbm90aGVyLW5hbWUnPjwvc3Bhbj4KKzwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IEhUTUxDb2xsZWN0aW9uJ3MgbmFtZWQgcHJvcGVydGllcyByZXR1cm5lZCBi
eSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcygpIGJ1dCBub3QgZW51bWVyYWJsZS4iKTsKKwor
dmFyIHBsYXlncm91bmQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxheWdyb3VuZCIpOwor
dmFyIGVsZW1lbnRzID0gcGxheWdyb3VuZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3BhbiIpOwor
CitkZWJ1ZygiKiBPd24gcHJvcGVydGllcyIpOwordmFyIG93blByb3BlcnRpZXMgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyhlbGVtZW50cyk7Cit2YXIgcmVzdWx0ID0gIlsiOwordmFyIGlz
Rmlyc3QgPSB0cnVlOworZm9yICh2YXIgaSA9IDA7IGkgPCBvd25Qcm9wZXJ0aWVzLmxlbmd0aDsg
aSsrKSB7CisgICAgaWYgKGlzRmlyc3QpCisgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKKyAgICBl
bHNlCisgICAgICAgcmVzdWx0ICs9ICIsICI7CisgICAgcmVzdWx0ICs9ICInIiArIG93blByb3Bl
cnRpZXNbaV0gKyAiJyI7Cit9CityZXN1bHQgKz0gIl0iOworZGVidWcoIkFjdHVhbDogICAiICsg
cmVzdWx0KTsKK2RlYnVnKCJFeHBlY3RlZDogWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScs
ICc2JywgJzcnLCAnc29tZS1pZCcsICdzb21lLW5hbWUnLCAnYW5vdGhlci1pZCcsICdhbm90aGVy
LW5hbWUnXSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiKiBFbnVtZXJhdGVkIHByb3BlcnRpZXMi
KTsKK3Jlc3VsdCA9ICJbIjsKK2lzRmlyc3QgPSB0cnVlOworZm9yICh2YXIgcHJvcGVydHkgaW4g
ZWxlbWVudHMpIHsKKyAgICBpZiAoaXNGaXJzdCkKKyAgICAgICAgaXNGaXJzdCA9IGZhbHNlOwor
ICAgIGVsc2UKKyAgICAgICByZXN1bHQgKz0gIiwgIjsKKyAgICByZXN1bHQgKz0gIiciICsgcHJv
cGVydHkgKyAiJyI7Cit9CityZXN1bHQgKz0gIl0iOworZGVidWcoIkFjdHVhbDogICAiICsgcmVz
dWx0KTsKK2RlYnVnKCJFeHBlY3RlZDogWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2
JywgJzcnLCAnbGVuZ3RoJywgJ2l0ZW0nLCAnbmFtZWRJdGVtJ10iKTsKKworPC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbS9jb2xsZWN0aW9ucy9IVE1MQ29sbGVjdGlvbi1zdXBwb3J0ZWQt
cHJvcGVydHktbmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vY29sbGVjdGlvbnMvSFRNTENvbGxlY3Rpb24tc3VwcG9ydGVk
LXByb3BlcnR5LW5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCA2OGI0NTFmNWJlMmFlYzI1MjI1Njdh
YWJjMzdhYTFiNjEyNmQyYTNjLi4yY2JmODcxMzFmODNjN2U2YzQ0ZDAxZTMzZjE4YjY5MTQ0YmRl
YTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS9jb2xsZWN0aW9ucy9IVE1MQ29sbGVjdGlvbi1zdXBwb3J0ZWQtcHJvcGVydHktbmFt
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZG9tL2NvbGxlY3Rpb25zL0hUTUxDb2xsZWN0aW9uLXN1cHBvcnRlZC1wcm9wZXJ0
eS1uYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMgb24gSFRNTENvbGxlY3Rpb24gYXNzZXJ0X2FycmF5X2VxdWFsczogbGVu
Z3RocyBkaWZmZXIsIGV4cGVjdGVkIDEyIGdvdCAxMAorRkFJTCBPYmplY3QuZ2V0T3duUHJvcGVy
dHlOYW1lcyBvbiBIVE1MQ29sbGVjdGlvbiBhc3NlcnRfYXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRp
ZmZlciwgZXhwZWN0ZWQgMTIgZ290IDE0CiBGQUlMIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
IG9uIEhUTUxDb2xsZWN0aW9uIHdpdGggbm9uLUhUTUwgbmFtZXNwYWNlIGFzc2VydF9hcnJheV9l
cXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAxIGdvdCAzCiBGQUlMIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzIG9uIEhUTUxDb2xsZWN0aW9uIHdpdGggZXhwYW5kbyBvYmplY3QgYXNz
ZXJ0X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDIgZ290IDQKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
bm9kZXMvRG9jdW1lbnQtZ2V0RWxlbWVudHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRG9jdW1lbnQt
Z2V0RWxlbWVudHNCeVRhZ05hbWUtZXhwZWN0ZWQudHh0CmluZGV4IGRmY2Q4ZmYxZWViMTE3NmU0
MDQ2NjFmMjAzNWI2YWQ5OTBiNjJhMTcuLjkwMmQ5MmQxZDFkNzQxNWE5NjBiYzRkMTRmYTc2Mzdm
ZGE1MzkwYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZG9tL25vZGVzL0RvY3VtZW50LWdldEVsZW1lbnRzQnlUYWdOYW1lLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Rv
bS9ub2Rlcy9Eb2N1bWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1leHBlY3RlZC50eHQKQEAgLTgs
NyArOCw3IEBAIEZBSUwgU2hvdWxkbid0IGJlIGFibGUgdG8gc2V0IHVuc2lnbmVkIHByb3BlcnRp
ZXMgb24gYSBIVE1MQ29sbGVjdGlvbiAoc3RyaWN0IG1vCiAgICAgfSIgZGlkIG5vdCB0aHJvdwog
UEFTUyBTaG91bGQgYmUgYWJsZSB0byBzZXQgZXhwYW5kbyBzaGFkb3dpbmcgYSBwcm90byBwcm9w
IChpdGVtKSAKIFBBU1MgU2hvdWxkIGJlIGFibGUgdG8gc2V0IGV4cGFuZG8gc2hhZG93aW5nIGEg
cHJvdG8gcHJvcCAobmFtZWRJdGVtKSAKLUZBSUwgaGFzT3duUHJvcGVydHksIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvciwgZ2V0T3duUHJvcGVydHlOYW1lcyBhc3NlcnRfYXJyYXlfZXF1YWxzOiBs
ZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBnb3QgMworRkFJTCBoYXNPd25Qcm9wZXJ0eSwgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yLCBnZXRPd25Qcm9wZXJ0eU5hbWVzIGFzc2VydF9hcnJheV9l
cXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAyIGdvdCA0CiBQQVNTIEhUTUwgZWxlbWVu
dCB3aXRoIHVwcGVyY2FzZSB0YWdOYW1lIG5ldmVyIG1hdGNoZXMgaW4gSFRNTCBEb2N1bWVudHMg
CiBQQVNTIEVsZW1lbnQgaW4gbm9uLUhUTUwgbmFtZXNwYWNlLCBubyBwcmVmaXgsIGxvd2VyY2Fz
ZSBuYW1lIAogUEFTUyBFbGVtZW50IGluIG5vbi1IVE1MIG5hbWVzcGFjZSwgbm8gcHJlZml4LCB1
cHBlcmNhc2UgbmFtZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL25vZGVzL0VsZW1lbnQtZ2V0RWxlbWVudHNCeVRhZ05hbWUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vbm9kZXMvRWxlbWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1leHBlY3RlZC50eHQKaW5kZXgg
YmVkZmM4NjdmNzc4MDlhYjY2MWYyMmVlODUxOGE3MmViYzZkZjUxYS4uYmE1NjFhZDA5M2ZhM2Zj
ZWIzNDEzZmJjYmQyYWUzOTdhN2UyMWQzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1nZXRFbGVtZW50c0J5
VGFnTmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vbm9kZXMvRWxlbWVudC1nZXRFbGVtZW50c0J5VGFnTmFtZS1leHBl
Y3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIEZBSUwgU2hvdWxkbid0IGJlIGFibGUgdG8gc2V0IHVu
c2lnbmVkIHByb3BlcnRpZXMgb24gYSBIVE1MQ29sbGVjdGlvbiAoc3RyaWN0IG1vCiAgICAgfSIg
ZGlkIG5vdCB0aHJvdwogUEFTUyBTaG91bGQgYmUgYWJsZSB0byBzZXQgZXhwYW5kbyBzaGFkb3dp
bmcgYSBwcm90byBwcm9wIChpdGVtKSAKIFBBU1MgU2hvdWxkIGJlIGFibGUgdG8gc2V0IGV4cGFu
ZG8gc2hhZG93aW5nIGEgcHJvdG8gcHJvcCAobmFtZWRJdGVtKSAKLUZBSUwgaGFzT3duUHJvcGVy
dHksIGdldE93blByb3BlcnR5RGVzY3JpcHRvciwgZ2V0T3duUHJvcGVydHlOYW1lcyBhc3NlcnRf
YXJyYXlfZXF1YWxzOiBsZW5ndGhzIGRpZmZlciwgZXhwZWN0ZWQgMiBnb3QgMworRkFJTCBoYXNP
d25Qcm9wZXJ0eSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBnZXRPd25Qcm9wZXJ0eU5hbWVz
IGFzc2VydF9hcnJheV9lcXVhbHM6IGxlbmd0aHMgZGlmZmVyLCBleHBlY3RlZCAyIGdvdCA0CiBQ
QVNTIEhUTUwgZWxlbWVudCB3aXRoIHVwcGVyY2FzZSB0YWdOYW1lIG5ldmVyIG1hdGNoZXMgaW4g
SFRNTCBEb2N1bWVudHMgCiBQQVNTIEVsZW1lbnQgaW4gbm9uLUhUTUwgbmFtZXNwYWNlLCBubyBw
cmVmaXgsIGxvd2VyY2FzZSBuYW1lIAogUEFTUyBFbGVtZW50IGluIG5vbi1IVE1MIG5hbWVzcGFj
ZSwgbm8gcHJlZml4LCB1cHBlcmNhc2UgbmFtZSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVl
LWFjY2Vzc29ycy9kb2N1bWVudC5mb3Jtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL2RvY3VtZW50cy9kb20tdHJlZS1h
Y2Nlc3NvcnMvZG9jdW1lbnQuZm9ybXMtZXhwZWN0ZWQudHh0CmluZGV4IDgyYmY0NzIzY2IxZmNh
MGY3Y2RkMjcwNWM2ZjEwNDhlODkzZWM4ZjYuLjBkYWMxMWE3NDM0NjJlYzQyYmUwNGVjNzIwZGY2
NTBmNDNhYzdlMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9kb20vZG9jdW1lbnRzL2RvbS10cmVlLWFjY2Vzc29ycy9kb2N1bWVu
dC5mb3Jtcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2RvbS9kb2N1bWVudHMvZG9tLXRyZWUtYWNjZXNzb3JzL2RvY3Vt
ZW50LmZvcm1zLWV4cGVjdGVkLnR4dApAQCAtNSw1ICs1LDUgQEAgUEFTUyBkb2N1bWVudC5mb3Jt
cwogUEFTUyBkb2N1bWVudC5mb3Jtcy5pdGVtIHdpdGggc3RyaW5nIGFyZyAKIFBBU1MgZG9jdW1l
bnQuZm9ybXMgd2l0aCBlbXB0eSBzdHJpbmcgCiBGQUlMIGRvY3VtZW50LmZvcm1zIGl0ZXJhdGlv
biBhc3NlcnRfYXJyYXlfZXF1YWxzOiBwcm9wZXJ0eSAzLCBleHBlY3RlZCAiaXRlbSIgYnV0IGdv
dCAibGVuZ3RoIgotRkFJTCBkb2N1bWVudC5mb3JtcyBnZXRPd25Qcm9wZXJ0eU5hbWVzIGFzc2Vy
dF9hcnJheV9lcXVhbHM6IHByb3BlcnR5IDMsIGV4cGVjdGVkICJmb3JtMSIgYnV0IGdvdCAiY29u
c3RydWN0b3IiCitGQUlMIGRvY3VtZW50LmZvcm1zIGdldE93blByb3BlcnR5TmFtZXMgYXNzZXJ0
X2FycmF5X2VxdWFsczogbGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkIDUgZ290IDcKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>