<?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>187963</bug_id>
          
          <creation_ts>2018-07-24 10:34:30 -0700</creation_ts>
          <short_desc>String(View) should have a splitAllowingEmptyEntries function instead of a flag parameter</short_desc>
          <delta_ts>2018-07-26 15:01:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=187864</see_also>
          <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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444737</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-24 10:34:30 -0700</bug_when>
    <thetext>Based on https://bugs.webkit.org/show_bug.cgi?id=187864#c19.

Instead of letting WTF::String::split and WTF::StringView::split take an allowEmptyEntries boolean or enum value, it would be better practice to have a separate splitWithEmptyEntries method on each of these classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444866</commentid>
    <comment_count>1</comment_count>
      <attachid>345722</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-24 16:02:34 -0700</bug_when>
    <thetext>Created attachment 345722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444867</commentid>
    <comment_count>2</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-24 16:04:51 -0700</bug_when>
    <thetext>Although the update to StringView is trivial, the update to String is slightly less so -- please let me know if there&apos;s a better practice here than the approach I&apos;ve taken with splitInternal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444906</commentid>
    <comment_count>3</comment_count>
      <attachid>345730</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-24 17:32:35 -0700</bug_when>
    <thetext>Created attachment 345730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444907</commentid>
    <comment_count>4</comment_count>
      <attachid>345722</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-07-24 17:36:38 -0700</bug_when>
    <thetext>Comment on attachment 345722
Patch

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

&gt; Source/WTF/wtf/text/StringView.h:129
&gt; +    SplitResult splitWithEmptyEntries(UChar) const;

I think I would call this something like splitAllowingEmptyEntries()

&gt; Source/WTF/wtf/text/WTFString.cpp:705
&gt; +void String::splitInternal(const String&amp; separator, bool allowEmptyEntries, Vector&lt;String&gt;&amp; result) const

I think following a pattern like String::removeInternal, and making this a template function (templatized on allowEmptyEntries).  That will probably also require out-of-lining all the String::split() functions that call String::splitInternal().

&gt; Source/WTF/wtf/text/WTFString.h:285
&gt; +    void splitWithEmptyEntries(const String&amp; separator, Vector&lt;String&gt;&amp; result) const { splitInternal(separator, true, result); }
&gt; +    void splitWithEmptyEntries(UChar separator, Vector&lt;String&gt;&amp; result) const { splitInternal(separator, true, result); }
&gt; +    void splitWithEmptyEntries(UChar separator, const SplitFunctor&amp; functor) const { splitInternal(separator, true, functor); }
&gt; +    Vector&lt;String&gt; splitWithEmptyEntries(UChar separator) const;
&gt; +    Vector&lt;String&gt; splitWithEmptyEntries(const String&amp; separator) const;

Again, I would probably go with splitAllowingEmptyEntries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444954</commentid>
    <comment_count>5</comment_count>
      <attachid>345744</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-24 20:53:15 -0700</bug_when>
    <thetext>Created attachment 345744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445075</commentid>
    <comment_count>6</comment_count>
      <attachid>345744</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-25 10:44:18 -0700</bug_when>
    <thetext>Comment on attachment 345744
Patch

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

Cool!

&gt; Source/WTF/wtf/text/WTFString.h:282
&gt; +    WTF_EXPORT_PRIVATE void splitAllowingEmptyEntries(const String&amp; separator, Vector&lt;String&gt;&amp; result) const;
&gt; +    WTF_EXPORT_PRIVATE void splitAllowingEmptyEntries(UChar separator, Vector&lt;String&gt;&amp; result) const;

Let&apos;s get rid of these return-by-reference functions in favor of the return-by-value functions.  All uses of them create a vector on the line before calling them.

&gt; Source/WTF/wtf/text/WTFString.h:285
&gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(UChar separator) const;
&gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(const String&amp; separator) const;

Ideally even these would just return an iterator of some kind so we don&apos;t need to allocate a Vector, because when we use this we really want to iterate it quickly.  That might be better for a future patch, though.

&gt; Tools/ChangeLog:9
&gt; +        Add tests for String::split and String::splitWithEmptyEntries.

String::splitAllowingEmptyEntries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445216</commentid>
    <comment_count>7</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-25 16:34:09 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 345744 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345744&amp;action=review
&gt; 
&gt; Cool!
&gt; 
&gt; &gt; Source/WTF/wtf/text/WTFString.h:282
&gt; &gt; +    WTF_EXPORT_PRIVATE void splitAllowingEmptyEntries(const String&amp; separator, Vector&lt;String&gt;&amp; result) const;
&gt; &gt; +    WTF_EXPORT_PRIVATE void splitAllowingEmptyEntries(UChar separator, Vector&lt;String&gt;&amp; result) const;
&gt; 
&gt; Let&apos;s get rid of these return-by-reference functions in favor of the
&gt; return-by-value functions.  All uses of them create a vector on the line
&gt; before calling them.

Can do!

&gt; &gt; Source/WTF/wtf/text/WTFString.h:285
&gt; &gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(UChar separator) const;
&gt; &gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(const String&amp; separator) const;
&gt; 
&gt; Ideally even these would just return an iterator of some kind so we don&apos;t
&gt; need to allocate a Vector, because when we use this we really want to
&gt; iterate it quickly.  That might be better for a future patch, though.

Sure! Are we okay with with mimicking StringView::SplitResult::Iterator for String then?
https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/text/StringView.h#L689-L711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445283</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-07-25 21:05:04 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #7)
&gt; &gt; &gt; Source/WTF/wtf/text/WTFString.h:285
&gt; &gt; &gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(UChar separator) const;
&gt; &gt; &gt; +    Vector&lt;String&gt; splitAllowingEmptyEntries(const String&amp; separator) const;
&gt; &gt; 
&gt; &gt; Ideally even these would just return an iterator of some kind so we don&apos;t
&gt; &gt; need to allocate a Vector, because when we use this we really want to
&gt; &gt; iterate it quickly.  That might be better for a future patch, though.
&gt; 
&gt; Sure! Are we okay with with mimicking StringView::SplitResult::Iterator for
&gt; String then?
&gt; https://github.com/WebKit/webkit/blob/master/Source/WTF/wtf/text/StringView.
&gt; h#L689-L711

I think instead we should eventually move all clients from the String::split functions to StringView::split functions and just dump these ones that return a Vector. Any caller can use the more efficient StringView version.

I do think that we should make some other small fixes to call sites, such as getting rid of pointless UChar casts and also fixing call sites that get the less efficient version by passing &quot;x&quot; instead of &apos;x&apos;. I also think that as long as we are keeping them, we should consider changing String::split and String::splitAllowingEmptyEntries to take a StringView for the separator argument rather than a const String&amp;. There is no reason to require an actual String object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445330</commentid>
    <comment_count>9</comment_count>
      <attachid>345832</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-25 23:45:06 -0700</bug_when>
    <thetext>Created attachment 345832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445332</commentid>
    <comment_count>10</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-07-25 23:47:32 -0700</bug_when>
    <thetext>For now, I&apos;ve removed the out-parameter overloads and adjusted all call sites accordingly.
I&apos;ve also removed needless UChar casts, ensured that character (not string) literals are used, and simplified for loops where trivial.

It seemed for a moment that the const String&amp; overloads weren&apos;t even being used, but unfortunately, WebSocket::subprotocolSeparator is &quot;, &quot;.
I tried switching to StringView, but this would demand that a similar change be made to String::find, so it seems out of scope for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445552</commentid>
    <comment_count>11</comment_count>
      <attachid>345832</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-26 15:00:11 -0700</bug_when>
    <thetext>Comment on attachment 345832
Patch

Clearing flags on attachment: 345832

Committed r234278: &lt;https://trac.webkit.org/changeset/234278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445553</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-26 15:00:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445555</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-26 15:01:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/42639510&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345722</attachid>
            <date>2018-07-24 16:02:34 -0700</date>
            <delta_ts>2018-07-24 20:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187963-20180724160234.patch</filename>
            <type>text/plain</type>
            <size>35447</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MmExZDkxZGI4MTBmOGY2YzBhMDU0Y2ZiYTI5NDkxYTExM2IwNzNiLi4wOTdkNjkwMzI2MTM2YTM2
OGZmNjYzMjFiMTM1Njk4YTA3MDUxZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRXaXRoRW1w
dHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChNb2R1bGVO
YW1lOjpNb2R1bGVOYW1lKToKKyAgICAgICAgKHJlc29sdmVQYXRoKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjYW5vbmljYWxpemVMYW5ndWFnZVRh
Zyk6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdFdpdGhFbXB0eUVudHJpZXMgdXNhZ2UuCisK
IDIwMTgtMDctMjMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
bmVlZCB0byBkaWRGb2xkQ2xvYmJlcldvcmxkIHdoZW4gd2UgY29uc3RhbnQgZm9sZCBHZXRCeVZh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCAwY2Y1MGEzYmRjYjQ3NTA5ZjNhMzVlNDkwYTEzYzc2NGNjM2ZiNzFmLi44ZDZkNTJm
MzY3M2FlNzRkN2RjYWNlZDBkNmUwMjAzMDE4ZDBkZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE4LTA3LTI0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBTdHJpbmcoVmlldykgc2hvdWxkIGhhdmUgYSBzcGxpdFdpdGhFbXB0eUVudHJpZXMgZnVu
Y3Rpb24gaW5zdGVhZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nVmlldzo6c3BsaXRXaXRoRW1wdHlFbnRyaWVzIGNvbnN0KToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0
SW50ZXJuYWwgY29uc3QpOiBSZW5hbWVkIGZyb20gc3BsaXQuCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6c3BsaXQgY29uc3QpOgorICAgICAg
ICAoV1RGOjpTdHJpbmc6OnNwbGl0V2l0aEVtcHR5RW50cmllcyBjb25zdCk6CisgICAgICAgIElu
dHJvZHVjZSBzcGxpdFdpdGhFbXB0eUVudHJpZXMgaW5zdGVhZCBvZiBib29sZWFuIG9yIGVudW0g
cGFyYW1ldGVyLgorCiAyMDE4LTA3LTI0ICBUaGliYXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBJbXBsZW1lbnQgYml0cmF0ZSBtb2R1bGF0
aW9uIHN1cHBvcnQgaW4gR1N0cmVhbWVyIGJhc2VkIGxpYndlYnJ0YyBFbmNvZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQzZGRhODFkNzk5MTdlNDY0MGU0M2I1YmVhYTRlZTU2Mjc1YzViNzcuLjUzYmRkYWZk
ZWRmYWI4OWM0NmRjMTI5YzhlZjRlMDA4NmQ4YjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MCBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRXaXRoRW1wdHlFbnRy
aWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZSk6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6cXVlcnlDYWNoZU1hdGNoKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmaWx0ZXJJQ0VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpmaWx0ZXJTRFAgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxDb250YWluZXJGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOgorICAgICAgICAqIGh0bWwvRW1haWxJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OnR5cGVNaXNt
YXRjaEZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6c2FuaXRp
emVWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWNjZXB0QXR0cmlidXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aCk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0lQdjRBZGRyZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzSVB2NkFkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEdTdHJlYW1lck9wdGlvbnNGcm9tQ29tbWFuZExpbmUpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VB
Y2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyc0FsbG93TGlzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRp
bDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRXaXRoRW1w
dHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYW5ub3QgdmlldyBQREYncyBvbiBteS5nb3YuYXU6ICJSZWZ1
c2VkIHRvIGxvYWQgaHR0cHM6Ly9teS5nb3YuYXUvYXR0YWNobWVudC92aWV3QXR0YWNobWVudCBi
ZWNhdXNlIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IGZhMjhkYjJhZDRlODA4MjM4NDE1YTI3NzM5Mzk1
MGJkZmVhMTU1OTYuLjA0YThmMzAxMmIzNzUyOTRmM2NmZTQyNWI5ZmY5Y2NjMTYwNTliOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDctMjQgIFJvc3MgS2lyc2xpbmcg
IDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFN0cmluZyhWaWV3KSBzaG91bGQg
aGF2ZSBhIHNwbGl0V2l0aEVtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBw
YXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Nzk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OnBh
cnNlVmVyc2lvbik6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdFdpdGhFbXB0eUVudHJpZXMg
dXNhZ2UuCisKIDIwMTgtMDctMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIC0taG9zdCBvcHRpb24gdG8gV2ViRHJp
dmVyIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDYyNmYwMGViMDM4OTIwZGU4M2RmNzZhMTFiYWNhYmVk
MzE1NGU0My4uMmYxNGFhN2RmYzE1Nzc1YmFkMzNmNTY2ZTc4MjRhYjlhYWE3NGM3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3Bs
aXRXaXRoRW1wdHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6dXBkYXRlVmFyeUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXJzZU1JTUVEZXNjcmlwdGlv
bik6CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojpm
aWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c1Byb3h5OjpzY2FuUGx1Z2luKToKKyAgICAgICAgVXBkYXRlIHNwbGl0L3NwbGl0V2l0aEVtcHR5
RW50cmllcyB1c2FnZS4KKwogMjAxOC0wNy0yNCAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3ph
Ym9Ac29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBBZGQgc3VwcG9ydCB0byBXZWJWaWV3
IGZvciBzZXR0aW5nIHRvb2x0aXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IDk5
ZWMyN2EwM2Y4ZGQwNDgxMTczOTJiNzJjNjY4ZGJiNWViY2ZlOWIuLmMxODEyNjA1YjQxMjkzMDZk
ODMxMjg3MDk3NzBlZDRkNzM3ZGM3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBA
IC0xNjIsNyArMTYyLDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9t
YWluQW5kTWV0aG9kOwotICAgICAgICBtZXRob2RTdHJpbmcuc3BsaXQoJy4nLCB0cnVlLCBkb21h
aW5BbmRNZXRob2QpOworICAgICAgICBtZXRob2RTdHJpbmcuc3BsaXRXaXRoRW1wdHlFbnRyaWVz
KCcuJywgZG9tYWluQW5kTWV0aG9kKTsKICAgICAgICAgaWYgKGRvbWFpbkFuZE1ldGhvZC5zaXpl
KCkgIT0gMiB8fCAhZG9tYWluQW5kTWV0aG9kWzBdLmxlbmd0aCgpIHx8ICFkb21haW5BbmRNZXRo
b2RbMV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxp
ZFJlcXVlc3QsICJUaGUgJ21ldGhvZCcgcHJvcGVydHkgd2FzIGZvcm1hdHRlZCBpbmNvcnJlY3Rs
eS4gSXQgc2hvdWxkIGJlICdEb21haW4ubWV0aG9kJyJfcyk7CiAgICAgICAgICAgICBzZW5kUGVu
ZGluZ0Vycm9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkYTJlNzFjMGE5NmY4YzhlM2Vk
ZTM0ZWY2NjI1M2ZmYzRiNGMzZWI4Li5mMWFiZGYxOTZiNDM5NDM2YmMzNjcwNTQ0ZTg0M2I3ODAx
NDNlNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBAIHN0cnVjdCBN
b2R1bGVOYW1lIHsKIE1vZHVsZU5hbWU6Ok1vZHVsZU5hbWUoY29uc3QgU3RyaW5nJiBtb2R1bGVO
YW1lKQogewogICAgIC8vIEEgbW9kdWxlIG5hbWUgZ2l2ZW4gZnJvbSBjb2RlIGlzIHJlcHJlc2Vu
dGVkIGFzIHRoZSBVTklYIHN0eWxlIHBhdGguIExpa2UsIGAuL0EvQi5qc2AuCi0gICAgbW9kdWxl
TmFtZS5zcGxpdCgnLycsIHRydWUsIHF1ZXJpZXMpOworICAgIG1vZHVsZU5hbWUuc3BsaXRXaXRo
RW1wdHlFbnRyaWVzKCcvJywgcXVlcmllcyk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERp
cmVjdG9yeU5hbWU+IGV4dHJhY3REaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgYWJzb2x1dGVQ
YXRoVG9GaWxlKQpAQCAtNzUxLDcgKzc1MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVj
dG9yeU5hbWU+IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCkKIHN0YXRpYyBTdHJpbmcgcmVzb2x2
ZVBhdGgoY29uc3QgRGlyZWN0b3J5TmFtZSYgZGlyZWN0b3J5TmFtZSwgY29uc3QgTW9kdWxlTmFt
ZSYgbW9kdWxlTmFtZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBkaXJlY3RvcnlQaWVjZXM7Ci0g
ICAgZGlyZWN0b3J5TmFtZS5xdWVyeU5hbWUuc3BsaXQocGF0aFNlcGFyYXRvcigpLCBmYWxzZSwg
ZGlyZWN0b3J5UGllY2VzKTsKKyAgICBkaXJlY3RvcnlOYW1lLnF1ZXJ5TmFtZS5zcGxpdChwYXRo
U2VwYXJhdG9yKCksIGRpcmVjdG9yeVBpZWNlcyk7CiAKICAgICAvLyBPbmx5IGZpcnN0ICcvJyBp
cyByZWNvZ25pemVkIGFzIHRoZSBwYXRoIGZyb20gdGhlIHJvb3QuCiAgICAgaWYgKG1vZHVsZU5h
bWUuc3RhcnRzV2l0aFJvb3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKaW5kZXggYTFlYWUyMmI2OWI4N2Y4NzU2YjE3YWViZTQ0MjQ5MGNjYjBiYTkz
Yy4uOGI0Mzk0MGE4ZWE3MDllMzBhNGZmMjRkNzJkMmQxYzAzMmIxNmIyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTQ3NCw3ICs0NzQsNyBA
QCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGNvbnN0IFN0cmluZyYgbG9j
YWxlKQogICAgICAgICByZXR1cm4gZ3JhbmRmYXRoZXI7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBw
YXJ0czsKLSAgICBsb2NhbGUuc3BsaXQoJy0nLCB0cnVlLCBwYXJ0cyk7CisgICAgbG9jYWxlLnNw
bGl0V2l0aEVtcHR5RW50cmllcygnLScsIHBhcnRzKTsKICAgICBpZiAoIXBhcnRzLmlzRW1wdHko
KSkgewogICAgICAgICBTdHJpbmcgbGFuZ3RhZyA9IGNhbm9uaWNhbExhbmdUYWcocGFydHMpOwog
ICAgICAgICBpZiAoIWxhbmd0YWcuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmlu
ZGV4IDAyZWQ3NTM3Mjk5MjJhNzJlNWMxNjhiM2MwNGFjNTdkNzRkOTQ3NGIuLmZjOGQzNWRiYWRm
ZmRlMTQ2ODM1OWJkOGI4ZjUyYWI1Y2U4MzZhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5o
CkBAIC0xMjQsMTEgKzEyNCw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXRj
aGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogICAgIFN0cmluZ1ZpZXcgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlJik7
CiAKLSAgICBlbnVtIEFsbG93RW1wdHlFbnRyaWVzVGFnIHsgQWxsb3dFbXB0eUVudHJpZXMgfTsK
LQogICAgIGNsYXNzIFNwbGl0UmVzdWx0OwogICAgIFNwbGl0UmVzdWx0IHNwbGl0KFVDaGFyKSBj
b25zdDsKLSAgICBTcGxpdFJlc3VsdCBzcGxpdChVQ2hhciwgQWxsb3dFbXB0eUVudHJpZXNUYWcp
IGNvbnN0OworICAgIFNwbGl0UmVzdWx0IHNwbGl0V2l0aEVtcHR5RW50cmllcyhVQ2hhcikgY29u
c3Q7CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsK
ICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0g
MCkgY29uc3Q7CkBAIC05MDUsNyArOTAzLDcgQEAgaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6c3Bs
aXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdCAtPiBTcGxpdFJlc3VsdAogICAgIHJldHVybiBTcGxp
dFJlc3VsdCB7ICp0aGlzLCBzZXBhcmF0b3IsIGZhbHNlIH07CiB9CiAKLWlubGluZSBhdXRvIFN0
cmluZ1ZpZXc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvciwgQWxsb3dFbXB0eUVudHJpZXNUYWcpIGNv
bnN0IC0+IFNwbGl0UmVzdWx0CitpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpzcGxpdFdpdGhFbXB0
eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yKSBjb25zdCAtPiBTcGxpdFJlc3VsdAogewogICAgIHJl
dHVybiBTcGxpdFJlc3VsdCB7ICp0aGlzLCBzZXBhcmF0b3IsIHRydWUgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcAppbmRleCA5YzVlZGQ2YTk5MjQ3MzZmNmU2Y2JjZDgwY2MyNzcyZjEy
YjZlYzdhLi44MDc4ODRiYzcwZGJjNmEwODFlN2VmMDMyM2E5Zjk5ZDllYjYzMmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgYm9vbCBTdHJpbmc6Omlz
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzRW1wdHkoKSB8
fCAobV9pbXBsLT5oYXNPbmVSZWYoKSAmJiAhbV9pbXBsLT5pc0F0b21pYygpKTsKIH0KIAotdm9p
ZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlF
bnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAordm9pZCBTdHJpbmc6OnNwbGl0
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMs
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmNsZWFyKCk7CiAK
QEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBh
cmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbgogICAgICAgICByZXN1
bHQuYXBwZW5kKHN1YnN0cmluZyhzdGFydFBvcykpOwogfQogCi12b2lkIFN0cmluZzo6c3BsaXQo
VUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0
b3ImIGZ1bmN0b3IpIGNvbnN0Cit2b2lkIFN0cmluZzo6c3BsaXRJbnRlcm5hbChVQ2hhciBzZXBh
cmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIGNvbnN0IFNwbGl0RnVuY3RvciYgZnVuY3Rv
cikgY29uc3QKIHsKICAgICBTdHJpbmdWaWV3IHZpZXcoKnRoaXMpOwogCkBAIC03MzIsMTAgKzcz
MiwxMCBAQCB2b2lkIFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImCiAgICAgICAgIGZ1bmN0b3Iodmlldy5zdWJz
dHJpbmcoc3RhcnRQb3MpKTsKIH0KIAotdm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QK
K3ZvaWQgU3RyaW5nOjpzcGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0Vt
cHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKIHsKICAgICByZXN1bHQu
Y2xlYXIoKTsKLSAgICBzcGxpdChzZXBhcmF0b3IsIGFsbG93RW1wdHlFbnRyaWVzLCBbJnJlc3Vs
dF0oU3RyaW5nVmlldyBpdGVtKSB7CisgICAgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3IsIGFsbG93
RW1wdHlFbnRyaWVzLCBbJnJlc3VsdF0oU3RyaW5nVmlldyBpdGVtKSB7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoaXRlbS50b1N0cmluZygpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCmluZGV4IDQzNTQ1ZjJjMmY3YjNlNjE1OGRhODliOTJkZGNlN2EwNjVmNDc4OTEuLjAwYjFk
ZDVhZTJmYzE1MTMzNWNkOTQzZWNiMWYxYjY4OWVjZTE4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuaApAQCAtMjcwLDE2ICsyNzAsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyByZXR1cm4g
U3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAgICAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBk
YXRhKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0
YSk7IH0KIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7
IH0KLQogICAgIHVzaW5nIFNwbGl0RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmdWaWV3Jik+OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBi
b29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAg
ICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29u
c3QgeyBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOyB9CisKKyAgICB2b2lkIHNwbGl0
KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7
IHNwbGl0SW50ZXJuYWwoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQorICAgIHZvaWQgc3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0
SW50ZXJuYWwoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQorICAgIHZvaWQgc3BsaXQoVUNo
YXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0IHsgc3BsaXRJ
bnRlcm5hbChzZXBhcmF0b3IsIGZhbHNlLCBmdW5jdG9yKTsgfQogICAgIFZlY3RvcjxTdHJpbmc+
IHNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29uc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gc3BsaXQo
Y29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OwogCisgICAgdm9pZCBzcGxpdFdpdGhFbXB0
eUVudHJpZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQp
IGNvbnN0IHsgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3IsIHRydWUsIHJlc3VsdCk7IH0KKyAgICB2
b2lkIHNwbGl0V2l0aEVtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+
JiByZXN1bHQpIGNvbnN0IHsgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3IsIHRydWUsIHJlc3VsdCk7
IH0KKyAgICB2b2lkIHNwbGl0V2l0aEVtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IsIGNvbnN0
IFNwbGl0RnVuY3RvciYgZnVuY3RvcikgY29uc3QgeyBzcGxpdEludGVybmFsKHNlcGFyYXRvciwg
dHJ1ZSwgZnVuY3Rvcik7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdFdpdGhFbXB0eUVudHJp
ZXMoVUNoYXIgc2VwYXJhdG9yKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdFdpdGhF
bXB0eUVudHJpZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0OworCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGludCB0b0ludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1bnNpZ25lZCB0b1VJbnRTdHJp
Y3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50NjRfdCB0b0ludDY0U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCkgY29uc3Q7CkBAIC0zNzAsNiArMzc0LDEwIEBAIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCByZW1vdmVJbnRlcm5hbChjb25zdCBD
aGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVuZEludGVybmFsKENoYXJhY3RlclR5cGUpOwogCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkg
Y29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXRJbnRlcm5hbChVQ2hhciBz
ZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIGNvbnN0IFNwbGl0RnVuY3RvciYpIGNv
bnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0SW50ZXJuYWwoVUNoYXIgc2Vw
YXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBj
b25zdDsKKwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7CiB9OwogCkBAIC01MzUsMTQg
KzU0MywyOCBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElO
RSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZVdpdGhMaXRlcgogaW5saW5lIFZlY3RvcjxTdHJpbmc+
IFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdAogewogICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKLSAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAgIHNw
bGl0SW50ZXJuYWwoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBpbmxpbmUgVmVjdG9yPFN0cmluZz4gU3RyaW5nOjpzcGxpdChjb25zdCBTdHJpbmcm
IHNlcGFyYXRvcikgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgc3Bs
aXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKKyAgICBzcGxpdEludGVybmFsKHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5lIFZlY3Rv
cjxTdHJpbmc+IFN0cmluZzo6c3BsaXRXaXRoRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikg
Y29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgc3BsaXRJbnRlcm5hbChz
ZXBhcmF0b3IsIHRydWUsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5l
IFZlY3RvcjxTdHJpbmc+IFN0cmluZzo6c3BsaXRXaXRoRW1wdHlFbnRyaWVzKGNvbnN0IFN0cmlu
ZyYgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBz
cGxpdEludGVybmFsKHNlcGFyYXRvciwgdHJ1ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDIz
MTM1YzFhMTg2MTExZGVlZGRhZjVmNGM1YjMyOTAzN2ZkNWVhNDguLjM4ZDVhNjYwOGJkNWY0ZDQ4
ODg4MTI2ZjliNThmMjAyZDk3MDIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1Jl
c3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZShjb25zdCBGZXRjaFJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICBhdXRvIHZhcnlWYWx1ZSA9IHJlc3BvbnNlLmhlYWRlcnMoKS5pbnRlcm5hbEhlYWRl
cnMoKS5nZXQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OlZhcnkpOwogICAgIGJvb2wgaGFzU3Rh
ciA9IGZhbHNlOwotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmll
dyB2aWV3KSB7CisgICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykg
ewogICAgICAgICBpZiAoIWhhc1N0YXIgJiYgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3Bh
Y2VzKHZpZXcpID09ICIqIikKICAgICAgICAgICAgIGhhc1N0YXIgPSB0cnVlOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRl
eCA0OTEyOGM2NGU5ODczMTE0OGUzNTEyZWI5MTY5NTBmY2QzOGY0ZjA3Li4xYmZiZGE3NGM2NzM3
NmYxN2VhZWMyMTQ1YzhiOGI2NzkxN2JkZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIHF1ZXJ5
Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgY2FjaAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgaXNWYXJ5aW5n
ID0gZmFsc2U7Ci0gICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3
IHZpZXcpIHsKKyAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7
CiAgICAgICAgIGlmIChpc1ZhcnlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1
dG8gbmFtZVZpZXcgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXModmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjEzZGFmMDhhMjAwMWZkNmU5YmVmNmU3NWQ3N2Zl
MTQ4YjcyZDdmNy4uZjVlOTkzMTNkODI4YzcxOGM1ZjU5M2I5YmJkMTlmMGEwMzlhMDEyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0YXRpYyBTdHJpbmcg
ZmlsdGVySUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCkKICAgICBib29sIHNraXBOZXh0SXRlbSA9
IGZhbHNlOwogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgU3RyaW5nQnVpbGRlciBmaWx0
ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQoJyAnLCBmYWxzZSwgWyZdKFN0cmluZ1ZpZXcgaXRlbSkg
eworICAgIHNkcC5zcGxpdCgnICcsIFsmXShTdHJpbmdWaWV3IGl0ZW0pIHsKICAgICAgICAgaWYg
KHNraXBOZXh0SXRlbSkgewogICAgICAgICAgICAgc2tpcE5leHRJdGVtID0gZmFsc2U7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC00MTIsNyArNDEyLDcgQEAgU3RyaW5nIFBlZXJDb25uZWN0aW9u
QmFja2VuZDo6ZmlsdGVyU0RQKFN0cmluZyYmIHNkcCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoc2RwKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNw
bGl0KCdcbicsIGZhbHNlLCBbJmZpbHRlcmVkU0RQXShTdHJpbmdWaWV3IGxpbmUpIHsKKyAgICBz
ZHAuc3BsaXQoJ1xuJywgWyZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7CiAgICAgICAg
IGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRpZGF0ZSIpKQogICAgICAgICAgICAgZmlsdGVy
ZWRTRFAuYXBwZW5kKGxpbmUpOwogICAgICAgICBlbHNlIGlmIChsaW5lLmZpbmQoIiBob3N0ICIs
IDExKSA9PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAwZTE4M2Zk
MTE3ZjcxY2M2OTc4YTBhYWEzNzZkYzUzZjA2MTQ3Y2M2Li4zMmFjZGY1Nzc5OGVhZWIxZTY5YTNk
OGQ2NzNiMzQzMmIzMDRiNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05MzQs
NyArOTM0LDcgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVy
Tm9kZSYgcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICBBU1NFUlQoc3RyaW5nLmZp
bmQoJ1xuJykgPT0gbm90Rm91bmQpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdGFiTGlzdDsKLSAg
ICBzdHJpbmcuc3BsaXQoJ1x0JywgdHJ1ZSwgdGFiTGlzdCk7CisgICAgc3RyaW5nLnNwbGl0V2l0
aEVtcHR5RW50cmllcygnXHQnLCB0YWJMaXN0KTsKICAgICBTdHJpbmcgdGFiVGV4dCA9IGVtcHR5
U3RyaW5nKCk7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6ZV90IG51bUVudHJpZXMg
PSB0YWJMaXN0LnNpemUoKTsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgYm9vbCB1c2VMaW5lQnJlYWsgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wo
Y29udGV4dC5zdGFydFBvc2l0aW9uKCkpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGlzdDsKLSAg
ICBzdHJpbmcuc3BsaXQoJ1xuJywgdHJ1ZSwgbGlzdCk7IC8vIHRydWUgZ2V0cyB1cyBlbXB0eSBz
dHJpbmdzIGluIHRoZSBsaXN0CisgICAgc3RyaW5nLnNwbGl0V2l0aEVtcHR5RW50cmllcygnXG4n
LCBsaXN0KTsKICAgICBzaXplX3QgbnVtTGluZXMgPSBsaXN0LnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bUxpbmVzOyArK2kpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBz
ID0gbGlzdFtpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAKaW5kZXggMGE4
NDMzOTVhMGQ2OWNlYzczNjgwMjVhY2NhN2E3YTBhZDMxMDdkMC4uMTkzNzE4YWIyN2RiOWM0NGJi
ZDI0MWY5YjcwZmZiZWM2OTgwMThjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9F
bWFpbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlw
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYm9vbCBFbWFpbElucHV0VHlwZTo6dHlwZU1pc21hdGNo
Rm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KCktPm11bHRp
cGxlKCkpCiAgICAgICAgIHJldHVybiAhaXNWYWxpZEVtYWlsQWRkcmVzcyh2YWx1ZSk7CiAgICAg
VmVjdG9yPFN0cmluZz4gYWRkcmVzc2VzOwotICAgIHZhbHVlLnNwbGl0KCcsJywgdHJ1ZSwgYWRk
cmVzc2VzKTsKKyAgICB2YWx1ZS5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJywnLCBhZGRyZXNzZXMp
OwogICAgIGZvciAoYXV0byYgYWRkcmVzcyA6IGFkZHJlc3NlcykgewogICAgICAgICBpZiAoIWlz
VmFsaWRFbWFpbEFkZHJlc3Moc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGFkZHJl
c3MpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAyLDcgKzEwMiw3IEBAIFN0cmlu
ZyBFbWFpbElucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFs
dWUpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KCktPm11bHRpcGxlKCkpCiAgICAgICAgIHJldHVy
biBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobm9MaW5lQnJlYWtWYWx1ZSk7CiAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkcmVzc2VzOwotICAgIG5vTGluZUJyZWFrVmFsdWUuc3BsaXQo
JywnLCB0cnVlLCBhZGRyZXNzZXMpOworICAgIG5vTGluZUJyZWFrVmFsdWUuc3BsaXRXaXRoRW1w
dHlFbnRyaWVzKCcsJywgYWRkcmVzc2VzKTsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmlwcGVkVmFs
dWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFkZHJlc3Nlcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAoaSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA4ZTU4NGQ5ODU1MDkyOTBiYmNiNzJlODI2MDdmOWMzMGU4MTNmZDhkLi45MTE1
ZjVjMjlmYjJlMGI4MmYyNjI4NjE1N2MwNDIwYWMxY2FhNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyNzksNyArMTI3OSw3IEBAIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBwYXJzZUFjY2VwdEF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGFjY2VwdFN0cmlu
ZywgYm9vbCAoKnByCiAgICAgICAgIHJldHVybiB0eXBlczsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHNwbGl0VHlwZXM7Ci0gICAgYWNjZXB0U3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIHNwbGl0VHlw
ZXMpOworICAgIGFjY2VwdFN0cmluZy5zcGxpdCgnLCcsIHNwbGl0VHlwZXMpOwogICAgIGZvciAo
YXV0byYgc3BsaXRUeXBlIDogc3BsaXRUeXBlcykgewogICAgICAgICBTdHJpbmcgdHJpbW1lZFR5
cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoc3BsaXRUeXBlKTsKICAgICAg
ICAgaWYgKHRyaW1tZWRUeXBlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNDcyMjk4YmYzNGJk
MTkyYzEzOGUyYzE4YTVhZDA2ZTQxNDY0YjBlMy4uNWRhMTliNWEyYzE0ZGQ2ZWM0ODkxNjE0M2Zk
MDNjYzVmNjE0ZjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTIyOTYsNyArMjI5Niw3IEBAIE5vZGUqIElu
c3BlY3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAKICAgICBO
b2RlKiBub2RlID0gbV9kb2N1bWVudC5nZXQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoVG9r
ZW5zOwotICAgIHBhdGguc3BsaXQoJywnLCBmYWxzZSwgcGF0aFRva2Vucyk7CisgICAgcGF0aC5z
cGxpdCgnLCcsIHBhdGhUb2tlbnMpOwogICAgIGlmICghcGF0aFRva2Vucy5zaXplKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dp
bmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
CmluZGV4IGMzZmM5OTNmZDIyNWI4YzY3ZjZkZjkxNDBlZTcwYzY1OTJhOTEwOTMuLmY4ZjY3Y2Jh
ZGVkY2M1YmNlNzJjMWM5NzllY2M4Y2RlZWNlZDkzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2lu
ZG93RmVhdHVyZXMuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgT3B0aW9uU2V0PERpc2FibGVkQWRh
cHRhdGlvbnM+IHBhcnNlRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBTdHJpbmcmIGRpc2FibGVk
QWQKIHsKICAgICBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9ucz4gZGlzYWJsZWRBZGFwdGF0
aW9uczsKICAgICBWZWN0b3I8U3RyaW5nPiBkaXNhYmxlZEFkYXB0YXRpb25OYW1lczsKLSAgICBk
aXNhYmxlZEFkYXB0YXRpb25zU3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIGRpc2FibGVkQWRhcHRh
dGlvbk5hbWVzKTsKKyAgICBkaXNhYmxlZEFkYXB0YXRpb25zU3RyaW5nLnNwbGl0KCcsJywgZGlz
YWJsZWRBZGFwdGF0aW9uTmFtZXMpOwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRpc2FibGVkQWRh
cHRhdGlvbk5hbWVzKSB7CiAgICAgICAgIGF1dG8gbm9ybWFsaXplZE5hbWUgPSBuYW1lLnN0cmlw
V2hpdGVTcGFjZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgICAgIGlmIChub3Jt
YWxpemVkTmFtZSA9PSB3YXRjaEFkYXB0YXRpb25OYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNw
cAppbmRleCBjOTlkZTEwZjVlNDcyNTRlNzQzZDM2ZWU5NmEwMzc4OTM0ZTZmMjVmLi4zMzA5MWM0
ZTBlMDRkMDQzOTE5Y2E2ODQzNjNjZTBjY2MyYTQ1MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAKQEAgLTEwNjYsNyArMTA2Niw3IEBAIHN0YXRpYyBib29sIGlzSVB2NEFkZHJlc3MoU3RyaW5n
VmlldyBzdHJpbmcpCiB7CiAgICAgYXV0byBjb3VudCA9IDA7CiAKLSAgICBmb3IgKGNvbnN0IGF1
dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXQoJy4nLCBTdHJpbmdWaWV3OjpBbGxvd0VtcHR5RW50cmll
cykpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gb2N0ZXQgOiBzdHJpbmcuc3BsaXRXaXRoRW1wdHlF
bnRyaWVzKCcuJykpIHsKICAgICAgICAgaWYgKGNvdW50ID49IDQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBib29sIGlzSVB2NkFkZHJl
c3MoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgYXV0byBza2lwU3RhdGUgPSBOb25lOwogICAgIGF1
dG8gY291bnQgPSAwOwogCi0gICAgZm9yIChjb25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5zcGxp
dCgnOicsIFN0cmluZ1ZpZXc6OkFsbG93RW1wdHlFbnRyaWVzKSkgeworICAgIGZvciAoY29uc3Qg
YXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRXaXRoRW1wdHlFbnRyaWVzKCc6JykpIHsKICAgICAg
ICAgaWYgKGNvdW50ID49IDggfHwgc2tpcFN0YXRlID09IEZpbmFsKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGY2NjhlNzczM2Ix
NTFmMjc4MWVhNmM4OTNiYmJkY2NjZTY0MjI0MmQuLjYyMzUzZTRmM2U2ODQ3ZjlmMGNlZDM1ZGUy
NDZiMDUxYTgyZGQ5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNDYsNyAr
MjQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gZXh0cmFjdEdTdHJlYW1lck9wdGlvbnNGcm9tQ29tbWFu
ZExpbmUoKQogCiAgICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKICAgICBhdXRvIG9wdGlvbnNT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnRzLmdldCgpLCBsZW5ndGgpOwotICAgIG9w
dGlvbnNTdHJpbmcuc3BsaXQoJ1wwJywgZmFsc2UsIFsmb3B0aW9uc10oU3RyaW5nVmlldyBpdGVt
KSB7CisgICAgb3B0aW9uc1N0cmluZy5zcGxpdCgnXDAnLCBbJm9wdGlvbnNdKFN0cmluZ1ZpZXcg
aXRlbSkgewogICAgICAgICBpZiAoaXRlbS5zdGFydHNXaXRoKCItLWdzdCIpKQogICAgICAgICAg
ICAgb3B0aW9ucy5hcHBlbmQoaXRlbS50b1N0cmluZygpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNzFmMTc2ZmQ3
MzBjNGRhOTFlODUxY2VhM2IwMTRiMjUyYzA2OTQ0Yy4uMDVhYTYxMWJlMWY1Y2VlMzAyMTgyYmFm
OTczN2YzOThmOGYyNTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKQEAgLTc3OCw3ICs3NzgsNyBAQCBzaXplX3QgcGFyc2VIVFRQUmVx
dWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVuc2lnbmVk
IGNoYQogdm9pZCBwYXJzZUFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzQWxsb3dMaXN0KGNvbnN0
IFN0cmluZyYgaGVhZGVyVmFsdWUsIEhUVFBIZWFkZXJTZXQmIGhlYWRlclNldCkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiBoZWFkZXJzOwotICAgIGhlYWRlclZhbHVlLnNwbGl0KCcsJywgZmFsc2Us
IGhlYWRlcnMpOworICAgIGhlYWRlclZhbHVlLnNwbGl0KCcsJywgaGVhZGVycyk7CiAgICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBoZWFkZXJzKSB7CiAgICAgICAgIFN0cmluZyBzdHJpcHBlZEhlYWRl
ciA9IGhlYWRlci5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKCFzdHJpcHBlZEhlYWRl
ci5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAKaW5kZXggZDYyZmRiZDg5Y2U5NWNmMjY5MWFiNDBmNzNjNThkZjMx
YzhmY2MwOC4uMTJiOGE1YTJhZWZjZWJlY2JmNTcwMzc1OGEzNjQwZTM4NzdhYzI3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNw
cApAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5n
JiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgQ29va2llJiByCiAgICAgcmVzdWx0
LnNlc3Npb24gPSB0cnVlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29va2llQXR0cmlidXRlczsK
LSAgICBjb29raWVMaW5lLnNwbGl0KCc7JywgdHJ1ZSwgY29va2llQXR0cmlidXRlcyk7CisgICAg
Y29va2llTGluZS5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJzsnLCBjb29raWVBdHRyaWJ1dGVzKTsK
ICAgICBmb3IgKGF1dG8gYXR0cmlidXRlIDogY29va2llQXR0cmlidXRlcykKICAgICAgICAgcGFy
c2VDb29raWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZSwgZG9tYWluLCBoYXNNYXhBZ2UsIHJlc3VsdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xp
Yi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCmlu
ZGV4IDk3MWNhZjFjNjY0NTQ1NzcyMzk5MDJmZDhiZWNiNTMwMWIzODgxNDMuLmY5YzNiZWZjNDJl
NmI1MGI3ZDI1ZTg0YTk1Njc5YmNiMGE2YzJmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2
ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9n
bGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgYm9v
bCBwYXJzZVZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCB1aW50NjRfdCYgbWFqb3IsIHVp
bnQ2NF90JiBtaW5vcgogICAgIG1ham9yID0gbWlub3IgPSBtaWNybyA9IDA7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiB0b2tlbnM7Ci0gICAgdmVyc2lvbi5zcGxpdCgiLiIsIGZhbHNlLCB0b2tlbnMp
OworICAgIHZlcnNpb24uc3BsaXQoIi4iLCB0b2tlbnMpOwogICAgIGJvb2wgb2s7CiAgICAgc3dp
dGNoICh0b2tlbnMuc2l6ZSgpKSB7CiAgICAgY2FzZSAzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcAppbmRleCBhYzhiYmMyZGJlNGE4ZmVmODIyYTU1Y2VmOWVjODM0ZmI1MjJlOGVlLi42OTE1
NWZmMjA5MzMxZTZiMWQ1ZTNmZDIyNWZmYjBlNGI1MDdiNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlVmFy
eUluZm9ybWF0aW9uKFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgYwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgZmFsc2UsIFsm
XShTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBbJl0oU3RyaW5n
VmlldyB2aWV3KSB7CiAgICAgICAgIGlmICghcmVjb3JkSW5mb3JtYXRpb24uaGFzVmFyeVN0YXIg
JiYgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpID09ICIqIikKICAgICAg
ICAgICAgIHJlY29yZEluZm9ybWF0aW9uLmhhc1ZhcnlTdGFyID0gdHJ1ZTsKICAgICAgICAgU3Ry
aW5nIGhlYWRlck5hbWUgPSB2aWV3LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZVVuaXguY3BwCmluZGV4IGY5ZWIwNmUxNjE3YzVjNTQ4OTZkZTBiODM1N2E1
ZGM5M2U0NDAxMjYuLmIxZTcyNjYyNjI0MzIzOGEzZTdlMTdiMTA4YmJkNzVlMjY3ZjI4MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCkBAIC03NSwxMyAr
NzUsMTMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6cGFyc2VNSU1FRGVzY3JpcHRpb24o
Y29uc3QgU3RyaW5nJiBtaW1lRGVzY3JpcHRpb24sIFYKICAgICBBU1NFUlRfQVJHKHJlc3VsdCwg
cmVzdWx0LmlzRW1wdHkoKSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBtaW1l
RGVzY3JpcHRpb24uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdChVQ2hhcignOycpLCBm
YWxzZSwgdHlwZXMpOworICAgIG1pbWVEZXNjcmlwdGlvbi5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpLnNwbGl0KFVDaGFyKCc7JyksIHR5cGVzKTsKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSh0eXBlcy5zaXplKCkpOwogCiAgICAgc2l6ZV90IG1pbWVJbmZvQ291bnQgPSAwOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gbWltZVR5cGVQYXJ0czsKLSAgICAgICAgdHlwZXNbaV0uc3BsaXQoVUNo
YXIoJzonKSwgdHJ1ZSwgbWltZVR5cGVQYXJ0cyk7CisgICAgICAgIHR5cGVzW2ldLnNwbGl0V2l0
aEVtcHR5RW50cmllcyhVQ2hhcignOicpLCBtaW1lVHlwZVBhcnRzKTsKICAgICAgICAgaWYgKG1p
bWVUeXBlUGFydHMuc2l6ZSgpIDw9IDApCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtOTAs
NyArOTAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXJzZU1JTUVEZXNjcmlwdGlv
bihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgVgogICAgICAgICBtaW1lSW5mby50eXBl
ID0gbWltZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkg
PiAxKQotICAgICAgICAgICAgbWltZVR5cGVQYXJ0c1sxXS5zcGxpdChVQ2hhcignLCcpLCBmYWxz
ZSwgbWltZUluZm8uZXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBtaW1lVHlwZVBhcnRzWzFdLnNw
bGl0KFVDaGFyKCcsJyksIG1pbWVJbmZvLmV4dGVuc2lvbnMpOwogCiAgICAgICAgIGlmIChtaW1l
VHlwZVBhcnRzLnNpemUoKSA+IDIpCiAgICAgICAgICAgICBtaW1lSW5mby5kZXNjID0gbWltZVR5
cGVQYXJ0c1syXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFBy
b2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
CmluZGV4IDRlMzRjYzUyODc5MjVmMTRmYzdlMTNiNTEyOTlhYzQyMmE0YzZlNTkuLjY4MGEwYzhh
MmRkOWM1MmUzNDgzYWU3ZjQ2OGFhYTFmYWNiOWNjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlCiAKICAgICBWZWN0b3I8U3RyaW5nPiBvc1ZlcnNpb25QYXJ0czsKICAgICBT
dHJpbmcgb3NTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uID0gc3lzdGVtTWFya2V0aW5nVmVyc2lvbigp
OwotICAgIG9zU3lzdGVtTWFya2V0aW5nVmVyc2lvbi5zcGxpdCgnLicsIGZhbHNlLCBvc1ZlcnNp
b25QYXJ0cyk7CisgICAgb3NTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uLnNwbGl0KCcuJywgb3NWZXJz
aW9uUGFydHMpOwogICAgIGlmIChvc1ZlcnNpb25QYXJ0cy5zaXplKCkgPCAyKSB7CiAgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkbid0IGZpbmQgT1MgVmVyc2lvblxuIiwgZ2V0cHJvZ25h
bWUoKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5k
ZXggNzc4NzhhYWE3M2Y5ODJhYzJhMGQyOTJjMDFjNWY1ZDJkMjZmYTRkNy4uMGIyMWMzNDhjNWE3
MzZiYzIzMGFmOTQ5MDIwZTAzNDEwNjBhN2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAg
LTgwNyw3ICs4MDcsNyBAQCBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cgogCiAgICAgLy8gRmFsbCBi
YWNrIHRvIGNoZWNraW5nIGZvciBhIE1JTUUgdHlwZSB3aWxkY2FyZCBpZiBhbiBleGFjdCBtYXRj
aCBpcyBub3QgZm91bmQuCiAgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50czsKLSAgICBtYXBw
ZWRNSU1FVHlwZS5zcGxpdCgnLycsIGZhbHNlLCBjb21wb25lbnRzKTsKKyAgICBtYXBwZWRNSU1F
VHlwZS5zcGxpdCgnLycsIGNvbXBvbmVudHMpOwogICAgIGlmIChjb21wb25lbnRzLnNpemUoKSAh
PSAyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCmluZGV4IDVl
NDBmMjZlNmMyNDQ4MzFlNDQ5NDI2YzIxYzJkZTM5ODY4M2RmYzIuLmFkZjQwZTcyMjUyNjBlZjMy
ZjQzOTVlNGQ0YTY5M2U3ZmNhMmFlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQpAQCAtMTI5LDcg
KzEyOSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICBpZiAo
bGFuZ3VhZ2VzSXRlcmF0b3IgIT0gbV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmVuZCgpKSB7CiAgICAgICAgIGF1dG8gbGFuZ3VhZ2VzID0gYWRvcHRPU09iamVjdCh4cGNf
YXJyYXlfY3JlYXRlKG51bGxwdHIsIDApKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3Vh
Z2VWZWN0b3I7Ci0gICAgICAgIGxhbmd1YWdlc0l0ZXJhdG9yLT52YWx1ZS5zcGxpdCgiLCIsIGZh
bHNlLCBsYW5ndWFnZVZlY3Rvcik7CisgICAgICAgIGxhbmd1YWdlc0l0ZXJhdG9yLT52YWx1ZS5z
cGxpdCgiLCIsIGxhbmd1YWdlVmVjdG9yKTsKICAgICAgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IGxhbmd1YWdlVmVjdG9yKQogICAgICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmcobGFuZ3Vh
Z2VzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGluaXRpYWxpemF0aW9uTWVzc2FnZS5nZXQo
KSwgIk92ZXJyaWRlTGFuZ3VhZ2VzIiwgbGFuZ3VhZ2VzLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcAppbmRleCBhZjAzNDFjMDJhZDAxOWYyMmJmZGIyNjhiOTI1NzhkN2YxZjE3
MzJlLi44Y2U0ZmRiMzFiNGNkZmUzODhkYzJiYTRhOTIwOTM0ZTg3MWExNGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBQbHVnaW5Qcm9j
ZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5N
ZXRhRGF0YSYKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBsaW5lczsKLSAgICBTdHJpbmc6
OmZyb21VVEY4KHN0ZE91dC5nZXQoKSkuc3BsaXQoVUNoYXIoJ1xuJyksIHRydWUsIGxpbmVzKTsK
KyAgICBTdHJpbmc6OmZyb21VVEY4KHN0ZE91dC5nZXQoKSkuc3BsaXRXaXRoRW1wdHlFbnRyaWVz
KFVDaGFyKCdcbicpLCBsaW5lcyk7CiAKICAgICBpZiAobGluZXMuc2l6ZSgpIDwgMykgewogICAg
ICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHNjYW5uaW5nIHBsdWdpbiAlcywgdG9vIGZldyBsaW5l
cyBvZiBvdXRwdXQgcHJvdmlkZWQiLCBhcmd2WzJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MTg1OWI4M2EzZjI2YjliZmM5OGQ1NWYzMjI3
ZDhjNGNhYjAzOTU2Li5hYjE3MGQwZWZmOTVkNWU1ZmFiYTA5NjVmN2VmNzU2M2VkMjQwNzc4IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTgtMDctMjQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFN0cmluZyhWaWV3KSBzaG91bGQgaGF2ZSBhIHNwbGl0V2l0aEVtcHR5
RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBTdHJpbmc6OnNwbGl0
IGFuZCBTdHJpbmc6OnNwbGl0V2l0aEVtcHR5RW50cmllcy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRXaXRoRW1w
dHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3LTI0ICBUaGliYXVsdCBTYXVuaWVyICA8dHNhdW5p
ZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBha10gQWRkIG9wZW5oMjY0IGFzIG5lZWRl
ZCBieSBXZWJSVEMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5j
cHAKaW5kZXggYzhiYjExNDAxZDI0YWQxN2Q1MzBhYmU5NmEwYWVkYzA3ZTQ3MjJlMy4uODNiODQ4
MmYyY2E1YjEzNGQ3ZTk0MmRkZWNhZDNjOTc4ZThmN2ZmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBURVNUKFdU
RiwgU3RyaW5nVmlld1NwbGl0V2l0aENvbnNlY3V0aXZlU2VwYXJhdG9ycykKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKICAgICAgICAgRVhQRUNUX1NUUkVR
KGV4cGVjdGVkW2ldLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFtpXS51dGY4KCkuZGF0YSgpKSA8PCAi
VmVjdG9ycyBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOwogCi0gICAgYWN0dWFsID0gdmVjdG9yRnJv
bVNwbGl0UmVzdWx0KGEuc3BsaXQoJyAnLCBTdHJpbmdWaWV3OjpBbGxvd0VtcHR5RW50cmllcykp
OworICAgIGFjdHVhbCA9IHZlY3RvckZyb21TcGxpdFJlc3VsdChhLnNwbGl0V2l0aEVtcHR5RW50
cmllcygnICcpKTsKICAgICBleHBlY3RlZCA9IHsgIiIsICJUaGlzIiwgIiIsICIiLCAiIiwgIiIs
ICJpcyIsICIiLCAiYSIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICJzZW50ZW5jZS4iLCAiIiB9
OwogICAgIEFTU0VSVF9FUShleHBlY3RlZC5zaXplKCksIGFjdHVhbC5zaXplKCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYWN0dWFsLnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggNWNiNmM3NmU2YzNiZDRmMjk3MDg2
NzllNzc1YTcxODM1MTk0NDc5Mi4uZTg2M2NiYTRiNWJkZjg0NjIyZDMyOWYxMDc2MTE0NTkyYWU1
YmQ5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5n
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCkBA
IC00OTksNCArNDk5LDIxIEBAIFRFU1QoV1RGLCBTdHJpbmdGb3JtYXRXaXRoQXJndW1lbnRzKQog
ICAgIHRlc3RXaXRoRm9ybWF0QW5kQXJndW1lbnRzKCJoZWxsbyAtMTc4OTAuNSB3b3JsZCIsICIl
cyAlLjFmICVzIiwgImhlbGxvIiwgLTE3ODkwLjUsICJ3b3JsZCIpOwogfQogCitURVNUKFdURiwg
U3RyaW5nU3BsaXRXaXRoQ29uc2VjdXRpdmVTZXBhcmF0b3JzKQoreworICAgIFN0cmluZyBzdHJp
bmcgeyAiIFRoaXMgICAgIGlzICBhICAgICAgIHNlbnRlbmNlLiAiIH07CisKKyAgICBWZWN0b3I8
U3RyaW5nPiBhY3R1YWwgeyBzdHJpbmcuc3BsaXQoJyAnKSB9OworICAgIFZlY3RvcjxTdHJpbmc+
IGV4cGVjdGVkIHsgIlRoaXMiLCAiaXMiLCAiYSIsICJzZW50ZW5jZS4iIH07CisgICAgQVNTRVJU
X0VRKGV4cGVjdGVkLnNpemUoKSwgYWN0dWFsLnNpemUoKSk7CisgICAgZm9yIChhdXRvIGkgPSAw
dTsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVk
W2ldLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFtpXS51dGY4KCkuZGF0YSgpKSA8PCAiVmVjdG9ycyBk
aWZmZXIgYXQgaW5kZXggIiA8PCBpOworCisgICAgYWN0dWFsID0gc3RyaW5nLnNwbGl0V2l0aEVt
cHR5RW50cmllcygnICcpOworICAgIGV4cGVjdGVkID0geyAiIiwgIlRoaXMiLCAiIiwgIiIsICIi
LCAiIiwgImlzIiwgIiIsICJhIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgInNlbnRlbmNlLiIs
ICIiIH07CisgICAgQVNTRVJUX0VRKGV4cGVjdGVkLnNpemUoKSwgYWN0dWFsLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQ
RUNUX1NUUkVRKGV4cGVjdGVkW2ldLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFtpXS51dGY4KCkuZGF0
YSgpKSA8PCAiVmVjdG9ycyBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDNlYTNjMGE1OGU4ODgwYTA4YjA1ZGVmYTllYjA5Y2MwMTYwNTI1ZTYuLjY1ODFl
OGNiZGRmYzBhZWU0ZTE1M2UxMzhiOWU5ZjNlMzJkYjUxNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RPcHRpb25zJiB0ZXN0T3B0aW9u
cywgY29uc3Qgc3RkOgogICAgICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3RyKHBhaXJT
dGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwogICAgICAgICBhdXRvIHZhbHVlID0g
cGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVxdWFsc0xv
Y2F0aW9uICsgMSkpOwogICAgICAgICBpZiAoa2V5ID09ICJsYW5ndWFnZSIpCi0gICAgICAgICAg
ICBTdHJpbmcodmFsdWUuY19zdHIoKSkuc3BsaXQoIiwiLCBmYWxzZSwgdGVzdE9wdGlvbnMub3Zl
cnJpZGVMYW5ndWFnZXMpOworICAgICAgICAgICAgU3RyaW5nKHZhbHVlLmNfc3RyKCkpLnNwbGl0
KCIsIiwgdGVzdE9wdGlvbnMub3ZlcnJpZGVMYW5ndWFnZXMpOwogICAgICAgICBlbHNlIGlmIChr
ZXkgPT0gInVzZVRocmVhZGVkU2Nyb2xsaW5nIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLnVz
ZVRocmVhZGVkU2Nyb2xsaW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
ICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VBY2NlbGVyYXRlZERyYXdpbmciKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345730</attachid>
            <date>2018-07-24 17:32:35 -0700</date>
            <delta_ts>2018-07-24 20:53:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187963-20180724173234.patch</filename>
            <type>text/plain</type>
            <size>36228</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MmExZDkxZGI4MTBmOGY2YzBhMDU0Y2ZiYTI5NDkxYTExM2IwNzNiLi4wOTdkNjkwMzI2MTM2YTM2
OGZmNjYzMjFiMTM1Njk4YTA3MDUxZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRXaXRoRW1w
dHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChNb2R1bGVO
YW1lOjpNb2R1bGVOYW1lKToKKyAgICAgICAgKHJlc29sdmVQYXRoKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjYW5vbmljYWxpemVMYW5ndWFnZVRh
Zyk6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdFdpdGhFbXB0eUVudHJpZXMgdXNhZ2UuCisK
IDIwMTgtMDctMjMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
bmVlZCB0byBkaWRGb2xkQ2xvYmJlcldvcmxkIHdoZW4gd2UgY29uc3RhbnQgZm9sZCBHZXRCeVZh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCAwY2Y1MGEzYmRjYjQ3NTA5ZjNhMzVlNDkwYTEzYzc2NGNjM2ZiNzFmLi44ZDZkNTJm
MzY3M2FlNzRkN2RjYWNlZDBkNmUwMjAzMDE4ZDBkZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE4LTA3LTI0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBTdHJpbmcoVmlldykgc2hvdWxkIGhhdmUgYSBzcGxpdFdpdGhFbXB0eUVudHJpZXMgZnVu
Y3Rpb24gaW5zdGVhZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nVmlldzo6c3BsaXRXaXRoRW1wdHlFbnRyaWVzIGNvbnN0KToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0
SW50ZXJuYWwgY29uc3QpOiBSZW5hbWVkIGZyb20gc3BsaXQuCisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6c3BsaXQgY29uc3QpOgorICAgICAg
ICAoV1RGOjpTdHJpbmc6OnNwbGl0V2l0aEVtcHR5RW50cmllcyBjb25zdCk6CisgICAgICAgIElu
dHJvZHVjZSBzcGxpdFdpdGhFbXB0eUVudHJpZXMgaW5zdGVhZCBvZiBib29sZWFuIG9yIGVudW0g
cGFyYW1ldGVyLgorCiAyMDE4LTA3LTI0ICBUaGliYXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBJbXBsZW1lbnQgYml0cmF0ZSBtb2R1bGF0
aW9uIHN1cHBvcnQgaW4gR1N0cmVhbWVyIGJhc2VkIGxpYndlYnJ0YyBFbmNvZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQzZGRhODFkNzk5MTdlNDY0MGU0M2I1YmVhYTRlZTU2Mjc1YzViNzcuLjUzYmRkYWZk
ZWRmYWI4OWM0NmRjMTI5YzhlZjRlMDA4NmQ4YjdkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MCBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRXaXRoRW1wdHlFbnRy
aWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1ZSk6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6cXVlcnlDYWNoZU1hdGNoKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpmaWx0ZXJJQ0VDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpmaWx0ZXJTRFAgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxDb250YWluZXJGcm9tU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbVRleHQpOgorICAgICAgICAqIGh0bWwvRW1haWxJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OnR5cGVNaXNt
YXRjaEZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6c2FuaXRp
emVWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQWNjZXB0QXR0cmlidXRlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojpub2RlRm9yUGF0aCk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0lQdjRBZGRyZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzSVB2NkFkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEdTdHJlYW1lck9wdGlvbnNGcm9tQ29tbWFuZExpbmUpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VB
Y2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyc0FsbG93TGlzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRp
bDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRXaXRoRW1w
dHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYW5ub3QgdmlldyBQREYncyBvbiBteS5nb3YuYXU6ICJSZWZ1
c2VkIHRvIGxvYWQgaHR0cHM6Ly9teS5nb3YuYXUvYXR0YWNobWVudC92aWV3QXR0YWNobWVudCBi
ZWNhdXNlIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IGZhMjhkYjJhZDRlODA4MjM4NDE1YTI3NzM5Mzk1
MGJkZmVhMTU1OTYuLjA0YThmMzAxMmIzNzUyOTRmM2NmZTQyNWI5ZmY5Y2NjMTYwNTliOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDctMjQgIFJvc3MgS2lyc2xpbmcg
IDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFN0cmluZyhWaWV3KSBzaG91bGQg
aGF2ZSBhIHNwbGl0V2l0aEVtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBw
YXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Nzk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OnBh
cnNlVmVyc2lvbik6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdFdpdGhFbXB0eUVudHJpZXMg
dXNhZ2UuCisKIDIwMTgtMDctMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIC0taG9zdCBvcHRpb24gdG8gV2ViRHJp
dmVyIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDYyNmYwMGViMDM4OTIwZGU4M2RmNzZhMTFiYWNhYmVk
MzE1NGU0My4uNmUwOWNhYTI5ZjQ0ZDZkNDQwNjRhZTYwZmU2MzYzZDk1YThlMTUxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3Bs
aXRXaXRoRW1wdHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6dXBkYXRlVmFyeUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXJzZU1JTUVEZXNjcmlwdGlv
bik6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6cGx1Z2luc0RpcmVjdG9yaWVzKQorICAgICAgICAqIFNoYXJlZC9t
YWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplU2FuZGJv
eFBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxv
YWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6Cisg
ICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdFdpdGhFbXB0eUVudHJpZXMgdXNhZ2UuCisKIDIwMTgt
MDctMjQgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAg
IFtXaW5DYWlyb10gQWRkIHN1cHBvcnQgdG8gV2ViVmlldyBmb3Igc2V0dGluZyB0b29sdGlwcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCA5OWVjMjdhMDNmOGRkMDQ4MTE3MzkyYjcy
YzY2OGRiYjVlYmNmZTliLi5jMTgxMjYwNWI0MTI5MzA2ZDgzMTI4NzA5NzcwZWQ0ZDczN2RjNzE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQg
QmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAg
ICAgfQogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbkFuZE1ldGhvZDsKLSAgICAgICAg
bWV0aG9kU3RyaW5nLnNwbGl0KCcuJywgdHJ1ZSwgZG9tYWluQW5kTWV0aG9kKTsKKyAgICAgICAg
bWV0aG9kU3RyaW5nLnNwbGl0V2l0aEVtcHR5RW50cmllcygnLicsIGRvbWFpbkFuZE1ldGhvZCk7
CiAgICAgICAgIGlmIChkb21haW5BbmRNZXRob2Quc2l6ZSgpICE9IDIgfHwgIWRvbWFpbkFuZE1l
dGhvZFswXS5sZW5ndGgoKSB8fCAhZG9tYWluQW5kTWV0aG9kWzFdLmxlbmd0aCgpKSB7CiAgICAg
ICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiVGhlICdtZXRob2Qn
IHByb3BlcnR5IHdhcyBmb3JtYXR0ZWQgaW5jb3JyZWN0bHkuIEl0IHNob3VsZCBiZSAnRG9tYWlu
Lm1ldGhvZCciX3MpOwogICAgICAgICAgICAgc2VuZFBlbmRpbmdFcnJvcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKaW5kZXggZGEyZTcxYzBhOTZmOGM4ZTNlZGUzNGVmNjYyNTNmZmM0YjRjM2ViOC4u
ZjFhYmRmMTk2YjQzOTQzNmJjMzY3MDU0NGU4NDNiNzgwMTQzZTZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTY4Nyw3ICs2ODcsNyBAQCBzdHJ1Y3QgTW9kdWxlTmFtZSB7CiBNb2R1bGVOYW1l
OjpNb2R1bGVOYW1lKGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSkKIHsKICAgICAvLyBBIG1vZHVs
ZSBuYW1lIGdpdmVuIGZyb20gY29kZSBpcyByZXByZXNlbnRlZCBhcyB0aGUgVU5JWCBzdHlsZSBw
YXRoLiBMaWtlLCBgLi9BL0IuanNgLgotICAgIG1vZHVsZU5hbWUuc3BsaXQoJy8nLCB0cnVlLCBx
dWVyaWVzKTsKKyAgICBtb2R1bGVOYW1lLnNwbGl0V2l0aEVtcHR5RW50cmllcygnLycsIHF1ZXJp
ZXMpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBleHRyYWN0RGly
ZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIGFic29sdXRlUGF0aFRvRmlsZSkKQEAgLTc1MSw3ICs3
NTEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBjdXJyZW50V29ya2lu
Z0RpcmVjdG9yeSgpCiBzdGF0aWMgU3RyaW5nIHJlc29sdmVQYXRoKGNvbnN0IERpcmVjdG9yeU5h
bWUmIGRpcmVjdG9yeU5hbWUsIGNvbnN0IE1vZHVsZU5hbWUmIG1vZHVsZU5hbWUpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gZGlyZWN0b3J5UGllY2VzOwotICAgIGRpcmVjdG9yeU5hbWUucXVlcnlO
YW1lLnNwbGl0KHBhdGhTZXBhcmF0b3IoKSwgZmFsc2UsIGRpcmVjdG9yeVBpZWNlcyk7CisgICAg
ZGlyZWN0b3J5TmFtZS5xdWVyeU5hbWUuc3BsaXQocGF0aFNlcGFyYXRvcigpLCBkaXJlY3RvcnlQ
aWVjZXMpOwogCiAgICAgLy8gT25seSBmaXJzdCAnLycgaXMgcmVjb2duaXplZCBhcyB0aGUgcGF0
aCBmcm9tIHRoZSByb290LgogICAgIGlmIChtb2R1bGVOYW1lLnN0YXJ0c1dpdGhSb290KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGExZWFl
MjJiNjliODdmODc1NmIxN2FlYmU0NDI0OTBjY2IwYmE5M2MuLjhiNDM5NDBhOGVhNzA5ZTMwYTRm
ZjI0ZDcyZDJkMWMwMzJiMTZiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgc3RhdGljIFN0cmluZyBjYW5vbmlj
YWxpemVMYW5ndWFnZVRhZyhjb25zdCBTdHJpbmcmIGxvY2FsZSkKICAgICAgICAgcmV0dXJuIGdy
YW5kZmF0aGVyOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcGFydHM7Ci0gICAgbG9jYWxlLnNwbGl0
KCctJywgdHJ1ZSwgcGFydHMpOworICAgIGxvY2FsZS5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJy0n
LCBwYXJ0cyk7CiAgICAgaWYgKCFwYXJ0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIGxh
bmd0YWcgPSBjYW5vbmljYWxMYW5nVGFnKHBhcnRzKTsKICAgICAgICAgaWYgKCFsYW5ndGFnLmlz
TnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCAwMmVkNzUzNzI5OTIyYTcyZTVj
MTY4YjNjMDRhYzU3ZDc0ZDk0NzRiLi5mYzhkMzVkYmFkZmZkZTE0NjgzNTliZDhiOGY1MmFiNWNl
ODM2YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTI0LDExICsxMjQsOSBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZT4K
ICAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJhY3RlcnMo
Y29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwogCi0gICAgZW51bSBBbGxvd0VtcHR5
RW50cmllc1RhZyB7IEFsbG93RW1wdHlFbnRyaWVzIH07Ci0KICAgICBjbGFzcyBTcGxpdFJlc3Vs
dDsKICAgICBTcGxpdFJlc3VsdCBzcGxpdChVQ2hhcikgY29uc3Q7Ci0gICAgU3BsaXRSZXN1bHQg
c3BsaXQoVUNoYXIsIEFsbG93RW1wdHlFbnRyaWVzVGFnKSBjb25zdDsKKyAgICBTcGxpdFJlc3Vs
dCBzcGxpdFdpdGhFbXB0eUVudHJpZXMoVUNoYXIpIGNvbnN0OwogCiAgICAgc2l6ZV90IGZpbmQo
VUNoYXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVu
aXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwpAQCAtOTA1LDcgKzkw
Myw3IEBAIGlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvcikgY29u
c3QgLT4gU3BsaXRSZXN1bHQKICAgICByZXR1cm4gU3BsaXRSZXN1bHQgeyAqdGhpcywgc2VwYXJh
dG9yLCBmYWxzZSB9OwogfQogCi1pbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpzcGxpdChVQ2hhciBz
ZXBhcmF0b3IsIEFsbG93RW1wdHlFbnRyaWVzVGFnKSBjb25zdCAtPiBTcGxpdFJlc3VsdAoraW5s
aW5lIGF1dG8gU3RyaW5nVmlldzo6c3BsaXRXaXRoRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRv
cikgY29uc3QgLT4gU3BsaXRSZXN1bHQKIHsKICAgICByZXR1cm4gU3BsaXRSZXN1bHQgeyAqdGhp
cywgc2VwYXJhdG9yLCB0cnVlIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXgg
OWM1ZWRkNmE5OTI0NzM2ZjZlNmNiY2Q4MGNjMjc3MmYxMmI2ZWM3YS4uODA3ODg0YmM3MGRiYzZh
MDgxZTdlZjAzMjNhOWY5OWQ5ZWI2MzJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApA
QCAtNzAyLDcgKzcwMiw3IEBAIGJvb2wgU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKSBjb25zdAogICAgIHJldHVybiBpc0VtcHR5KCkgfHwgKG1faW1wbC0+aGFzT25lUmVmKCkg
JiYgIW1faW1wbC0+aXNBdG9taWMoKSk7CiB9CiAKLXZvaWQgU3RyaW5nOjpzcGxpdChjb25zdCBT
dHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4m
IHJlc3VsdCkgY29uc3QKK3ZvaWQgU3RyaW5nOjpzcGxpdEludGVybmFsKGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdAogewogICAgIHJlc3VsdC5jbGVhcigpOwogCkBAIC03MTcsNyArNzE3LDcgQEAgdm9p
ZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlF
bnRyaWVzLCBWZWN0b3I8U3RyaW4KICAgICAgICAgcmVzdWx0LmFwcGVuZChzdWJzdHJpbmcoc3Rh
cnRQb3MpKTsKIH0KIAotdm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBh
bGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJiBmdW5jdG9yKSBjb25zdAordm9p
ZCBTdHJpbmc6OnNwbGl0SW50ZXJuYWwoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlF
bnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiB7CiAgICAgU3RyaW5n
VmlldyB2aWV3KCp0aGlzKTsKIApAQCAtNzMyLDEwICs3MzIsMTAgQEAgdm9pZCBTdHJpbmc6OnNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRG
dW5jdG9yJgogICAgICAgICBmdW5jdG9yKHZpZXcuc3Vic3RyaW5nKHN0YXJ0UG9zKSk7CiB9CiAK
LXZvaWQgU3RyaW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Cit2b2lkIFN0cmluZzo6c3BsaXRJbnRl
cm5hbChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJp
bmc+JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmNsZWFyKCk7Ci0gICAgc3BsaXQoc2Vw
YXJhdG9yLCBhbGxvd0VtcHR5RW50cmllcywgWyZyZXN1bHRdKFN0cmluZ1ZpZXcgaXRlbSkgewor
ICAgIHNwbGl0SW50ZXJuYWwoc2VwYXJhdG9yLCBhbGxvd0VtcHR5RW50cmllcywgWyZyZXN1bHRd
KFN0cmluZ1ZpZXcgaXRlbSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0udG9TdHJpbmco
KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA0MzU0NWYyYzJmN2Iz
ZTYxNThkYTg5YjkyZGRjZTdhMDY1ZjQ3ODkxLi4wMGIxZGQ1YWUyZmMxNTEzMzVjZDk0M2VjYjFm
MWI2ODllY2UxODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTI3MCwxNiArMjcwLDIw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWdu
ZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpIHsgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5p
dGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0
aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIExDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1w
bDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0Vt
cHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxp
dChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Qg
eyBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOyB9Ci0KICAgICB1c2luZyBTcGxpdEZ1
bmN0b3IgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nVmlldyYpPjsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0
eUVudHJpZXMsIGNvbnN0IFNwbGl0RnVuY3RvciYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywg
VmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7Ci0gICAgdm9pZCBzcGxpdChVQ2hhciBzZXBh
cmF0b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBm
YWxzZSwgcmVzdWx0KTsgfQorCisgICAgdm9pZCBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QgeyBzcGxpdEludGVybmFsKHNlcGFyYXRv
ciwgZmFsc2UsIHJlc3VsdCk7IH0KKyAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QgeyBzcGxpdEludGVybmFsKHNlcGFyYXRvciwgZmFs
c2UsIHJlc3VsdCk7IH0KKyAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgY29uc3QgU3Bs
aXRGdW5jdG9yJiBmdW5jdG9yKSBjb25zdCB7IHNwbGl0SW50ZXJuYWwoc2VwYXJhdG9yLCBmYWxz
ZSwgZnVuY3Rvcik7IH0KICAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBhcmF0b3Ip
IGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9y
KSBjb25zdDsKIAorICAgIHZvaWQgc3BsaXRXaXRoRW1wdHlFbnRyaWVzKGNvbnN0IFN0cmluZyYg
c2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0SW50ZXJuYWwo
c2VwYXJhdG9yLCB0cnVlLCByZXN1bHQpOyB9CisgICAgdm9pZCBzcGxpdFdpdGhFbXB0eUVudHJp
ZXMoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0
SW50ZXJuYWwoc2VwYXJhdG9yLCB0cnVlLCByZXN1bHQpOyB9CisgICAgdm9pZCBzcGxpdFdpdGhF
bXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImIGZ1bmN0b3Ip
IGNvbnN0IHsgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3IsIHRydWUsIGZ1bmN0b3IpOyB9CisgICAg
VmVjdG9yPFN0cmluZz4gc3BsaXRXaXRoRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29u
c3Q7CisgICAgVmVjdG9yPFN0cmluZz4gc3BsaXRXaXRoRW1wdHlFbnRyaWVzKGNvbnN0IFN0cmlu
ZyYgc2VwYXJhdG9yKSBjb25zdDsKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnRT
dHJpY3QoYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9J
bnQ2NFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwpAQCAt
MzcwLDYgKzM3NCwxMCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVk
LCB1bnNpZ25lZCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBh
cHBlbmRJbnRlcm5hbChDaGFyYWN0ZXJUeXBlKTsKIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNwbGl0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0
eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHNwbGl0SW50ZXJuYWwoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzcGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5
RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisKICAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gbV9pbXBsOwogfTsKIApAQCAtNTM1LDE0ICs1NDMsMjggQEAgdGVtcGxhdGU8dW5z
aWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJpbmc6OnJlcGxh
Y2VXaXRoTGl0ZXIKIGlubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0KFVDaGFyIHNl
cGFyYXRvcikgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgc3BsaXQo
c2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKKyAgICBzcGxpdEludGVybmFsKHNlcGFyYXRvciwg
ZmFsc2UsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIFZlY3RvcjxT
dHJpbmc+IFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0CiB7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJl
c3VsdCk7CisgICAgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3IsIGZhbHNlLCByZXN1bHQpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0
V2l0aEVtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgIHNwbGl0SW50ZXJuYWwoc2VwYXJhdG9yLCB0cnVlLCByZXN1bHQp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6
OnNwbGl0V2l0aEVtcHR5RW50cmllcyhjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3QKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgc3BsaXRJbnRlcm5hbChzZXBhcmF0b3Is
IHRydWUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAyMzEzNWMxYTE4NjExMWRlZWRkYWY1ZjRj
NWIzMjkwMzdmZDVlYTQ4Li4zOGQ1YTY2MDhiZDVmNGQ0ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMTQ1LDcg
KzE0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNSZXNwb25zZVZhcnlTdGFySGVhZGVyVmFs
dWUoY29uc3QgRmV0Y2hSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgYXV0byB2YXJ5VmFsdWUg
PSByZXNwb25zZS5oZWFkZXJzKCkuaW50ZXJuYWxIZWFkZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lOjpWYXJ5KTsKICAgICBib29sIGhhc1N0YXIgPSBmYWxzZTsKLSAgICB2YXJ5VmFs
dWUuc3BsaXQoJywnLCBmYWxzZSwgWyZdKFN0cmluZ1ZpZXcgdmlldykgeworICAgIHZhcnlWYWx1
ZS5zcGxpdCgnLCcsIFsmXShTdHJpbmdWaWV3IHZpZXcpIHsKICAgICAgICAgaWYgKCFoYXNTdGFy
ICYmIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyh2aWV3KSA9PSAiKiIpCiAgICAg
ICAgICAgICBoYXNTdGFyID0gdHJ1ZTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggNDkxMjhjNjRlOTg3MzExNDhlMzUx
MmViOTE2OTUwZmNkMzhmNGYwNy4uMWJmYmRhNzRjNjczNzZmMTdlYWVjMjE0NWM4YjhiNjc5MTdi
ZGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2gKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICBib29sIGlzVmFyeWluZyA9IGZhbHNlOwotICAgIHZhcnlWYWx1
ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7CisgICAgdmFyeVZhbHVl
LnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICBpZiAoaXNWYXJ5aW5n
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIG5hbWVWaWV3ID0gc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmlu
ZGV4IDIxM2RhZjA4YTIwMDFmZDZlOWJlZjZlNzVkNzdmZTE0OGI3MmQ3ZjcuLmY1ZTk5MzEzZDgy
OGM3MThjNWY1OTNiOWJiZDE5ZjBhMDM5YTAxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
QEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJp
bmcmJiBzZHApCiAgICAgYm9vbCBza2lwTmV4dEl0ZW0gPSBmYWxzZTsKICAgICBib29sIGlzRmly
c3QgPSB0cnVlOwogICAgIFN0cmluZ0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0
KCcgJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3IGl0ZW0pIHsKKyAgICBzZHAuc3BsaXQoJyAnLCBb
Jl0oU3RyaW5nVmlldyBpdGVtKSB7CiAgICAgICAgIGlmIChza2lwTmV4dEl0ZW0pIHsKICAgICAg
ICAgICAgIHNraXBOZXh0SXRlbSA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDEy
LDcgKzQxMiw3IEBAIFN0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJp
bmcmJiBzZHApIGNvbnN0CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7CiAKICAgICBTdHJp
bmdCdWlsZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5zcGxpdCgnXG4nLCBmYWxzZSwgWyZmaWx0
ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7CisgICAgc2RwLnNwbGl0KCdcbicsIFsmZmlsdGVy
ZWRTRFBdKFN0cmluZ1ZpZXcgbGluZSkgewogICAgICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgi
YT1jYW5kaWRhdGUiKSkKICAgICAgICAgICAgIGZpbHRlcmVkU0RQLmFwcGVuZChsaW5lKTsKICAg
ICAgICAgZWxzZSBpZiAobGluZS5maW5kKCIgaG9zdCAiLCAxMSkgPT0gbm90Rm91bmQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMGUxODNmZDExN2Y3MWNjNjk3OGEwYWFhMzc2ZGM1
M2YwNjE0N2NjNi4uMzJhY2RmNTc3OThlYWViMWU2OWEzZDhkNjczYjM0MzJiMzA0YjZkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtOTM0LDcgKzkzNCw3IEBAIHN0YXRpYyB2b2lk
IGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5lck5vZGUmIHBhcmFncmFwaCwgY29uc3Qg
U3RyaW5nJiBzdHJpCiAgICAgQVNTRVJUKHN0cmluZy5maW5kKCdcbicpID09IG5vdEZvdW5kKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHRhYkxpc3Q7Ci0gICAgc3RyaW5nLnNwbGl0KCdcdCcsIHRy
dWUsIHRhYkxpc3QpOworICAgIHN0cmluZy5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJ1x0JywgdGFi
TGlzdCk7CiAgICAgU3RyaW5nIHRhYlRleHQgPSBlbXB0eVN0cmluZygpOwogICAgIGJvb2wgZmly
c3QgPSB0cnVlOwogICAgIHNpemVfdCBudW1FbnRyaWVzID0gdGFiTGlzdC5zaXplKCk7CkBAIC0x
MDM1LDcgKzEwMzUsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9t
VGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGJvb2wgdXNlTGlu
ZUJyZWFrID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnRleHQuc3RhcnRQb3NpdGlvbigp
KTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxpc3Q7Ci0gICAgc3RyaW5nLnNwbGl0KCdcbicsIHRy
dWUsIGxpc3QpOyAvLyB0cnVlIGdldHMgdXMgZW1wdHkgc3RyaW5ncyBpbiB0aGUgbGlzdAorICAg
IHN0cmluZy5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJ1xuJywgbGlzdCk7CiAgICAgc2l6ZV90IG51
bUxpbmVzID0gbGlzdC5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1MaW5l
czsgKytpKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcyA9IGxpc3RbaV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IDBhODQzMzk1YTBkNjljZWM3MzY4MDI1YWNj
YTdhN2EwYWQzMTA3ZDAuLjE5MzcxOGFiMjdkYjljNDRiYmQyNDFmOWI3MGZmYmVjNjk4MDE4Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IGJvb2wgRW1haWxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogICAgIGlmICghZWxlbWVudCgpLT5tdWx0aXBsZSgpKQogICAgICAgICByZXR1cm4g
IWlzVmFsaWRFbWFpbEFkZHJlc3ModmFsdWUpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFkZHJlc3Nl
czsKLSAgICB2YWx1ZS5zcGxpdCgnLCcsIHRydWUsIGFkZHJlc3Nlcyk7CisgICAgdmFsdWUuc3Bs
aXRXaXRoRW1wdHlFbnRyaWVzKCcsJywgYWRkcmVzc2VzKTsKICAgICBmb3IgKGF1dG8mIGFkZHJl
c3MgOiBhZGRyZXNzZXMpIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW1haWxBZGRyZXNzKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhZGRyZXNzKSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBTdHJpbmcgRW1haWxJbnB1dFR5cGU6OnNhbml0
aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogICAgIGlmICghZWxl
bWVudCgpLT5tdWx0aXBsZSgpKQogICAgICAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKG5vTGluZUJyZWFrVmFsdWUpOwogICAgIFZlY3RvcjxTdHJpbmc+IGFkZHJl
c3NlczsKLSAgICBub0xpbmVCcmVha1ZhbHVlLnNwbGl0KCcsJywgdHJ1ZSwgYWRkcmVzc2VzKTsK
KyAgICBub0xpbmVCcmVha1ZhbHVlLnNwbGl0V2l0aEVtcHR5RW50cmllcygnLCcsIGFkZHJlc3Nl
cyk7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpcHBlZFZhbHVlOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhZGRyZXNzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGkgPiAwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOGU1ODRkOTg1NTA5
MjkwYmJjYjcyZTgyNjA3ZjljMzBlODEzZmQ4ZC4uOTExNWY1YzI5ZmIyZTBiODJmMjYyODYxNTdj
MDQyMGFjMWNhYTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gcGFyc2VBY2NlcHRB
dHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhY2NlcHRTdHJpbmcsIGJvb2wgKCpwcgogICAgICAgICBy
ZXR1cm4gdHlwZXM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdFR5cGVzOwotICAgIGFjY2Vw
dFN0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCBzcGxpdFR5cGVzKTsKKyAgICBhY2NlcHRTdHJpbmcu
c3BsaXQoJywnLCBzcGxpdFR5cGVzKTsKICAgICBmb3IgKGF1dG8mIHNwbGl0VHlwZSA6IHNwbGl0
VHlwZXMpIHsKICAgICAgICAgU3RyaW5nIHRyaW1tZWRUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKHNwbGl0VHlwZSk7CiAgICAgICAgIGlmICh0cmltbWVkVHlwZS5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IDQ3MjI5OGJmMzRiZDE5MmMxMzhlMmMxOGE1YWQwNmU0MTQ2
NGIwZTMuLjVkYTE5YjVhMmMxNGRkNmVjNDg5MTYxNDNmZDAzY2M1ZjYxNGY0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC0yMjk2LDcgKzIyOTYsNyBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZv
clBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgTm9kZSogbm9kZSA9IG1fZG9jdW1lbnQu
Z2V0KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aFRva2VuczsKLSAgICBwYXRoLnNwbGl0KCcs
JywgZmFsc2UsIHBhdGhUb2tlbnMpOworICAgIHBhdGguc3BsaXQoJywnLCBwYXRoVG9rZW5zKTsK
ICAgICBpZiAoIXBhdGhUb2tlbnMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCBjM2ZjOTkzZmQyMjViOGM2
N2Y2ZGY5MTQwZWU3MGM2NTkyYTkxMDkzLi5mOGY2N2NiYWRlZGNjNWJjZTcyYzFjOTc5ZWNjOGNk
ZWVjZWQ5MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25zPiBwYXJzZURpc2FibGVk
QWRhcHRhdGlvbnMoY29uc3QgU3RyaW5nJiBkaXNhYmxlZEFkCiB7CiAgICAgT3B0aW9uU2V0PERp
c2FibGVkQWRhcHRhdGlvbnM+IGRpc2FibGVkQWRhcHRhdGlvbnM7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gZGlzYWJsZWRBZGFwdGF0aW9uTmFtZXM7Ci0gICAgZGlzYWJsZWRBZGFwdGF0aW9uc1N0cmlu
Zy5zcGxpdCgnLCcsIGZhbHNlLCBkaXNhYmxlZEFkYXB0YXRpb25OYW1lcyk7CisgICAgZGlzYWJs
ZWRBZGFwdGF0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGRpc2FibGVkQWRhcHRhdGlvbk5hbWVzKTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBkaXNhYmxlZEFkYXB0YXRpb25OYW1lcykgewogICAgICAg
ICBhdXRvIG5vcm1hbGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5hbWUgPT0gd2F0Y2hBZGFw
dGF0aW9uTmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggYzk5ZGUxMGY1ZTQ3MjU0
ZTc0M2QzNmVlOTZhMDM3ODkzNGU2ZjI1Zi4uMzMwOTFjNGUwZTA0ZDA0MzkxOWNhNjg0MzYzY2Uw
Y2NjMmE0NTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0xMDY2LDcgKzEwNjYsNyBA
QCBzdGF0aWMgYm9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGF1
dG8gY291bnQgPSAwOwogCi0gICAgZm9yIChjb25zdCBhdXRvIG9jdGV0IDogc3RyaW5nLnNwbGl0
KCcuJywgU3RyaW5nVmlldzo6QWxsb3dFbXB0eUVudHJpZXMpKSB7CisgICAgZm9yIChjb25zdCBh
dXRvIG9jdGV0IDogc3RyaW5nLnNwbGl0V2l0aEVtcHR5RW50cmllcygnLicpKSB7CiAgICAgICAg
IGlmIChjb3VudCA+PSA0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTAwLDcg
KzExMDAsNyBAQCBzdGF0aWMgYm9vbCBpc0lQdjZBZGRyZXNzKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ICAgIGF1dG8gc2tpcFN0YXRlID0gTm9uZTsKICAgICBhdXRvIGNvdW50ID0gMDsKIAotICAgIGZv
ciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXQoJzonLCBTdHJpbmdWaWV3OjpBbGxv
d0VtcHR5RW50cmllcykpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gaGV4dGV0IDogc3RyaW5nLnNw
bGl0V2l0aEVtcHR5RW50cmllcygnOicpKSB7CiAgICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNr
aXBTdGF0ZSA9PSBGaW5hbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAppbmRleCBmNjY4ZTc3MzNiMTUxZjI3ODFlYTZjODkzYmJiZGNjY2U2
NDIyNDJkLi42MjM1M2U0ZjNlNjg0N2Y5ZjBjZWQzNWRlMjQ2YjA1MWE4MmRkOTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIFZlY3RvcjxTdHJpbmc+
IGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1hbmRMaW5lKCkKIAogICAgIFZlY3RvcjxT
dHJpbmc+IG9wdGlvbnM7CiAgICAgYXV0byBvcHRpb25zU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OChjb250ZW50cy5nZXQoKSwgbGVuZ3RoKTsKLSAgICBvcHRpb25zU3RyaW5nLnNwbGl0KCdcMCcs
IGZhbHNlLCBbJm9wdGlvbnNdKFN0cmluZ1ZpZXcgaXRlbSkgeworICAgIG9wdGlvbnNTdHJpbmcu
c3BsaXQoJ1wwJywgWyZvcHRpb25zXShTdHJpbmdWaWV3IGl0ZW0pIHsKICAgICAgICAgaWYgKGl0
ZW0uc3RhcnRzV2l0aCgiLS1nc3QiKSkKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKGl0ZW0u
dG9TdHJpbmcoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDcxZjE3NmZkNzMwYzRkYTkxZTg1MWNlYTNiMDE0YjI1
MmMwNjk0NGMuLjA1YWE2MTFiZTFmNWNlZTMwMjE4MmJhZjk3MzdmMzk4ZjhmMjU5ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC03
NzgsNyArNzc4LDcgQEAgc2l6ZV90IHBhcnNlSFRUUFJlcXVlc3RCb2R5KGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFZlY3Rvcjx1bnNpZ25lZCBjaGEKIHZvaWQgcGFyc2VBY2Nlc3ND
b250cm9sRXhwb3NlSGVhZGVyc0FsbG93TGlzdChjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBI
VFRQSGVhZGVyU2V0JiBoZWFkZXJTZXQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVyczsK
LSAgICBoZWFkZXJWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCBoZWFkZXJzKTsKKyAgICBoZWFkZXJW
YWx1ZS5zcGxpdCgnLCcsIGhlYWRlcnMpOwogICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVy
cykgewogICAgICAgICBTdHJpbmcgc3RyaXBwZWRIZWFkZXIgPSBoZWFkZXIuc3RyaXBXaGl0ZVNw
YWNlKCk7CiAgICAgICAgIGlmICghc3RyaXBwZWRIZWFkZXIuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4
IGQ2MmZkYmQ4OWNlOTVjZjI2OTFhYjQwZjczYzU4ZGYzMWM4ZmNjMDguLjEyYjhhNWEyYWVmY2Vi
ZWNiZjU3MDM3NThhMzY0MGUzODc3YWMyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCBi
b29sIHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIENvb2tpZSYgcgogICAgIHJlc3VsdC5zZXNzaW9uID0gdHJ1ZTsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IGNvb2tpZUF0dHJpYnV0ZXM7Ci0gICAgY29va2llTGluZS5zcGxpdCgn
OycsIHRydWUsIGNvb2tpZUF0dHJpYnV0ZXMpOworICAgIGNvb2tpZUxpbmUuc3BsaXRXaXRoRW1w
dHlFbnRyaWVzKCc7JywgY29va2llQXR0cmlidXRlcyk7CiAgICAgZm9yIChhdXRvIGF0dHJpYnV0
ZSA6IGNvb2tpZUF0dHJpYnV0ZXMpCiAgICAgICAgIHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRy
aWJ1dGUsIGRvbWFpbiwgaGFzTWF4QWdlLCByZXN1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwIGIvU291cmNlL1dlYkRyaXZl
ci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcAppbmRleCA5NzFjYWYxYzY2NDU0NTc3MjM5
OTAyZmQ4YmVjYjUzMDFiMzg4MTQzLi5mOWMzYmVmYzQyZTZiNTBiN2QyNWU4NGE5NTY3OWJjYjBh
NmMyZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2Vydmlj
ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xp
Yi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9yLCB1aW50NjRfdCYgbWlub3IKICAgICBtYWpv
ciA9IG1pbm9yID0gbWljcm8gPSAwOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwotICAg
IHZlcnNpb24uc3BsaXQoIi4iLCBmYWxzZSwgdG9rZW5zKTsKKyAgICB2ZXJzaW9uLnNwbGl0KCIu
IiwgdG9rZW5zKTsKICAgICBib29sIG9rOwogICAgIHN3aXRjaCAodG9rZW5zLnNpemUoKSkgewog
ICAgIGNhc2UgMzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggYWM4YmJjMmRiZTRh
OGZlZjgyMmE1NWNlZjllYzgzNGZiNTIyZThlZS4uNjkxNTVmZjIwOTMzMWU2YjFkNWUzZmQyMjVm
ZmIwZTRiNTA3YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTg1LDcgKzg1
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVZhcnlJbmZvcm1hdGlvbihSZWNvcmRJbmZv
cm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7Cisg
ICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICBp
ZiAoIXJlY29yZEluZm9ybWF0aW9uLmhhc1ZhcnlTdGFyICYmIHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRUUFNwYWNlcyh2aWV3KSA9PSAiKiIpCiAgICAgICAgICAgICByZWNvcmRJbmZvcm1hdGlv
bi5oYXNWYXJ5U3RhciA9IHRydWU7CiAgICAgICAgIFN0cmluZyBoZWFkZXJOYW1lID0gdmlldy50
b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApp
bmRleCBmOWViMDZlMTYxN2M1YzU0ODk2ZGUwYjgzNTdhNWRjOTNlNDQwMTI2Li5iMWU3MjY2MjYy
NDMyMzhhM2U3ZTE3YjEwOGJiZDc1ZTI2N2YyODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtNzUsMTMgKzc1LDEzIEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OnBhcnNlTUlNRURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2Ny
aXB0aW9uLCBWCiAgICAgQVNTRVJUX0FSRyhyZXN1bHQsIHJlc3VsdC5pc0VtcHR5KCkpOwogCiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgbWltZURlc2NyaXB0aW9uLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkuc3BsaXQoVUNoYXIoJzsnKSwgZmFsc2UsIHR5cGVzKTsKKyAgICBtaW1l
RGVzY3JpcHRpb24uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdChVQ2hhcignOycpLCB0
eXBlcyk7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsK
IAogICAgIHNpemVfdCBtaW1lSW5mb0NvdW50ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHR5cGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1pbWVUeXBl
UGFydHM7Ci0gICAgICAgIHR5cGVzW2ldLnNwbGl0KFVDaGFyKCc6JyksIHRydWUsIG1pbWVUeXBl
UGFydHMpOworICAgICAgICB0eXBlc1tpXS5zcGxpdFdpdGhFbXB0eUVudHJpZXMoVUNoYXIoJzon
KSwgbWltZVR5cGVQYXJ0cyk7CiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRzLnNpemUoKSA8PSAw
KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6cGFyc2VNSU1FRGVzY3JpcHRpb24oY29uc3QgU3RyaW5nJiBtaW1lRGVz
Y3JpcHRpb24sIFYKICAgICAgICAgbWltZUluZm8udHlwZSA9IG1pbWVUeXBlUGFydHNbMF07CiAK
ICAgICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIG1pbWVU
eXBlUGFydHNbMV0uc3BsaXQoVUNoYXIoJywnKSwgZmFsc2UsIG1pbWVJbmZvLmV4dGVuc2lvbnMp
OworICAgICAgICAgICAgbWltZVR5cGVQYXJ0c1sxXS5zcGxpdChVQ2hhcignLCcpLCBtaW1lSW5m
by5leHRlbnNpb25zKTsKIAogICAgICAgICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPiAyKQog
ICAgICAgICAgICAgbWltZUluZm8uZGVzYyA9IG1pbWVUeXBlUGFydHNbMl07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAK
aW5kZXggMzQyMDVhZDMxYzgyOTgwN2E2OWQ1YzAyZTVhZWM1NTgwNWIyZDI5Ni4uNmEyMjFjN2U5
NmVmYTIyNWRhYmVhNDc4OTFkNzUyNGY0YmI2MmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtMzksNyAr
MzksNyBAQCBWZWN0b3I8U3RyaW5nPiBwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIFN0cmluZyBt
b3ppbGxhUGF0aHMoZ2V0ZW52KCJNT1pfUExVR0lOX1BBVEgiKSk7CiAgICAgaWYgKCFtb3ppbGxh
UGF0aHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwotICAgICAg
ICBtb3ppbGxhUGF0aHMuc3BsaXQoVUNoYXIoJzonKSwgLyogYWxsb3dFbXB0eUVudHJpZXMgKi8g
ZmFsc2UsIHBhdGhzKTsKKyAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFyKCc6JyksIHBh
dGhzKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihwYXRocyk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQppbmRleCA0ZTM0Y2M1Mjg3
OTI1ZjE0ZmM3ZTEzYjUxMjk5YWM0MjJhNGM2ZTU5Li42ODBhMGM4YTJkZDljNTJlMzQ4M2FlN2Y0
NjhhYWExZmFjYjljY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hp
bGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nl
c3NNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJv
eFBhcmFtZXRlcnMoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZQogCiAg
ICAgVmVjdG9yPFN0cmluZz4gb3NWZXJzaW9uUGFydHM7CiAgICAgU3RyaW5nIG9zU3lzdGVtTWFy
a2V0aW5nVmVyc2lvbiA9IHN5c3RlbU1hcmtldGluZ1ZlcnNpb24oKTsKLSAgICBvc1N5c3RlbU1h
cmtldGluZ1ZlcnNpb24uc3BsaXQoJy4nLCBmYWxzZSwgb3NWZXJzaW9uUGFydHMpOworICAgIG9z
U3lzdGVtTWFya2V0aW5nVmVyc2lvbi5zcGxpdCgnLicsIG9zVmVyc2lvblBhcnRzKTsKICAgICBp
ZiAob3NWZXJzaW9uUGFydHMuc2l6ZSgpIDwgMikgewogICAgICAgICBXVEZMb2dBbHdheXMoIiVz
OiBDb3VsZG4ndCBmaW5kIE9TIFZlcnNpb25cbiIsIGdldHByb2duYW1lKCkpOwogICAgICAgICBl
eGl0KEVYX05PUEVSTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDc3ODc4YWFhNzNmOTgy
YWMyYTBkMjkyYzAxYzVmNWQyZDI2ZmE0ZDcuLjBiMjFjMzQ4YzVhNzM2YmMyMzBhZjk0OTAyMGUw
MzQxMDYwYTdmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC04MDcsNyArODA3LDcgQEAg
c3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgSGFzaFNldDxTdHIKIAogICAgIC8vIEZhbGwgYmFjayB0byBjaGVja2luZyBm
b3IgYSBNSU1FIHR5cGUgd2lsZGNhcmQgaWYgYW4gZXhhY3QgbWF0Y2ggaXMgbm90IGZvdW5kLgog
ICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7Ci0gICAgbWFwcGVkTUlNRVR5cGUuc3BsaXQo
Jy8nLCBmYWxzZSwgY29tcG9uZW50cyk7CisgICAgbWFwcGVkTUlNRVR5cGUuc3BsaXQoJy8nLCBj
b21wb25lbnRzKTsKICAgICBpZiAoY29tcG9uZW50cy5zaXplKCkgIT0gMikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQppbmRleCA1ZTQwZjI2ZTZjMjQ0ODMxZTQ0
OTQyNmMyMWMyZGUzOTg2ODNkZmMyLi5hZGY0MGU3MjI1MjYwZWYzMmY0Mzk1ZTRkNGE2OTNlN2Zj
YTJhZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgaWYgKGxhbmd1YWdlc0l0ZXJhdG9y
ICE9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5lbmQoKSkgewogICAg
ICAgICBhdXRvIGxhbmd1YWdlcyA9IGFkb3B0T1NPYmplY3QoeHBjX2FycmF5X2NyZWF0ZShudWxs
cHRyLCAwKSk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlVmVjdG9yOwotICAgICAg
ICBsYW5ndWFnZXNJdGVyYXRvci0+dmFsdWUuc3BsaXQoIiwiLCBmYWxzZSwgbGFuZ3VhZ2VWZWN0
b3IpOworICAgICAgICBsYW5ndWFnZXNJdGVyYXRvci0+dmFsdWUuc3BsaXQoIiwiLCBsYW5ndWFn
ZVZlY3Rvcik7CiAgICAgICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBsYW5ndWFnZVZlY3RvcikK
ICAgICAgICAgICAgIHhwY19hcnJheV9zZXRfc3RyaW5nKGxhbmd1YWdlcy5nZXQoKSwgWFBDX0FS
UkFZX0FQUEVORCwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHhwY19kaWN0aW9u
YXJ5X3NldF92YWx1ZShpbml0aWFsaXphdGlvbk1lc3NhZ2UuZ2V0KCksICJPdmVycmlkZUxhbmd1
YWdlcyIsIGxhbmd1YWdlcy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5k
ZXggYWYwMzQxYzAyYWQwMTlmMjJiZmRiMjY4YjkyNTc4ZDdmMWYxNzMyZS4uOGNlNGZkYjMxYjRj
ZGZlMzg4ZGMyYmE0YTkyMDkzNGU4NzFhMTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1
Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAgfQog
CiAgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7Ci0gICAgU3RyaW5nOjpmcm9tVVRGOChzdGRPdXQu
Z2V0KCkpLnNwbGl0KFVDaGFyKCdcbicpLCB0cnVlLCBsaW5lcyk7CisgICAgU3RyaW5nOjpmcm9t
VVRGOChzdGRPdXQuZ2V0KCkpLnNwbGl0V2l0aEVtcHR5RW50cmllcyhVQ2hhcignXG4nKSwgbGlu
ZXMpOwogCiAgICAgaWYgKGxpbmVzLnNpemUoKSA8IDMpIHsKICAgICAgICAgV1RGTG9nQWx3YXlz
KCJFcnJvciBzY2FubmluZyBwbHVnaW4gJXMsIHRvbyBmZXcgbGluZXMgb2Ygb3V0cHV0IHByb3Zp
ZGVkIiwgYXJndlsyXSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNzE4NTliODNhM2YyNmI5YmZjOThkNTVmMzIyN2Q4YzRjYWIwMzk1Ni4uYWIx
NzBkMGVmZjk1ZDVlNWZhYmEwOTY1ZjdlZjc1NjNlZDI0MDc3OCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTA3
LTI0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBT
dHJpbmcoVmlldykgc2hvdWxkIGhhdmUgYSBzcGxpdFdpdGhFbXB0eUVudHJpZXMgZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5j
cHA6CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgU3RyaW5nOjpzcGxpdCBhbmQgU3RyaW5nOjpzcGxp
dFdpdGhFbXB0eUVudHJpZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgVXBkYXRlIHNwbGl0L3NwbGl0V2l0aEVtcHR5RW50cmllcyB1c2FnZS4K
KwogMjAxOC0wNy0yNCAgVGhpYmF1bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0ZsYXRwYWtdIEFkZCBvcGVuaDI2NCBhcyBuZWVkZWQgYnkgV2ViUlRDCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IGM4YmIxMTQw
MWQyNGFkMTdkNTMwYWJlOTZhMGFlZGMwN2U0NzIyZTMuLjgzYjg0ODJmMmNhNWIxMzRkN2U5NDJk
ZGVjYWQzYzk3OGU4ZjdmZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ1ZpZXcuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdTcGxp
dFdpdGhDb25zZWN1dGl2ZVNlcGFyYXRvcnMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
Y3R1YWwuc2l6ZSgpOyArK2kpCiAgICAgICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFtpXS51dGY4
KCkuZGF0YSgpLCBhY3R1YWxbaV0udXRmOCgpLmRhdGEoKSkgPDwgIlZlY3RvcnMgZGlmZmVyIGF0
IGluZGV4ICIgPDwgaTsKIAotICAgIGFjdHVhbCA9IHZlY3RvckZyb21TcGxpdFJlc3VsdChhLnNw
bGl0KCcgJywgU3RyaW5nVmlldzo6QWxsb3dFbXB0eUVudHJpZXMpKTsKKyAgICBhY3R1YWwgPSB2
ZWN0b3JGcm9tU3BsaXRSZXN1bHQoYS5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJyAnKSk7CiAgICAg
ZXhwZWN0ZWQgPSB7ICIiLCAiVGhpcyIsICIiLCAiIiwgIiIsICIiLCAiaXMiLCAiIiwgImEiLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAic2VudGVuY2UuIiwgIiIgfTsKICAgICBBU1NFUlRfRVEo
ZXhwZWN0ZWQuc2l6ZSgpLCBhY3R1YWwuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFjdHVhbC5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
VEZTdHJpbmcuY3BwCmluZGV4IDVjYjZjNzZlNmMzYmQ0ZjI5NzA4Njc5ZTc3NWE3MTgzNTE5NDQ3
OTIuLmU4NjNjYmE0YjViZGY4NDYyMmQzMjlmMTA3NjExNDU5MmFlNWJkOWYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtNDk5LDQgKzQ5OSwyMSBA
QCBURVNUKFdURiwgU3RyaW5nRm9ybWF0V2l0aEFyZ3VtZW50cykKICAgICB0ZXN0V2l0aEZvcm1h
dEFuZEFyZ3VtZW50cygiaGVsbG8gLTE3ODkwLjUgd29ybGQiLCAiJXMgJS4xZiAlcyIsICJoZWxs
byIsIC0xNzg5MC41LCAid29ybGQiKTsKIH0KIAorVEVTVChXVEYsIFN0cmluZ1NwbGl0V2l0aENv
bnNlY3V0aXZlU2VwYXJhdG9ycykKK3sKKyAgICBTdHJpbmcgc3RyaW5nIHsgIiBUaGlzICAgICBp
cyAgYSAgICAgICBzZW50ZW5jZS4gIiB9OworCisgICAgVmVjdG9yPFN0cmluZz4gYWN0dWFsIHsg
c3RyaW5nLnNwbGl0KCcgJykgfTsKKyAgICBWZWN0b3I8U3RyaW5nPiBleHBlY3RlZCB7ICJUaGlz
IiwgImlzIiwgImEiLCAic2VudGVuY2UuIiB9OworICAgIEFTU0VSVF9FUShleHBlY3RlZC5zaXpl
KCksIGFjdHVhbC5zaXplKCkpOworICAgIGZvciAoYXV0byBpID0gMHU7IGkgPCBhY3R1YWwuc2l6
ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFtpXS51dGY4KCkuZGF0YSgp
LCBhY3R1YWxbaV0udXRmOCgpLmRhdGEoKSkgPDwgIlZlY3RvcnMgZGlmZmVyIGF0IGluZGV4ICIg
PDwgaTsKKworICAgIGFjdHVhbCA9IHN0cmluZy5zcGxpdFdpdGhFbXB0eUVudHJpZXMoJyAnKTsK
KyAgICBleHBlY3RlZCA9IHsgIiIsICJUaGlzIiwgIiIsICIiLCAiIiwgIiIsICJpcyIsICIiLCAi
YSIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICJzZW50ZW5jZS4iLCAiIiB9OworICAgIEFTU0VS
VF9FUShleHBlY3RlZC5zaXplKCksIGFjdHVhbC5zaXplKCkpOworICAgIGZvciAoYXV0byBpID0g
MHU7IGkgPCBhY3R1YWwuc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9TVFJFUShleHBlY3Rl
ZFtpXS51dGY4KCkuZGF0YSgpLCBhY3R1YWxbaV0udXRmOCgpLmRhdGEoKSkgPDwgIlZlY3RvcnMg
ZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAzZWEzYzBh
NThlODg4MGEwOGIwNWRlZmE5ZWIwOWNjMDE2MDUyNWU2Li42NTgxZThjYmRkZmMwYWVlNGUxNTNl
MTM4YjllOWYzZTMyZGI1MTc4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcApAQCAtMTA4OCw3ICsxMDg4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGVzdE9wdGlv
bnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYgdGVzdE9wdGlvbnMsIGNvbnN0IHN0ZDoKICAg
ICAgICAgYXV0byBrZXkgPSBwYWlyU3RyaW5nLnN1YnN0cihwYWlyU3RhcnQsIGVxdWFsc0xvY2F0
aW9uIC0gcGFpclN0YXJ0KTsKICAgICAgICAgYXV0byB2YWx1ZSA9IHBhaXJTdHJpbmcuc3Vic3Ry
KGVxdWFsc0xvY2F0aW9uICsgMSwgcGFpckVuZCAtIChlcXVhbHNMb2NhdGlvbiArIDEpKTsKICAg
ICAgICAgaWYgKGtleSA9PSAibGFuZ3VhZ2UiKQotICAgICAgICAgICAgU3RyaW5nKHZhbHVlLmNf
c3RyKCkpLnNwbGl0KCIsIiwgZmFsc2UsIHRlc3RPcHRpb25zLm92ZXJyaWRlTGFuZ3VhZ2VzKTsK
KyAgICAgICAgICAgIFN0cmluZyh2YWx1ZS5jX3N0cigpKS5zcGxpdCgiLCIsIHRlc3RPcHRpb25z
Lm92ZXJyaWRlTGFuZ3VhZ2VzKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VUaHJlYWRl
ZFNjcm9sbGluZyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VUaHJlYWRlZFNjcm9sbGlu
ZyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYg
KGtleSA9PSAidXNlQWNjZWxlcmF0ZWREcmF3aW5nIikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345744</attachid>
            <date>2018-07-24 20:53:15 -0700</date>
            <delta_ts>2018-07-25 23:45:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187963-20180724205314.patch</filename>
            <type>text/plain</type>
            <size>37181</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YWIzNjAyMTI4ZDE2ZjM5YjZlNGE0Yjg3ODA3YzM2ZjQzZGIwYWQ4Li42ZDUyMjU5YzdiNGY4MzY1
ZDZmNDBlNmUwMGFmZTMxMmRkNThmZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRBbGxvd2lu
Z0VtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoTW9k
dWxlTmFtZTo6TW9kdWxlTmFtZSk6CisgICAgICAgIChyZXNvbHZlUGF0aCk6CisgICAgICAgICog
cnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTGFuZ3Vh
Z2VUYWcpOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyB1
c2FnZS4KKwogMjAxOC0wNy0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbSlNDXSBSZWNvcmQgQ29XIHN0YXR1cyBpbiBBcnJheVByb2ZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggMjY2ZTA3OTFkNjA5YmQyNmY4ZDU2YTJiYWZjZjg5ZDJmYTkzMDQxYi4uZjAyNWU2ODllNWQ2
MjZjMzhiYTlmYzI4ODFkYzk0NWMxYTY1MTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0w
Ny0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
U3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyBmdW5j
dGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIGNvbnN0KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNw
bGl0SW50ZXJuYWwgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0IGNvbnN0KToK
KyAgICAgICAgKFdURjo6U3RyaW5nOjpzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIGNvbnN0KToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpz
cGxpdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6c3BsaXRBbGxvd2luZ0VtcHR5RW50
cmllcyBjb25zdCk6CisgICAgICAgIEludHJvZHVjZSBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVz
IGluc3RlYWQgb2YgYm9vbGVhbiBvciBlbnVtIHBhcmFtZXRlci4KKwogMjAxOC0wNy0yNCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZS1jb25zdHJ1Y3Rp
bmcgTmV2ZXJEZXN0cm95ZWQgc2hvdWxkIG1vdmUgY29uc3RydWN0IHVuZGVybHlpbmcgb2JqZWN0
IGluc3RlYWQgb2YgY29weSBjb25zdHJ1Y3RpbmcgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2U3YmZhMjVi
ODExZWYxNjMwOTExN2QyOTcwMmE2MDQ1YjMwYTQwLi4yZDM5NzJkODczYTk4ZTI3NzNiOTgwMmI1
ZWRhNTgyMWFmOWU5OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTgtMDctMjQg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFN0cmlu
ZyhWaWV3KSBzaG91bGQgaGF2ZSBhIHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMgZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aGFzUmVzcG9uc2VWYXJ5U3RhckhlYWRlclZhbHVlKToKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpxdWVyeUNhY2hlTWF0Y2gpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlcklD
RUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZp
bHRlclNEUCBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbWFpbElucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VBY2NlcHRBdHRyaWJ1dGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
Om5vZGVGb3JQYXRoKToKKyAgICAgICAgKiBwYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlRGlzYWJsZWRBZGFwdGF0aW9ucyk6CisgICAgICAgICogcGxhdGZv
cm0vVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSVB2NEFkZHJlc3MpOgorICAgICAgICAo
V2ViQ29yZTo6aXNJUHY2QWRkcmVzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0R1N0
cmVhbWVyT3B0aW9uc0Zyb21Db21tYW5kTGluZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUFjY2Vzc0NvbnRyb2xF
eHBvc2VIZWFkZXJzQWxsb3dMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tp
ZUhlYWRlcik6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVz
IHVzYWdlLgorCiAyMDE4LTA3LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEVuYWJsZSBXZWIgQ29udGVudCBGaWx0ZXJpbmcgb24gd2F0Y2hPUwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NoYW5nZUxvZwppbmRleCBmYTI4ZGIyYWQ0ZTgwODIzODQxNWEyNzczOTM5NTBiZGZlYTE1NTk2
Li4zNzc4MzFhMmJhYjI0YTk1ZDY2YmJjZDlmMmY5Y2NmODhmNTllZjE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA3LTI0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJz
bGluZ0Bzb255LmNvbT4KKworICAgICAgICBTdHJpbmcoVmlldykgc2hvdWxkIGhhdmUgYSBzcGxp
dEFsbG93aW5nRW1wdHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBnbGli
L1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6cGFyc2VWZXJz
aW9uKToKKyAgICAgICAgVXBkYXRlIHNwbGl0L3NwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMgdXNh
Z2UuCisKIDIwMTgtMDctMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWRkIC0taG9zdCBvcHRpb24gdG8gV2ViRHJpdmVy
IHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNDA1M2MxMWRhOTJhZWE5YWRjN2ZlOGI2YWM3MGRiMzFmMGQ1
MTRlYS4uNDkwMDEwMTNlMjgxMjgxODQ2YjBmY2Q2ZDhiMGU5OTBhN2VmMDI3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxOC0wNy0yNCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRB
bGxvd2luZ0VtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDYWNoZVN0b3JhZ2U6OnVwZGF0ZVZhcnlJbmZvcm1hdGlvbik6CisgICAgICAgICogU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6cGFyc2VNSU1FRGVzY3JpcHRp
b24pOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnBsdWdpbnNEaXJlY3Rvcmllcyk6CisgICAgICAgICogU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6
aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZmlsZUNhbkJlQWNjZXB0ZWRG
b3JVcGxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5j
aGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdp
bik6CisgICAgICAgIFVwZGF0ZSBzcGxpdC9zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIHVzYWdl
LgorCiAyMDE4LTA3LTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIEVuYWJsZSBXZWIgQ29udGVudCBGaWx0ZXJpbmcgb24gd2F0Y2hPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCA5OWVjMjdhMDNmOGRkMDQ4MTE3MzkyYjcyYzY2OGRi
YjVlYmNmZTliLi4wODkyMjkxMWI3YTMxYjQ5ZmU2NzE5Yzk2ZjI0NzgzYTFlZmFmNjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgQmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgfQog
CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbkFuZE1ldGhvZDsKLSAgICAgICAgbWV0aG9k
U3RyaW5nLnNwbGl0KCcuJywgdHJ1ZSwgZG9tYWluQW5kTWV0aG9kKTsKKyAgICAgICAgbWV0aG9k
U3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy4nLCBkb21haW5BbmRNZXRob2QpOwog
ICAgICAgICBpZiAoZG9tYWluQW5kTWV0aG9kLnNpemUoKSAhPSAyIHx8ICFkb21haW5BbmRNZXRo
b2RbMF0ubGVuZ3RoKCkgfHwgIWRvbWFpbkFuZE1ldGhvZFsxXS5sZW5ndGgoKSkgewogICAgICAg
ICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIlRoZSAnbWV0aG9kJyBw
cm9wZXJ0eSB3YXMgZm9ybWF0dGVkIGluY29ycmVjdGx5LiBJdCBzaG91bGQgYmUgJ0RvbWFpbi5t
ZXRob2QnIl9zKTsKICAgICAgICAgICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCmluZGV4IGRhMmU3MWMwYTk2ZjhjOGUzZWRlMzRlZjY2MjUzZmZjNGI0YzNlYjguLjU0
YmM5Y2E5ZjEzMTJjYzQ1YWQ4MzJmZTFhYTA5YTE2MDJlYjliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCkBAIC02ODcsNyArNjg3LDcgQEAgc3RydWN0IE1vZHVsZU5hbWUgewogTW9kdWxlTmFtZTo6
TW9kdWxlTmFtZShjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUpCiB7CiAgICAgLy8gQSBtb2R1bGUg
bmFtZSBnaXZlbiBmcm9tIGNvZGUgaXMgcmVwcmVzZW50ZWQgYXMgdGhlIFVOSVggc3R5bGUgcGF0
aC4gTGlrZSwgYC4vQS9CLmpzYC4KLSAgICBtb2R1bGVOYW1lLnNwbGl0KCcvJywgdHJ1ZSwgcXVl
cmllcyk7CisgICAgbW9kdWxlTmFtZS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcvJywgcXVl
cmllcyk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGV4dHJhY3RE
aXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgYWJzb2x1dGVQYXRoVG9GaWxlKQpAQCAtNzUxLDcg
Kzc1MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRXb3Jr
aW5nRGlyZWN0b3J5KCkKIHN0YXRpYyBTdHJpbmcgcmVzb2x2ZVBhdGgoY29uc3QgRGlyZWN0b3J5
TmFtZSYgZGlyZWN0b3J5TmFtZSwgY29uc3QgTW9kdWxlTmFtZSYgbW9kdWxlTmFtZSkKIHsKICAg
ICBWZWN0b3I8U3RyaW5nPiBkaXJlY3RvcnlQaWVjZXM7Ci0gICAgZGlyZWN0b3J5TmFtZS5xdWVy
eU5hbWUuc3BsaXQocGF0aFNlcGFyYXRvcigpLCBmYWxzZSwgZGlyZWN0b3J5UGllY2VzKTsKKyAg
ICBkaXJlY3RvcnlOYW1lLnF1ZXJ5TmFtZS5zcGxpdChwYXRoU2VwYXJhdG9yKCksIGRpcmVjdG9y
eVBpZWNlcyk7CiAKICAgICAvLyBPbmx5IGZpcnN0ICcvJyBpcyByZWNvZ25pemVkIGFzIHRoZSBw
YXRoIGZyb20gdGhlIHJvb3QuCiAgICAgaWYgKG1vZHVsZU5hbWUuc3RhcnRzV2l0aFJvb3QoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMTcw
ZjhkZDY4ZjM3ZWU4MjMwZjhlOWE2YmY3MDRjNmY4OGJiMTliNS4uZjRkMGRlMzExZjk5ZTJiMTJl
MDYwMDk5MzA0NWE0NGQ1YmUzNWE2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9u
aWNhbGl6ZUxhbmd1YWdlVGFnKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICByZXR1cm4g
Z3JhbmRmYXRoZXI7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJ0czsKLSAgICBsb2NhbGUuc3Bs
aXQoJy0nLCB0cnVlLCBwYXJ0cyk7CisgICAgbG9jYWxlLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJp
ZXMoJy0nLCBwYXJ0cyk7CiAgICAgaWYgKCFwYXJ0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgU3Ry
aW5nIGxhbmd0YWcgPSBjYW5vbmljYWxMYW5nVGFnKHBhcnRzKTsKICAgICAgICAgaWYgKCFsYW5n
dGFnLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCAwMmVkNzUzNzI5OTIy
YTcyZTVjMTY4YjNjMDRhYzU3ZDc0ZDk0NzRiLi5jNmM2ODgzMmVlNTIzMTU2MWMyNTllYWM0YjUw
MjAzYzM2ODllYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTI0LDExICsxMjQs
OSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWF0Y2hlZENoYXJhY3RlclByZWRp
Y2F0ZT4KICAgICBTdHJpbmdWaWV3IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nTWF0Y2hlZENoYXJh
Y3RlcnMoY29uc3QgTWF0Y2hlZENoYXJhY3RlclByZWRpY2F0ZSYpOwogCi0gICAgZW51bSBBbGxv
d0VtcHR5RW50cmllc1RhZyB7IEFsbG93RW1wdHlFbnRyaWVzIH07Ci0KICAgICBjbGFzcyBTcGxp
dFJlc3VsdDsKICAgICBTcGxpdFJlc3VsdCBzcGxpdChVQ2hhcikgY29uc3Q7Ci0gICAgU3BsaXRS
ZXN1bHQgc3BsaXQoVUNoYXIsIEFsbG93RW1wdHlFbnRyaWVzVGFnKSBjb25zdDsKKyAgICBTcGxp
dFJlc3VsdCBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyKSBjb25zdDsKIAogICAgIHNp
emVfdCBmaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0OwogICAgIHNpemVfdCBm
aW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKQEAg
LTkwNSw3ICs5MDMsNyBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpzcGxpdChVQ2hhciBzZXBh
cmF0b3IpIGNvbnN0IC0+IFNwbGl0UmVzdWx0CiAgICAgcmV0dXJuIFNwbGl0UmVzdWx0IHsgKnRo
aXMsIHNlcGFyYXRvciwgZmFsc2UgfTsKIH0KIAotaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6c3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBBbGxvd0VtcHR5RW50cmllc1RhZykgY29uc3QgLT4gU3BsaXRS
ZXN1bHQKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
VUNoYXIgc2VwYXJhdG9yKSBjb25zdCAtPiBTcGxpdFJlc3VsdAogewogICAgIHJldHVybiBTcGxp
dFJlc3VsdCB7ICp0aGlzLCBzZXBhcmF0b3IsIHRydWUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAppbmRleCA5YzVlZGQ2YTk5MjQ3MzZmNmU2Y2JjZDgwY2MyNzcyZjEyYjZlYzdhLi41
ZTkxMDY3MjQwODczNTM5MzA1NDJhZmYwYzM5N2EyZTc2ODIyMjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCkBAIC03MDIsNyArNzAyLDggQEAgYm9vbCBTdHJpbmc6OmlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzRW1wdHkoKSB8fCAobV9pbXBs
LT5oYXNPbmVSZWYoKSAmJiAhbV9pbXBsLT5pc0F0b21pYygpKTsKIH0KIAotdm9pZCBTdHJpbmc6
OnNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBW
ZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAordGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50
cmllcz4KK2lubGluZSB2b2lkIFN0cmluZzo6c3BsaXRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKIHsKICAgICByZXN1bHQuY2xl
YXIoKTsKIApAQCAtNzE3LDcgKzcxOCw4IEBAIHZvaWQgU3RyaW5nOjpzcGxpdChjb25zdCBTdHJp
bmcmIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluCiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoc3Vic3RyaW5nKHN0YXJ0UG9zKSk7CiB9CiAKLXZvaWQgU3RyaW5n
OjpzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIGNvbnN0IFNw
bGl0RnVuY3RvciYgZnVuY3RvcikgY29uc3QKK3RlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXM+CitpbmxpbmUgdm9pZCBTdHJpbmc6OnNwbGl0SW50ZXJuYWwoVUNoYXIgc2VwYXJhdG9yLCBj
b25zdCBTcGxpdEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiB7CiAgICAgU3RyaW5nVmlldyB2aWV3
KCp0aGlzKTsKIApAQCAtNzMyLDE0ICs3MzQsNDUgQEAgdm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFy
IHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJgog
ICAgICAgICBmdW5jdG9yKHZpZXcuc3Vic3RyaW5nKHN0YXJ0UG9zKSk7CiB9CiAKLXZvaWQgU3Ry
aW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3Rv
cjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Cit0ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVz
PgoraW5saW5lIHZvaWQgU3RyaW5nOjpzcGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvciwgVmVj
dG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKIHsKICAgICByZXN1bHQuY2xlYXIoKTsKLSAgICBz
cGxpdChzZXBhcmF0b3IsIGFsbG93RW1wdHlFbnRyaWVzLCBbJnJlc3VsdF0oU3RyaW5nVmlldyBp
dGVtKSB7CisgICAgc3BsaXRJbnRlcm5hbDxhbGxvd0VtcHR5RW50cmllcz4oc2VwYXJhdG9yLCBb
JnJlc3VsdF0oU3RyaW5nVmlldyBpdGVtKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbS50
b1N0cmluZygpKTsKICAgICB9KTsKIH0KIAordm9pZCBTdHJpbmc6OnNwbGl0KGNvbnN0IFN0cmlu
ZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAoreworICAgIHNwbGl0
SW50ZXJuYWw8ZmFsc2U+KHNlcGFyYXRvciwgcmVzdWx0KTsKK30KKwordm9pZCBTdHJpbmc6OnNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKK3sKKyAg
ICBzcGxpdEludGVybmFsPGZhbHNlPihzZXBhcmF0b3IsIHJlc3VsdCk7Cit9CisKK3ZvaWQgU3Ry
aW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKK3sKKyAgICBzcGxpdEludGVybmFsPGZhbHNlPihzZXBhcmF0b3IsIGZ1bmN0b3IpOwor
fQorCit2b2lkIFN0cmluZzo6c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QKK3sKKyAgICBzcGxpdElu
dGVybmFsPHRydWU+KHNlcGFyYXRvciwgcmVzdWx0KTsKK30KKwordm9pZCBTdHJpbmc6OnNwbGl0
QWxsb3dpbmdFbXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVz
dWx0KSBjb25zdAoreworICAgIHNwbGl0SW50ZXJuYWw8dHJ1ZT4oc2VwYXJhdG9yLCByZXN1bHQp
OworfQorCit2b2lkIFN0cmluZzo6c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhciBzZXBh
cmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYgZnVuY3RvcikgY29uc3QKK3sKKyAgICBzcGxpdElu
dGVybmFsPHRydWU+KHNlcGFyYXRvciwgZnVuY3Rvcik7Cit9CisKIENTdHJpbmcgU3RyaW5nOjph
c2NpaSgpIGNvbnN0CiB7CiAgICAgLy8gUHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMgMzIuLjEy
NyBhbmQgdGhlIG51bGwgY2hhcmFjdGVyIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
NDM1NDVmMmMyZjdiM2U2MTU4ZGE4OWI5MmRkY2U3YTA2NWY0Nzg5MS4uMmJmMGI4YmVmNTk3MTEx
ZTMzNzIzODg0NzQyZGZkMGY3ZmFlOGVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0y
NzAsMTYgKzI3MCwyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmluaXRp
YWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJpbmdJbXBs
OjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KICAgICBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBMQ2hhciomIGRhdGEpIHsgcmV0
dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhKTsgfQogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Is
IGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Owot
ICAgIHZvaWQgc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0IHsgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsgfQotCiAgICAg
dXNpbmcgU3BsaXRGdW5jdG9yID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZ1ZpZXcm
KT47Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBi
b29sIGFsbG93RW1wdHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImKSBjb25zdDsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0b3IsIGJvb2wgYWxsb3dF
bXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OwotICAgIHZvaWQgc3Bs
aXQoVUNoYXIgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdCB7IHNwbGl0
KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hhciBzZXBhcmF0
b3IsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7
CiAgICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoVUNoYXIgc2VwYXJhdG9yKSBjb25zdDsKICAgICBW
ZWN0b3I8U3RyaW5nPiBzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3Q7CiAKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNl
cGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhciBzZXBhcmF0b3IsIGNv
bnN0IFNwbGl0RnVuY3RvciYpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dp
bmdFbXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yKSBjb25zdDsKKyAgICBWZWN0b3I8U3RyaW5n
PiBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25z
dDsKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgdG9JbnRTdHJpY3QoYm9vbCogb2sgPSBu
dWxscHRyLCBpbnQgYmFzZSA9IDEwKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdW5z
aWduZWQgdG9VSW50U3RyaWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29u
c3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludDY0X3QgdG9JbnQ2NFN0cmljdChib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApIGNvbnN0OwpAQCAtMzcwLDYgKzM3NCwxMCBAQCBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVtb3Zl
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRJbnRlcm5hbChDaGFy
YWN0ZXJUeXBlKTsKIAorICAgIHRlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IHZvaWQg
c3BsaXRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJl
c3VsdCkgY29uc3Q7CisgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50cmllcz4gdm9pZCBz
cGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvciwgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50cmllcz4gdm9pZCBzcGxpdEludGVybmFs
KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3Q7CisKICAgICBS
ZWZQdHI8U3RyaW5nSW1wbD4gbV9pbXBsOwogfTsKIApAQCAtNTM1LDE0ICs1NDMsMjggQEAgdGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2VXaXRoTGl0ZXIKIGlubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0
KFVDaGFyIHNlcGFyYXRvcikgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0g
ICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKKyAgICBzcGxpdChzZXBhcmF0b3Is
IHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogaW5saW5lIFZlY3RvcjxTdHJpbmc+
IFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0CiB7CiAgICAgVmVj
dG9yPFN0cmluZz4gcmVzdWx0OwotICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7
CisgICAgc3BsaXQoc2VwYXJhdG9yLCByZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2lubGluZSBWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
VUNoYXIgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAg
ICBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKHNlcGFyYXRvciwgcmVzdWx0KTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitpbmxpbmUgVmVjdG9yPFN0cmluZz4gU3RyaW5nOjpzcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdAoreworICAgIFZl
Y3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKHNlcGFy
YXRvciwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDIzMTM1YzFhMTg2MTExZGVlZGRhZjVmNGM1
YjMyOTAzN2ZkNWVhNDguLjM4ZDVhNjYwOGJkNWY0ZDQ4ODg4MTI2ZjliNThmMjAyZDk3MDIxM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc1Jlc3BvbnNlVmFyeVN0YXJIZWFkZXJWYWx1
ZShjb25zdCBGZXRjaFJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBhdXRvIHZhcnlWYWx1ZSA9
IHJlc3BvbnNlLmhlYWRlcnMoKS5pbnRlcm5hbEhlYWRlcnMoKS5nZXQoV2ViQ29yZTo6SFRUUEhl
YWRlck5hbWU6OlZhcnkpOwogICAgIGJvb2wgaGFzU3RhciA9IGZhbHNlOwotICAgIHZhcnlWYWx1
ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7CisgICAgdmFyeVZhbHVl
LnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICBpZiAoIWhhc1N0YXIg
JiYgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpID09ICIqIikKICAgICAg
ICAgICAgIGhhc1N0YXIgPSB0cnVlOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCA0OTEyOGM2NGU5ODczMTE0OGUzNTEy
ZWI5MTY5NTBmY2QzOGY0ZjA3Li4xYmZiZGE3NGM2NzM3NmYxN2VhZWMyMTQ1YzhiOGI2NzkxN2Jk
ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmNwcApAQCAtODgsNyArODgsNyBAQCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgaXNWYXJ5aW5nID0gZmFsc2U7Ci0gICAgdmFyeVZhbHVl
LnNwbGl0KCcsJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICB2YXJ5VmFsdWUu
c3BsaXQoJywnLCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7CiAgICAgICAgIGlmIChpc1Zhcnlpbmcp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gbmFtZVZpZXcgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUVFBTcGFjZXModmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5k
ZXggMjEzZGFmMDhhMjAwMWZkNmU5YmVmNmU3NWQ3N2ZlMTQ4YjcyZDdmNy4uZjVlOTkzMTNkODI4
YzcxOGM1ZjU5M2I5YmJkMTlmMGEwMzlhMDEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApA
QCAtMzgyLDcgKzM4Miw3IEBAIHN0YXRpYyBTdHJpbmcgZmlsdGVySUNFQ2FuZGlkYXRlKFN0cmlu
ZyYmIHNkcCkKICAgICBib29sIHNraXBOZXh0SXRlbSA9IGZhbHNlOwogICAgIGJvb2wgaXNGaXJz
dCA9IHRydWU7CiAgICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNEUDsKLSAgICBzZHAuc3BsaXQo
JyAnLCBmYWxzZSwgWyZdKFN0cmluZ1ZpZXcgaXRlbSkgeworICAgIHNkcC5zcGxpdCgnICcsIFsm
XShTdHJpbmdWaWV3IGl0ZW0pIHsKICAgICAgICAgaWYgKHNraXBOZXh0SXRlbSkgewogICAgICAg
ICAgICAgc2tpcE5leHRJdGVtID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTIs
NyArNDEyLDcgQEAgU3RyaW5nIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlsdGVyU0RQKFN0cmlu
ZyYmIHNkcCkgY29uc3QKICAgICAgICAgcmV0dXJuIFdURk1vdmUoc2RwKTsKIAogICAgIFN0cmlu
Z0J1aWxkZXIgZmlsdGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCdcbicsIGZhbHNlLCBbJmZpbHRl
cmVkU0RQXShTdHJpbmdWaWV3IGxpbmUpIHsKKyAgICBzZHAuc3BsaXQoJ1xuJywgWyZmaWx0ZXJl
ZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7CiAgICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJh
PWNhbmRpZGF0ZSIpKQogICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGxpbmUpOwogICAg
ICAgICBlbHNlIGlmIChsaW5lLmZpbmQoIiBob3N0ICIsIDExKSA9PSBub3RGb3VuZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAwZTE4M2ZkMTE3ZjcxY2M2OTc4YTBhYWEzNzZkYzUz
ZjA2MTQ3Y2M2Li43Y2QzZTI2ZTcyOTczN2JiYzdiNGI4YzMwZTZjYTBhYzE5ZmUwOTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05MzQsNyArOTM0LDcgQEAgc3RhdGljIHZvaWQg
ZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSYgcGFyYWdyYXBoLCBjb25zdCBT
dHJpbmcmIHN0cmkKICAgICBBU1NFUlQoc3RyaW5nLmZpbmQoJ1xuJykgPT0gbm90Rm91bmQpOwog
CiAgICAgVmVjdG9yPFN0cmluZz4gdGFiTGlzdDsKLSAgICBzdHJpbmcuc3BsaXQoJ1x0JywgdHJ1
ZSwgdGFiTGlzdCk7CisgICAgc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1x0Jywg
dGFiTGlzdCk7CiAgICAgU3RyaW5nIHRhYlRleHQgPSBlbXB0eVN0cmluZygpOwogICAgIGJvb2wg
Zmlyc3QgPSB0cnVlOwogICAgIHNpemVfdCBudW1FbnRyaWVzID0gdGFiTGlzdC5zaXplKCk7CkBA
IC0xMDM1LDcgKzEwMzUsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRG
cm9tVGV4dChSYW5nZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIGJvb2wgdXNl
TGluZUJyZWFrID0gZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGNvbnRleHQuc3RhcnRQb3NpdGlv
bigpKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxpc3Q7Ci0gICAgc3RyaW5nLnNwbGl0KCdcbics
IHRydWUsIGxpc3QpOyAvLyB0cnVlIGdldHMgdXMgZW1wdHkgc3RyaW5ncyBpbiB0aGUgbGlzdAor
ICAgIHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcbicsIGxpc3QpOwogICAgIHNp
emVfdCBudW1MaW5lcyA9IGxpc3Quc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtTGluZXM7ICsraSkgewogICAgICAgICBjb25zdCBTdHJpbmcmIHMgPSBsaXN0W2ldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcAppbmRleCAwYTg0MzM5NWEwZDY5Y2VjNzM2
ODAyNWFjY2E3YTdhMGFkMzEwN2QwLi4yOTY2ODQwMTBmYTAxNWVjMGJlMTdhMTE2ODRiYzQyNzNi
MDFkNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBib29sIEVtYWlsSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQoKS0+bXVsdGlwbGUoKSkKICAgICAgICAg
cmV0dXJuICFpc1ZhbGlkRW1haWxBZGRyZXNzKHZhbHVlKTsKICAgICBWZWN0b3I8U3RyaW5nPiBh
ZGRyZXNzZXM7Ci0gICAgdmFsdWUuc3BsaXQoJywnLCB0cnVlLCBhZGRyZXNzZXMpOworICAgIHZh
bHVlLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJywnLCBhZGRyZXNzZXMpOwogICAgIGZvciAo
YXV0byYgYWRkcmVzcyA6IGFkZHJlc3NlcykgewogICAgICAgICBpZiAoIWlzVmFsaWRFbWFpbEFk
ZHJlc3Moc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGFkZHJlc3MpKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAyLDcgKzEwMiw3IEBAIFN0cmluZyBFbWFpbElucHV0
VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0CiAg
ICAgaWYgKCFlbGVtZW50KCktPm11bHRpcGxlKCkpCiAgICAgICAgIHJldHVybiBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobm9MaW5lQnJlYWtWYWx1ZSk7CiAgICAgVmVjdG9yPFN0
cmluZz4gYWRkcmVzc2VzOwotICAgIG5vTGluZUJyZWFrVmFsdWUuc3BsaXQoJywnLCB0cnVlLCBh
ZGRyZXNzZXMpOworICAgIG5vTGluZUJyZWFrVmFsdWUuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cygnLCcsIGFkZHJlc3Nlcyk7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpcHBlZFZhbHVlOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhZGRyZXNzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKGkgPiAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggOGU1ODRkOTg1NTA5MjkwYmJjYjcyZTgyNjA3ZjljMzBlODEzZmQ4ZC4uOTExNWY1YzI5ZmIy
ZTBiODJmMjYyODYxNTdjMDQyMGFjMWNhYTUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xMjc5LDcgKzEyNzksNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmlu
Zz4gcGFyc2VBY2NlcHRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhY2NlcHRTdHJpbmcsIGJvb2wg
KCpwcgogICAgICAgICByZXR1cm4gdHlwZXM7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdFR5
cGVzOwotICAgIGFjY2VwdFN0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCBzcGxpdFR5cGVzKTsKKyAg
ICBhY2NlcHRTdHJpbmcuc3BsaXQoJywnLCBzcGxpdFR5cGVzKTsKICAgICBmb3IgKGF1dG8mIHNw
bGl0VHlwZSA6IHNwbGl0VHlwZXMpIHsKICAgICAgICAgU3RyaW5nIHRyaW1tZWRUeXBlID0gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHNwbGl0VHlwZSk7CiAgICAgICAgIGlmICh0
cmltbWVkVHlwZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDQ3MjI5OGJmMzRiZDE5MmMxMzhl
MmMxOGE1YWQwNmU0MTQ2NGIwZTMuLjVkYTE5YjVhMmMxNGRkNmVjNDg5MTYxNDNmZDAzY2M1ZjYx
NGY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMjk2LDcgKzIyOTYsNyBAQCBOb2RlKiBJbnNwZWN0b3JE
T01BZ2VudDo6bm9kZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgTm9kZSogbm9k
ZSA9IG1fZG9jdW1lbnQuZ2V0KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aFRva2VuczsKLSAg
ICBwYXRoLnNwbGl0KCcsJywgZmFsc2UsIHBhdGhUb2tlbnMpOworICAgIHBhdGguc3BsaXQoJywn
LCBwYXRoVG9rZW5zKTsKICAgICBpZiAoIXBhdGhUb2tlbnMuc2l6ZSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0
dXJlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcAppbmRleCBj
M2ZjOTkzZmQyMjViOGM2N2Y2ZGY5MTQwZWU3MGM2NTkyYTkxMDkzLi5mOGY2N2NiYWRlZGNjNWJj
ZTcyYzFjOTc5ZWNjOGNkZWVjZWQ5MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0ZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIE9wdGlvblNldDxEaXNhYmxlZEFkYXB0YXRpb25z
PiBwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMoY29uc3QgU3RyaW5nJiBkaXNhYmxlZEFkCiB7CiAg
ICAgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IGRpc2FibGVkQWRhcHRhdGlvbnM7CiAg
ICAgVmVjdG9yPFN0cmluZz4gZGlzYWJsZWRBZGFwdGF0aW9uTmFtZXM7Ci0gICAgZGlzYWJsZWRB
ZGFwdGF0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCBkaXNhYmxlZEFkYXB0YXRpb25OYW1l
cyk7CisgICAgZGlzYWJsZWRBZGFwdGF0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGRpc2FibGVkQWRh
cHRhdGlvbk5hbWVzKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBkaXNhYmxlZEFkYXB0YXRpb25O
YW1lcykgewogICAgICAgICBhdXRvIG5vcm1hbGl6ZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3Bh
Y2UoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAgICBpZiAobm9ybWFsaXplZE5h
bWUgPT0gd2F0Y2hBZGFwdGF0aW9uTmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXgg
Yzk5ZGUxMGY1ZTQ3MjU0ZTc0M2QzNmVlOTZhMDM3ODkzNGU2ZjI1Zi4uZTkwODQ5NzEzZmM5ZGNm
OWIxOTdkNmExN2E5MjZkOGMxMjYxYTI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC0x
MDY2LDcgKzEwNjYsNyBAQCBzdGF0aWMgYm9vbCBpc0lQdjRBZGRyZXNzKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIGF1dG8gY291bnQgPSAwOwogCi0gICAgZm9yIChjb25zdCBhdXRvIG9jdGV0
IDogc3RyaW5nLnNwbGl0KCcuJywgU3RyaW5nVmlldzo6QWxsb3dFbXB0eUVudHJpZXMpKSB7Cisg
ICAgZm9yIChjb25zdCBhdXRvIG9jdGV0IDogc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJp
ZXMoJy4nKSkgewogICAgICAgICBpZiAoY291bnQgPj0gNCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIGJvb2wgaXNJUHY2QWRkcmVzcyhT
dHJpbmdWaWV3IHN0cmluZykKICAgICBhdXRvIHNraXBTdGF0ZSA9IE5vbmU7CiAgICAgYXV0byBj
b3VudCA9IDA7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8gaGV4dGV0IDogc3RyaW5nLnNwbGl0KCc6
JywgU3RyaW5nVmlldzo6QWxsb3dFbXB0eUVudHJpZXMpKSB7CisgICAgZm9yIChjb25zdCBhdXRv
IGhleHRldCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc6JykpIHsKICAgICAg
ICAgaWYgKGNvdW50ID49IDggfHwgc2tpcFN0YXRlID09IEZpbmFsKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGY2NjhlNzczM2Ix
NTFmMjc4MWVhNmM4OTNiYmJkY2NjZTY0MjI0MmQuLjYyMzUzZTRmM2U2ODQ3ZjlmMGNlZDM1ZGUy
NDZiMDUxYTgyZGQ5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0yNDYsNyAr
MjQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gZXh0cmFjdEdTdHJlYW1lck9wdGlvbnNGcm9tQ29tbWFu
ZExpbmUoKQogCiAgICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKICAgICBhdXRvIG9wdGlvbnNT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnRzLmdldCgpLCBsZW5ndGgpOwotICAgIG9w
dGlvbnNTdHJpbmcuc3BsaXQoJ1wwJywgZmFsc2UsIFsmb3B0aW9uc10oU3RyaW5nVmlldyBpdGVt
KSB7CisgICAgb3B0aW9uc1N0cmluZy5zcGxpdCgnXDAnLCBbJm9wdGlvbnNdKFN0cmluZ1ZpZXcg
aXRlbSkgewogICAgICAgICBpZiAoaXRlbS5zdGFydHNXaXRoKCItLWdzdCIpKQogICAgICAgICAg
ICAgb3B0aW9ucy5hcHBlbmQoaXRlbS50b1N0cmluZygpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggNzFmMTc2ZmQ3
MzBjNGRhOTFlODUxY2VhM2IwMTRiMjUyYzA2OTQ0Yy4uMDVhYTYxMWJlMWY1Y2VlMzAyMTgyYmFm
OTczN2YzOThmOGYyNTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKQEAgLTc3OCw3ICs3NzgsNyBAQCBzaXplX3QgcGFyc2VIVFRQUmVx
dWVzdEJvZHkoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yPHVuc2lnbmVk
IGNoYQogdm9pZCBwYXJzZUFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzQWxsb3dMaXN0KGNvbnN0
IFN0cmluZyYgaGVhZGVyVmFsdWUsIEhUVFBIZWFkZXJTZXQmIGhlYWRlclNldCkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiBoZWFkZXJzOwotICAgIGhlYWRlclZhbHVlLnNwbGl0KCcsJywgZmFsc2Us
IGhlYWRlcnMpOworICAgIGhlYWRlclZhbHVlLnNwbGl0KCcsJywgaGVhZGVycyk7CiAgICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBoZWFkZXJzKSB7CiAgICAgICAgIFN0cmluZyBzdHJpcHBlZEhlYWRl
ciA9IGhlYWRlci5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKCFzdHJpcHBlZEhlYWRl
ci5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAKaW5kZXggZDYyZmRiZDg5Y2U5NWNmMjY5MWFiNDBmNzNjNThkZjMx
YzhmY2MwOC4uMzJhNmQwYTE2MGFmZmNiYTYzOTdjMDgzYmI3ZWRmOGQ4MWEyNWFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNw
cApAQCAtMTcyLDcgKzE3Miw3IEBAIGJvb2wgcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5n
JiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgQ29va2llJiByCiAgICAgcmVzdWx0
LnNlc3Npb24gPSB0cnVlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gY29va2llQXR0cmlidXRlczsK
LSAgICBjb29raWVMaW5lLnNwbGl0KCc7JywgdHJ1ZSwgY29va2llQXR0cmlidXRlcyk7CisgICAg
Y29va2llTGluZS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc7JywgY29va2llQXR0cmlidXRl
cyk7CiAgICAgZm9yIChhdXRvIGF0dHJpYnV0ZSA6IGNvb2tpZUF0dHJpYnV0ZXMpCiAgICAgICAg
IHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRyaWJ1dGUsIGRvbWFpbiwgaGFzTWF4QWdlLCByZXN1
bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJpdmVyU2Vydmlj
ZUdMaWIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNw
cAppbmRleCA5NzFjYWYxYzY2NDU0NTc3MjM5OTAyZmQ4YmVjYjUzMDFiMzg4MTQzLi5mOWMzYmVm
YzQyZTZiNTBiN2QyNWU4NGE5NTY3OWJjYjBhNmMyZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL2dsaWIvV2ViRHJpdmVyU2VydmljZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgdWludDY0X3QmIG1ham9y
LCB1aW50NjRfdCYgbWlub3IKICAgICBtYWpvciA9IG1pbm9yID0gbWljcm8gPSAwOwogCiAgICAg
VmVjdG9yPFN0cmluZz4gdG9rZW5zOwotICAgIHZlcnNpb24uc3BsaXQoIi4iLCBmYWxzZSwgdG9r
ZW5zKTsKKyAgICB2ZXJzaW9uLnNwbGl0KCIuIiwgdG9rZW5zKTsKICAgICBib29sIG9rOwogICAg
IHN3aXRjaCAodG9rZW5zLnNpemUoKSkgewogICAgIGNhc2UgMzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKaW5kZXggYWM4YmJjMmRiZTRhOGZlZjgyMmE1NWNlZjllYzgzNGZiNTIyZThlZS4u
NjkxNTVmZjIwOTMzMWU2YjFkNWUzZmQyMjVmZmIwZTRiNTA3YjVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0
ZVZhcnlJbmZvcm1hdGlvbihSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNl
LCBbJl0oU3RyaW5nVmlldyB2aWV3KSB7CisgICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgWyZdKFN0
cmluZ1ZpZXcgdmlldykgewogICAgICAgICBpZiAoIXJlY29yZEluZm9ybWF0aW9uLmhhc1ZhcnlT
dGFyICYmIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyh2aWV3KSA9PSAiKiIpCiAg
ICAgICAgICAgICByZWNvcmRJbmZvcm1hdGlvbi5oYXNWYXJ5U3RhciA9IHRydWU7CiAgICAgICAg
IFN0cmluZyBoZWFkZXJOYW1lID0gdmlldy50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxl
VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0
c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAppbmRleCBmOWViMDZlMTYxN2M1YzU0ODk2ZGUwYjgz
NTdhNWRjOTNlNDQwMTI2Li4xZTIxNTAzNzI3YWI5NGIwZjE0ZGMwZTRhOWRiN2Q1NGEzNTBjZjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtNzUs
MTMgKzc1LDEzIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBhcnNlTUlNRURlc2NyaXB0
aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWCiAgICAgQVNTRVJUX0FSRyhyZXN1
bHQsIHJlc3VsdC5pc0VtcHR5KCkpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAg
bWltZURlc2NyaXB0aW9uLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoVUNoYXIoJzsn
KSwgZmFsc2UsIHR5cGVzKTsKKyAgICBtaW1lRGVzY3JpcHRpb24uY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKS5zcGxpdChVQ2hhcignOycpLCB0eXBlcyk7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkodHlwZXMuc2l6ZSgpKTsKIAogICAgIHNpemVfdCBtaW1lSW5mb0NvdW50ID0g
MDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IG1pbWVUeXBlUGFydHM7Ci0gICAgICAgIHR5cGVzW2ldLnNwbGl0
KFVDaGFyKCc6JyksIHRydWUsIG1pbWVUeXBlUGFydHMpOworICAgICAgICB0eXBlc1tpXS5zcGxp
dEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyKCc6JyksIG1pbWVUeXBlUGFydHMpOwogICAgICAg
ICBpZiAobWltZVR5cGVQYXJ0cy5zaXplKCkgPD0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnBhcnNlTUlNRURl
c2NyaXB0aW9uKGNvbnN0IFN0cmluZyYgbWltZURlc2NyaXB0aW9uLCBWCiAgICAgICAgIG1pbWVJ
bmZvLnR5cGUgPSBtaW1lVHlwZVBhcnRzWzBdOwogCiAgICAgICAgIGlmIChtaW1lVHlwZVBhcnRz
LnNpemUoKSA+IDEpCi0gICAgICAgICAgICBtaW1lVHlwZVBhcnRzWzFdLnNwbGl0KFVDaGFyKCcs
JyksIGZhbHNlLCBtaW1lSW5mby5leHRlbnNpb25zKTsKKyAgICAgICAgICAgIG1pbWVUeXBlUGFy
dHNbMV0uc3BsaXQoVUNoYXIoJywnKSwgbWltZUluZm8uZXh0ZW5zaW9ucyk7CiAKICAgICAgICAg
aWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpID4gMikKICAgICAgICAgICAgIG1pbWVJbmZvLmRlc2Mg
PSBtaW1lVHlwZVBhcnRzWzJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCmluZGV4IDM0MjA1YWQzMWM4Mjk4MDdhNjlk
NWMwMmU1YWVjNTU4MDViMmQyOTYuLjZhMjIxYzdlOTZlZmEyMjVkYWJlYTQ3ODkxZDc1MjRmNGJi
NjJhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVn
aW5TZWFyY2hQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgv
UGx1Z2luU2VhcmNoUGF0aC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgVmVjdG9yPFN0cmluZz4gcGx1
Z2luc0RpcmVjdG9yaWVzKCkKICAgICBTdHJpbmcgbW96aWxsYVBhdGhzKGdldGVudigiTU9aX1BM
VUdJTl9QQVRIIikpOwogICAgIGlmICghbW96aWxsYVBhdGhzLmlzRW1wdHkoKSkgewogICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKLSAgICAgICAgbW96aWxsYVBhdGhzLnNwbGl0KFVDaGFy
KCc6JyksIC8qIGFsbG93RW1wdHlFbnRyaWVzICovIGZhbHNlLCBwYXRocyk7CisgICAgICAgIG1v
emlsbGFQYXRocy5zcGxpdChVQ2hhcignOicpLCBwYXRocyk7CiAgICAgICAgIHJlc3VsdC5hcHBl
bmRWZWN0b3IocGF0aHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KaW5kZXggYjA4NWZmOTJhNTdjNTdhN2IyNGJmZGRjZTU2OTc2YTNhMzAx
YzM2Mi4uN2FiM2Y2MjQ4MDY2Y2QzMGIwOWVjODc3NDY0NTcxNmNlZjM0YTI4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCkBAIC0xMzYsNyArMTM2LDcg
QEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYKIAogICAgIFZlY3RvcjxTdHJpbmc+IG9zVmVyc2lv
blBhcnRzOwogICAgIFN0cmluZyBvc1N5c3RlbU1hcmtldGluZ1ZlcnNpb24gPSBzeXN0ZW1NYXJr
ZXRpbmdWZXJzaW9uKCk7Ci0gICAgb3NTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uLnNwbGl0KCcuJywg
ZmFsc2UsIG9zVmVyc2lvblBhcnRzKTsKKyAgICBvc1N5c3RlbU1hcmtldGluZ1ZlcnNpb24uc3Bs
aXQoJy4nLCBvc1ZlcnNpb25QYXJ0cyk7CiAgICAgaWYgKG9zVmVyc2lvblBhcnRzLnNpemUoKSA8
IDIpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgZmluZCBPUyBWZXJzaW9u
XG4iLCBnZXRwcm9nbmFtZSgpKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcAppbmRleCA3Nzg3OGFhYTczZjk4MmFjMmEwZDI5MmMwMWM1ZjVkMmQyNmZhNGQ3
Li4wYjIxYzM0OGM1YTczNmJjMjMwYWY5NDkwMjBlMDM0MTA2MGE3ZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcApAQCAtODA3LDcgKzgwNyw3IEBAIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2Vw
dGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyCiAK
ICAgICAvLyBGYWxsIGJhY2sgdG8gY2hlY2tpbmcgZm9yIGEgTUlNRSB0eXBlIHdpbGRjYXJkIGlm
IGFuIGV4YWN0IG1hdGNoIGlzIG5vdCBmb3VuZC4KICAgICBWZWN0b3I8U3RyaW5nPiBjb21wb25l
bnRzOwotICAgIG1hcHBlZE1JTUVUeXBlLnNwbGl0KCcvJywgZmFsc2UsIGNvbXBvbmVudHMpOwor
ICAgIG1hcHBlZE1JTUVUeXBlLnNwbGl0KCcvJywgY29tcG9uZW50cyk7CiAgICAgaWYgKGNvbXBv
bmVudHMuc2l6ZSgpICE9IDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJN
YWMubW0KaW5kZXggNWU0MGYyNmU2YzI0NDgzMWU0NDk0MjZjMjFjMmRlMzk4NjgzZGZjMi4uYWRm
NDBlNzIyNTI2MGVmMzJmNDM5NWU0ZDRhNjkzZTdmY2EyYWUzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgIGlmIChsYW5ndWFnZXNJdGVyYXRvciAhPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEuZW5kKCkpIHsKICAgICAgICAgYXV0byBsYW5ndWFnZXMgPSBhZG9w
dE9TT2JqZWN0KHhwY19hcnJheV9jcmVhdGUobnVsbHB0ciwgMCkpOwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZVZlY3RvcjsKLSAgICAgICAgbGFuZ3VhZ2VzSXRlcmF0b3ItPnZhbHVl
LnNwbGl0KCIsIiwgZmFsc2UsIGxhbmd1YWdlVmVjdG9yKTsKKyAgICAgICAgbGFuZ3VhZ2VzSXRl
cmF0b3ItPnZhbHVlLnNwbGl0KCIsIiwgbGFuZ3VhZ2VWZWN0b3IpOwogICAgICAgICBmb3IgKGF1
dG8mIGxhbmd1YWdlIDogbGFuZ3VhZ2VWZWN0b3IpCiAgICAgICAgICAgICB4cGNfYXJyYXlfc2V0
X3N0cmluZyhsYW5ndWFnZXMuZ2V0KCksIFhQQ19BUlJBWV9BUFBFTkQsIGxhbmd1YWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoaW5pdGlhbGl6YXRp
b25NZXNzYWdlLmdldCgpLCAiT3ZlcnJpZGVMYW5ndWFnZXMiLCBsYW5ndWFnZXMuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCmluZGV4IGFmMDM0MWMwMmFkMDE5ZjIyYmZkYjI2
OGI5MjU3OGQ3ZjFmMTczMmUuLjIzMzM0MDM4YjZjMGJjYjQxYmQxNGFkZGExZTEzMTMzZmI2YmFm
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVn
aW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBi
b29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVz
OwotICAgIFN0cmluZzo6ZnJvbVVURjgoc3RkT3V0LmdldCgpKS5zcGxpdChVQ2hhcignXG4nKSwg
dHJ1ZSwgbGluZXMpOworICAgIFN0cmluZzo6ZnJvbVVURjgoc3RkT3V0LmdldCgpKS5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyKCdcbicpLCBsaW5lcyk7CiAKICAgICBpZiAobGluZXMu
c2l6ZSgpIDwgMykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHNjYW5uaW5nIHBsdWdp
biAlcywgdG9vIGZldyBsaW5lcyBvZiBvdXRwdXQgcHJvdmlkZWQiLCBhcmd2WzJdKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMGVjYzJhMmJh
YmRlZTBkNWFmNDNhN2Y1MzlmYTM3MjZhYWRhMTczLi4xYThjNjUyNmY2MDM4ZWY3Y2UxMmM4NWVi
ODljNTdlY2I5OTNlMzdmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDctMjQgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFN0cmluZyhWaWV3KSBzaG91bGQgaGF2
ZSBhIHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIGZsYWcg
cGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHA6CisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgU3RyaW5nOjpzcGxpdCBhbmQgU3RyaW5nOjpzcGxpdFdpdGhFbXB0eUVudHJpZXMu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6dXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcik6CisgICAgICAgIFVwZGF0ZSBzcGxp
dC9zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3LTI0ICBUaG9tYXMg
RGVubmV5ICA8dGRlbm5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9y
IHRoZSBkb3VibGUgdHlwZSBmcm9tIFdITFNMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IGM4YmIxMTQwMWQyNGFkMTdkNTMwYWJlOTZhMGFlZGMw
N2U0NzIyZTMuLmI3NTFmNjg4M2RjZWVmOWI3YWUwMTkwMWViNTU4N2Q1MjYxYjU5NDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdTcGxpdFdpdGhDb25zZWN1dGl2ZVNlcGFyYXRv
cnMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3R1YWwuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZFtpXS51dGY4KCkuZGF0YSgpLCBhY3R1YWxbaV0udXRm
OCgpLmRhdGEoKSkgPDwgIlZlY3RvcnMgZGlmZmVyIGF0IGluZGV4ICIgPDwgaTsKIAotICAgIGFj
dHVhbCA9IHZlY3RvckZyb21TcGxpdFJlc3VsdChhLnNwbGl0KCcgJywgU3RyaW5nVmlldzo6QWxs
b3dFbXB0eUVudHJpZXMpKTsKKyAgICBhY3R1YWwgPSB2ZWN0b3JGcm9tU3BsaXRSZXN1bHQoYS5z
cGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcgJykpOwogICAgIGV4cGVjdGVkID0geyAiIiwgIlRo
aXMiLCAiIiwgIiIsICIiLCAiIiwgImlzIiwgIiIsICJhIiwgIiIsICIiLCAiIiwgIiIsICIiLCAi
IiwgInNlbnRlbmNlLiIsICIiIH07CiAgICAgQVNTRVJUX0VRKGV4cGVjdGVkLnNpemUoKSwgYWN0
dWFsLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3R1YWwuc2l6ZSgpOyAr
K2kpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRleCA1
Y2I2Yzc2ZTZjM2JkNGYyOTcwODY3OWU3NzVhNzE4MzUxOTQ0NzkyLi5kNjFkNGY4N2VjN2Y0MWJl
YmY1MzM0ZGQ5YTQzOWI4NmY4N2I3YTZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1dURlN0cmluZy5jcHAKQEAgLTQ5OSw0ICs0OTksMjEgQEAgVEVTVChXVEYsIFN0cmluZ0Zv
cm1hdFdpdGhBcmd1bWVudHMpCiAgICAgdGVzdFdpdGhGb3JtYXRBbmRBcmd1bWVudHMoImhlbGxv
IC0xNzg5MC41IHdvcmxkIiwgIiVzICUuMWYgJXMiLCAiaGVsbG8iLCAtMTc4OTAuNSwgIndvcmxk
Iik7CiB9CiAKK1RFU1QoV1RGLCBTdHJpbmdTcGxpdFdpdGhDb25zZWN1dGl2ZVNlcGFyYXRvcnMp
Cit7CisgICAgU3RyaW5nIHN0cmluZyB7ICIgVGhpcyAgICAgaXMgIGEgICAgICAgc2VudGVuY2Uu
ICIgfTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGFjdHVhbCB7IHN0cmluZy5zcGxpdCgnICcpIH07
CisgICAgVmVjdG9yPFN0cmluZz4gZXhwZWN0ZWQgeyAiVGhpcyIsICJpcyIsICJhIiwgInNlbnRl
bmNlLiIgfTsKKyAgICBBU1NFUlRfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBhY3R1YWwuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8gaSA9IDB1OyBpIDwgYWN0dWFsLnNpemUoKTsgKytpKQorICAgICAgICBF
WFBFQ1RfU1RSRVEoZXhwZWN0ZWRbaV0udXRmOCgpLmRhdGEoKSwgYWN0dWFsW2ldLnV0ZjgoKS5k
YXRhKCkpIDw8ICJWZWN0b3JzIGRpZmZlciBhdCBpbmRleCAiIDw8IGk7CisKKyAgICBhY3R1YWwg
PSBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnICcpOworICAgIGV4cGVjdGVkID0g
eyAiIiwgIlRoaXMiLCAiIiwgIiIsICIiLCAiIiwgImlzIiwgIiIsICJhIiwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIiwgInNlbnRlbmNlLiIsICIiIH07CisgICAgQVNTRVJUX0VRKGV4cGVjdGVkLnNp
emUoKSwgYWN0dWFsLnNpemUoKSk7CisgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGFjdHVhbC5z
aXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkW2ldLnV0ZjgoKS5kYXRh
KCksIGFjdHVhbFtpXS51dGY4KCkuZGF0YSgpKSA8PCAiVmVjdG9ycyBkaWZmZXIgYXQgaW5kZXgg
IiA8PCBpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDNlYTNjMGE1OGU4ODgwYTA4YjA1ZGVm
YTllYjA5Y2MwMTYwNTI1ZTYuLjY1ODFlOGNiZGRmYzBhZWU0ZTE1M2UxMzhiOWU5ZjNlMzJkYjUx
NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDg4
LDcgKzEwODgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVy
KFRlc3RPcHRpb25zJiB0ZXN0T3B0aW9ucywgY29uc3Qgc3RkOgogICAgICAgICBhdXRvIGtleSA9
IHBhaXJTdHJpbmcuc3Vic3RyKHBhaXJTdGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQp
OwogICAgICAgICBhdXRvIHZhbHVlID0gcGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24g
KyAxLCBwYWlyRW5kIC0gKGVxdWFsc0xvY2F0aW9uICsgMSkpOwogICAgICAgICBpZiAoa2V5ID09
ICJsYW5ndWFnZSIpCi0gICAgICAgICAgICBTdHJpbmcodmFsdWUuY19zdHIoKSkuc3BsaXQoIiwi
LCBmYWxzZSwgdGVzdE9wdGlvbnMub3ZlcnJpZGVMYW5ndWFnZXMpOworICAgICAgICAgICAgU3Ry
aW5nKHZhbHVlLmNfc3RyKCkpLnNwbGl0KCIsIiwgdGVzdE9wdGlvbnMub3ZlcnJpZGVMYW5ndWFn
ZXMpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gInVzZVRocmVhZGVkU2Nyb2xsaW5nIikKICAg
ICAgICAgICAgIHRlc3RPcHRpb25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VBY2Nl
bGVyYXRlZERyYXdpbmciKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345832</attachid>
            <date>2018-07-25 23:45:06 -0700</date>
            <delta_ts>2018-07-26 15:00:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187963-20180725234505.patch</filename>
            <type>text/plain</type>
            <size>76038</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0MjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZWEwMDgyMjk3Zjg5ODZhYTA3NDM4Y2Q2OWMzZGE2NmEzZjA1MjdlLi42Njk2NTg5MWE3NDJjMTBj
YmM1OGM4MmZkMGVhYzYwNzExYjU0NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wNy0yNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRBbGxvd2lu
Z0VtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoTW9k
dWxlTmFtZTo6TW9kdWxlTmFtZSk6CisgICAgICAgIChyZXNvbHZlUGF0aCk6CisgICAgICAgICog
cnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTGFuZ3Vh
Z2VUYWcpOgorICAgICAgICAoSlNDOjpyZW1vdmVVbmljb2RlTG9jYWxlRXh0ZW5zaW9uKToKKyAg
ICAgICAgVXBkYXRlIHNwbGl0L3NwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMgdXNhZ2UuCisKIDIw
MTgtMDctMjUgIEFuZHkgVmFuV2Fnb25lciAgPGFuZHlAdmFud2Fnb25lci5mYW1pbHk+CiAKICAg
ICAgICAgW0lOVExdIENhbGwgVHlwZWQgQXJyYXkgZWxlbWVudHMgdG9Mb2NhbGVTdHJpbmcgd2l0
aCBsb2NhbGUgYW5kIG9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTJhZGE5OWQ5MTE2ODY4M2EyNzQyZjRlYWQxZDFk
ZjQyYWFhNzRkMy4uNjBkZDQzYjdiYTcxYzhkMTM4ZjVhMDM0ZmRkM2Q2NTQ5MGIxOWIxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxOC0wNy0yNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNob3VsZCBoYXZlIGEgc3BsaXRB
bGxvd2luZ0VtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZmxhZyBwYXJhbWV0ZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzk2Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Fz
c2VydGlvbnMuY3BwOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRBbGxvd2luZ0VtcHR5RW50
cmllcyB1c2FnZS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDoKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyBjb25zdCk6CisgICAg
ICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpzcGxp
dEludGVybmFsIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpzcGxpdCBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlN0cmluZzo6c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyBjb25zdCk6Cisg
ICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6c3Bs
aXQgY29uc3QpOgorICAgICAgICBJbnRyb2R1Y2Ugc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyBp
bnN0ZWFkIG9mIGJvb2xlYW4gb3IgZW51bSBwYXJhbWV0ZXIuCisKIDIwMTgtMDctMjUgIFRvbWFz
IFBvcGVsYSAgPHRwb3BlbGFAcmVkaGF0LmNvbT4KIAogICAgICAgICBDb3JyZWN0bHkgY2xvc2Ug
dGhlIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMTZjMmE2MzBmYmE3NDdm
MGY1MmViZDA3MTgzZjZlN2NjYTU3ZDNmLi45ZDExN2ExNDIzMjk0NGI1NDNhOGMzYmM0M2VlYjc1
OTVlODNmZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTgtMDctMjUgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFN0cmluZyhWaWV3
KSBzaG91bGQgaGF2ZSBhIHNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMgZnVuY3Rpb24gaW5zdGVh
ZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODc5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENvbnRhY3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQpOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzUmVzcG9uc2VWYXJ5U3Rhckhl
YWRlclZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpxdWVyeUNhY2hlTWF0Y2gpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbHRlcklDRUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZpbHRlclNEUCBjb25zdCk6CisgICAgICAgICogTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmRldGVybWluZUFSSUFEcm9wRWZmZWN0cyk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFSSUFEcm9wRWZmZWN0cyk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpzaG91bGRDYW5jZWxE
ZWZhdWx0QWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaWxsQ29udGFpbmVyRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVGcmFnbWVudEZyb21UZXh0KToKKyAgICAgICAgKiBodG1sL0VtYWlsSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtYWlsSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RW1haWxJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUFjY2VwdEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6c2V0TWVzc2FnZURP
TUFuZFN0YXJ0VGltZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZv
clBhdGgpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjplbmNvZGluZ0Zyb21BY2NlcHRDaGFyc2V0KToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VUaW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFzc2VzVGltaW5nQWxsb3dDaGVj
ayk6CisgICAgICAgICogcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZURpc2FibGVkQWRhcHRhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEaWFs
b2dGZWF0dXJlc01hcCk6CisgICAgICAgICogcGxhdGZvcm0vVVJMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzSVB2NEFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6aXNJUHY2QWRkcmVzcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdMQ29udGV4dDo6dmVyc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVy
blRvRmFtaWxpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEdTdHJlYW1lck9wdGlv
bnNGcm9tQ29tbWFuZExpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9u
czNET3BlbkdMQ29tbW9uOjpFeHRlbnNpb25zM0RPcGVuR0xDb21tb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5z
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGE6OnNldFVSSUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVhGcmFtZU9wdGlvbnNIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyc0FsbG93TGlzdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
Q2FjaGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENh
Y2hlTWFuYWdlcjo6bG9hZEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llSmFyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTSk6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9T
VkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9u
dENvbnZlcnRlcjo6YXBwZW5kT1MyVGFibGUpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVsZW1lbnQ6OnBhcnNl
QmVnaW5PckVuZCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIFVwZGF0
ZSBzcGxpdC9zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3LTI1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgQWN0aXZlRE9N
T2JqZWN0J3MgY2FuU3VzcGVuZCAvIHN1c3BlbmQgLyByZXN1bWUgb3ZlcnJpZGVzIHRvIGRlc3Ry
b3kgQWN0aXZlRE9NT2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCBmYTI4ZGIyYWQ0ZTgwODIzODQx
NWEyNzczOTM5NTBiZGZlYTE1NTk2Li42MDRlNzQ0NmM2ZGJjYzQ2OWU2M2M2M2QxMzA4NmE0N2My
NzQyMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA3LTI1ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBTdHJpbmcoVmll
dykgc2hvdWxkIGhhdmUgYSBzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIGZ1bmN0aW9uIGluc3Rl
YWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZl
cjo6V2ViRHJpdmVyU2VydmljZTo6ZmluZENvbW1hbmQpOgorICAgICAgICAqIGdsaWIvV2ViRHJp
dmVyU2VydmljZUdMaWIuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpwYXJzZVZlcnNpb24pOgor
ICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyB1c2FnZS4KKwog
MjAxOC0wNy0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBBZGQgLS1ob3N0IG9wdGlvbiB0byBXZWJEcml2ZXIgcHJvY2Vz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBhNzI1MmVlZTE5ZGRjNzc5N2IzMzI5ZWNiZjk1ZDBhYWFlZGVhNzNjLi4w
MTFjMTVhNWNmYWM5NTE1YWZjNDViMGRiZjU0NTdjYTM1YWJlZTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM2IEBACisyMDE4LTA3LTI1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KKworICAgICAgICBTdHJpbmcoVmlldykgc2hvdWxkIGhhdmUgYSBzcGxpdEFsbG93aW5n
RW1wdHlFbnRyaWVzIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBmbGFnIHBhcmFtZXRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3OTYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNh
Y2hlU3RvcmFnZTo6dXBkYXRlVmFyeUluZm9ybWF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyk6CisgICAgICAgICogU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpnZXRQbHVnaW5JbmZvRnJvbVByb3BlcnR5TGlzdHMpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WZXJzaW9uOjpwYXJzZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6cGFyc2VNSU1FRGVzY3JpcHRpb24pOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnBsdWdpbnNEaXJlY3Rvcmllcyk6CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFBy
b2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNh
bmRib3gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpmaWxlQ2FuQmVBY2NlcHRl
ZEZvclVwbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xh
dW5jaGVyR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNo
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlV
bml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2lu
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojppc1RyYW5zcGFyZW50U2lsdmVybGlnaHRCYWNrZ3JvdW5k
VmFsdWUpOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyB1
c2FnZS4KKwogMjAxOC0wNy0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbbWFjT1NdIFVwZGF0ZSBzYW5kYm94ZXMgZm9yIHJldmlzZWQgT3BlbkNMIGNh
bGxzIGFuZCBzdHJlYW1pbmcgbWVkaWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0
OWUxZWY1MDY0NjY0ZDY2YTBkM2IyMDNmM2E4NGE1ZmNiNjFlMzIyLi4xNDY2MDRjZmI3NTg0N2Yz
MWYzZmYzMzllODg3OGYzMDY5NzQ2ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTgtMDctMjUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgorCisgICAgICAgIFN0cmluZyhWaWV3KSBzaG91bGQgaGF2ZSBhIHNwbGl0QWxs
b3dpbmdFbXB0eUVudHJpZXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIGZsYWcgcGFyYW1ldGVyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8pOgorICAgICAgICBVcGRhdGUgc3BsaXQvc3BsaXRBbGxvd2luZ0VtcHR5RW50cmll
cyB1c2FnZS4KKwogMjAxOC0wNy0xOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10gSW50ZXJwb2xhdGlvbiBiZXR3ZWVuIGZvbnQt
c3R5bGVzIHdpdGggYSBrZXl3b3JkIHZhbHVlIHNob3VsZCBiZSBkaXNjcmV0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyLmNwcAppbmRleCA5OWVjMjdhMDNmOGRkMDQ4MTE3MzkyYjcyYzY2OGRiYjVl
YmNmZTliLi5hYTRlYjRlM2Q5ZWJmZjAwNmM0ODc0NDU3YjUzZDYwZGU0MTYwMjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTYxLDggKzE2MSw3IEBAIHZvaWQgQmFja2VuZERp
c3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbkFuZE1ldGhv
ZDsKLSAgICAgICAgbWV0aG9kU3RyaW5nLnNwbGl0KCcuJywgdHJ1ZSwgZG9tYWluQW5kTWV0aG9k
KTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZG9tYWluQW5kTWV0aG9kID0gbWV0aG9kU3RyaW5n
LnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy4nKTsKICAgICAgICAgaWYgKGRvbWFpbkFuZE1l
dGhvZC5zaXplKCkgIT0gMiB8fCAhZG9tYWluQW5kTWV0aG9kWzBdLmxlbmd0aCgpIHx8ICFkb21h
aW5BbmRNZXRob2RbMV0ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJy
b3IoSW52YWxpZFJlcXVlc3QsICJUaGUgJ21ldGhvZCcgcHJvcGVydHkgd2FzIGZvcm1hdHRlZCBp
bmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdEb21haW4ubWV0aG9kJyJfcyk7CiAgICAgICAgICAg
ICBzZW5kUGVuZGluZ0Vycm9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBkYTJlNzFjMGE5
NmY4YzhlM2VkZTM0ZWY2NjI1M2ZmYzRiNGMzZWI4Li5jNDliYWFjZGQ0NjliZDYxZTU3NDk4MWZj
OWQ0MWQ4ZmU0N2RjOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNjg3LDcgKzY4Nyw3IEBA
IHN0cnVjdCBNb2R1bGVOYW1lIHsKIE1vZHVsZU5hbWU6Ok1vZHVsZU5hbWUoY29uc3QgU3RyaW5n
JiBtb2R1bGVOYW1lKQogewogICAgIC8vIEEgbW9kdWxlIG5hbWUgZ2l2ZW4gZnJvbSBjb2RlIGlz
IHJlcHJlc2VudGVkIGFzIHRoZSBVTklYIHN0eWxlIHBhdGguIExpa2UsIGAuL0EvQi5qc2AuCi0g
ICAgbW9kdWxlTmFtZS5zcGxpdCgnLycsIHRydWUsIHF1ZXJpZXMpOworICAgIHF1ZXJpZXMgPSBt
b2R1bGVOYW1lLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy8nKTsKIH0KIAogc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gZXh0cmFjdERpcmVjdG9yeU5hbWUoY29uc3QgU3Ry
aW5nJiBhYnNvbHV0ZVBhdGhUb0ZpbGUpCkBAIC03NTAsOCArNzUwLDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogCiBzdGF0
aWMgU3RyaW5nIHJlc29sdmVQYXRoKGNvbnN0IERpcmVjdG9yeU5hbWUmIGRpcmVjdG9yeU5hbWUs
IGNvbnN0IE1vZHVsZU5hbWUmIG1vZHVsZU5hbWUpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gZGly
ZWN0b3J5UGllY2VzOwotICAgIGRpcmVjdG9yeU5hbWUucXVlcnlOYW1lLnNwbGl0KHBhdGhTZXBh
cmF0b3IoKSwgZmFsc2UsIGRpcmVjdG9yeVBpZWNlcyk7CisgICAgVmVjdG9yPFN0cmluZz4gZGly
ZWN0b3J5UGllY2VzID0gZGlyZWN0b3J5TmFtZS5xdWVyeU5hbWUuc3BsaXQocGF0aFNlcGFyYXRv
cigpKTsKIAogICAgIC8vIE9ubHkgZmlyc3QgJy8nIGlzIHJlY29nbml6ZWQgYXMgdGhlIHBhdGgg
ZnJvbSB0aGUgcm9vdC4KICAgICBpZiAobW9kdWxlTmFtZS5zdGFydHNXaXRoUm9vdCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAxNzBmOGRk
NjhmMzdlZTgyMzBmOGU5YTZiZjcwNGM2Zjg4YmIxOWI1Li5iMWVjZDkzODIwOWRhZjdlYjgwMDZm
MmU3MzA0OTZiYmE4YjhlY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcApAQCAtNDc0LDggKzQ3NCw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2Fs
aXplTGFuZ3VhZ2VUYWcoY29uc3QgU3RyaW5nJiBsb2NhbGUpCiAgICAgaWYgKCFncmFuZGZhdGhl
ci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGdyYW5kZmF0aGVyOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gcGFydHM7Ci0gICAgbG9jYWxlLnNwbGl0KCctJywgdHJ1ZSwgcGFydHMpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcnRzID0gbG9jYWxlLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy0n
KTsKICAgICBpZiAoIXBhcnRzLmlzRW1wdHkoKSkgewogICAgICAgICBTdHJpbmcgbGFuZ3RhZyA9
IGNhbm9uaWNhbExhbmdUYWcocGFydHMpOwogICAgICAgICBpZiAoIWxhbmd0YWcuaXNOdWxsKCkp
CkBAIC02MDgsOCArNjA3LDcgQEAgU3RyaW5nIGRlZmF1bHRMb2NhbGUoRXhlY1N0YXRlJiBzdGF0
ZSkKIAogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBs
b2NhbGUpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGFydHM7Ci0gICAgbG9jYWxlLnNwbGl0KCct
JywgcGFydHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHBhcnRzID0gbG9jYWxlLnNwbGl0KCctJyk7
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIHNpemVfdCBwYXJ0c1NpemUgPSBwYXJ0
cy5zaXplKCk7CiAgICAgYm9vbCBhdFByaXZhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAK
aW5kZXggMTNiNzA5MzE1MGVlNjU1MWU0NmRlZGE3YWUyNjVmZWVkNzAwZDM4Yi4uOTcwMGUwNWZh
NmY5MzYyYmFhOTYzNTYyMTYxN2UwOTM0NDY1N2ZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKQEAg
LTUwNCwxMyArNTA0LDggQEAgdm9pZCBXVEZJbml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21T
dHJpbmcoV1RGTG9nQ2hhbm5lbCogY2hhbm5lbHNbXSwgc2l6ZV90IGMKICAgICB9CiAjZW5kaWYK
IAotICAgIFN0cmluZyBsb2dMZXZlbFN0cmluZyA9IGxvZ0xldmVsOwotICAgIFZlY3RvcjxTdHJp
bmc+IGNvbXBvbmVudHM7Ci0gICAgbG9nTGV2ZWxTdHJpbmcuc3BsaXQoJywnLCBjb21wb25lbnRz
KTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkg
ewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBjb21wb25lbnRJbmZvOwotICAgICAgICBjb21wb25l
bnRzW2ldLnNwbGl0KCc9JywgY29tcG9uZW50SW5mbyk7CisgICAgZm9yIChhdXRvJiBsb2dMZXZl
bENvbXBvbmVudCA6IFN0cmluZyhsb2dMZXZlbCkuc3BsaXQoJywnKSkgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBjb21wb25lbnRJbmZvID0gbG9nTGV2ZWxDb21wb25lbnQuc3BsaXQoJz0nKTsK
ICAgICAgICAgU3RyaW5nIGNvbXBvbmVudCA9IGNvbXBvbmVudEluZm9bMF0uc3RyaXBXaGl0ZVNw
YWNlKCk7CiAKICAgICAgICAgV1RGTG9nQ2hhbm5lbFN0YXRlIGxvZ0NoYW5uZWxTdGF0ZSA9IFdU
RkxvZ0NoYW5uZWxPbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggMDJlZDc1MzcyOTky
MmE3MmU1YzE2OGIzYzA0YWM1N2Q3NGQ5NDc0Yi4uYzZjNjg4MzJlZTUyMzE1NjFjMjU5ZWFjNGI1
MDIwM2MzNjg5ZWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEyNCwxMSArMTI0
LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVk
aWNhdGU+CiAgICAgU3RyaW5nVmlldyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFy
YWN0ZXJzKGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmKTsKIAotICAgIGVudW0gQWxs
b3dFbXB0eUVudHJpZXNUYWcgeyBBbGxvd0VtcHR5RW50cmllcyB9OwotCiAgICAgY2xhc3MgU3Bs
aXRSZXN1bHQ7CiAgICAgU3BsaXRSZXN1bHQgc3BsaXQoVUNoYXIpIGNvbnN0OwotICAgIFNwbGl0
UmVzdWx0IHNwbGl0KFVDaGFyLCBBbGxvd0VtcHR5RW50cmllc1RhZykgY29uc3Q7CisgICAgU3Bs
aXRSZXN1bHQgc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhVQ2hhcikgY29uc3Q7CiAKICAgICBz
aXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3Qg
ZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3Q7CkBA
IC05MDUsNyArOTAzLDcgQEAgaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6c3BsaXQoVUNoYXIgc2Vw
YXJhdG9yKSBjb25zdCAtPiBTcGxpdFJlc3VsdAogICAgIHJldHVybiBTcGxpdFJlc3VsdCB7ICp0
aGlzLCBzZXBhcmF0b3IsIGZhbHNlIH07CiB9CiAKLWlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OnNw
bGl0KFVDaGFyIHNlcGFyYXRvciwgQWxsb3dFbXB0eUVudHJpZXNUYWcpIGNvbnN0IC0+IFNwbGl0
UmVzdWx0CitpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpzcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVz
KFVDaGFyIHNlcGFyYXRvcikgY29uc3QgLT4gU3BsaXRSZXN1bHQKIHsKICAgICByZXR1cm4gU3Bs
aXRSZXN1bHQgeyAqdGhpcywgc2VwYXJhdG9yLCB0cnVlIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKaW5kZXggNTdiZjFmOGQwNmFjZDk4ZWY2MmI4MGIxNjk3MDQyZjRkZGU2YmMwMy4u
MTc4MTEzM2RmMTNjODU4NTQxZWVkNWQwZWYzMjRjYjU5MGUzZGFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcApAQCAtNzA1LDkgKzcwNSwxMCBAQCBib29sIFN0cmluZzo6aXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKICAgICByZXR1cm4gaXNFbXB0eSgpIHx8IChtX2lt
cGwtPmhhc09uZVJlZigpICYmICFtX2ltcGwtPmlzQXRvbWljKCkpOwogfQogCi12b2lkIFN0cmlu
Zzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMs
IFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0Cit0ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlF
bnRyaWVzPgoraW5saW5lIFZlY3RvcjxTdHJpbmc+IFN0cmluZzo6c3BsaXRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHNlcGFyYXRvcikgY29uc3QKIHsKLSAgICByZXN1bHQuY2xlYXIoKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAKICAgICB1bnNpZ25lZCBzdGFydFBvcyA9IDA7CiAgICAg
c2l6ZV90IGVuZFBvczsKQEAgLTcxOCw5ICs3MTksMTIgQEAgdm9pZCBTdHJpbmc6OnNwbGl0KGNv
bnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3Ry
aW4KICAgICB9CiAgICAgaWYgKGFsbG93RW1wdHlFbnRyaWVzIHx8IHN0YXJ0UG9zICE9IGxlbmd0
aCgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnN0cmluZyhzdGFydFBvcykpOworCisgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFyIHNlcGFyYXRvciwg
Ym9vbCBhbGxvd0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJiBmdW5jdG9yKSBjb25z
dAordGVtcGxhdGU8Ym9vbCBhbGxvd0VtcHR5RW50cmllcz4KK2lubGluZSB2b2lkIFN0cmluZzo6
c3BsaXRJbnRlcm5hbChVQ2hhciBzZXBhcmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYgZnVuY3Rv
cikgY29uc3QKIHsKICAgICBTdHJpbmdWaWV3IHZpZXcoKnRoaXMpOwogCkBAIC03MzUsMTIgKzcz
OSw0NSBAQCB2b2lkIFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1w
dHlFbnRyaWVzLCBjb25zdCBTcGxpdEZ1bmN0b3ImCiAgICAgICAgIGZ1bmN0b3Iodmlldy5zdWJz
dHJpbmcoc3RhcnRQb3MpKTsKIH0KIAotdm9pZCBTdHJpbmc6OnNwbGl0KFVDaGFyIHNlcGFyYXRv
ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QK
K3RlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+CitpbmxpbmUgVmVjdG9yPFN0cmluZz4g
U3RyaW5nOjpzcGxpdEludGVybmFsKFVDaGFyIHNlcGFyYXRvcikgY29uc3QKIHsKLSAgICByZXN1
bHQuY2xlYXIoKTsKLSAgICBzcGxpdChzZXBhcmF0b3IsIGFsbG93RW1wdHlFbnRyaWVzLCBbJnJl
c3VsdF0oU3RyaW5nVmlldyBpdGVtKSB7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OworICAg
IHNwbGl0SW50ZXJuYWw8YWxsb3dFbXB0eUVudHJpZXM+KHNlcGFyYXRvciwgWyZyZXN1bHRdKFN0
cmluZ1ZpZXcgaXRlbSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGl0ZW0udG9TdHJpbmcoKSk7
CiAgICAgfSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0cmluZzo6c3BsaXQo
VUNoYXIgc2VwYXJhdG9yLCBjb25zdCBTcGxpdEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0Cit7Cisg
ICAgc3BsaXRJbnRlcm5hbDxmYWxzZT4oc2VwYXJhdG9yLCBmdW5jdG9yKTsKK30KKworVmVjdG9y
PFN0cmluZz4gU3RyaW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNwbGl0SW50ZXJuYWw8ZmFsc2U+KHNlcGFyYXRvcik7Cit9CisKK1ZlY3RvcjxTdHJpbmc+
IFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHNwbGl0SW50ZXJuYWw8ZmFsc2U+KHNlcGFyYXRvcik7Cit9CisKK3ZvaWQgU3RyaW5nOjpz
cGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvciwgY29uc3QgU3BsaXRGdW5j
dG9yJiBmdW5jdG9yKSBjb25zdAoreworICAgIHNwbGl0SW50ZXJuYWw8dHJ1ZT4oc2VwYXJhdG9y
LCBmdW5jdG9yKTsKK30KKworVmVjdG9yPFN0cmluZz4gU3RyaW5nOjpzcGxpdEFsbG93aW5nRW1w
dHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gc3BsaXRJbnRl
cm5hbDx0cnVlPihzZXBhcmF0b3IpOworfQorCitWZWN0b3I8U3RyaW5nPiBTdHJpbmc6OnNwbGl0
QWxsb3dpbmdFbXB0eUVudHJpZXMoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHNwbGl0SW50ZXJuYWw8dHJ1ZT4oc2VwYXJhdG9yKTsKIH0KIAogQ1N0cmluZyBT
dHJpbmc6OmFzY2lpKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDQzNTQ1ZjJj
MmY3YjNlNjE1OGRhODliOTJkZGNlN2EwNjVmNDc4OTEuLmU3OWYxNWVjOGI2ZWJkOTc2ZWY0MzY0
MTQ2ZTY3NTRhYjQwZDJkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMjcwLDE1ICsy
NzAsMTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGEpOyB9CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVV
bmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKSB7IHJldHVybiBTdHJp
bmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgZGF0YSk7IH0KIAotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBib29sIGFs
bG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lk
IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBj
b25zdCB7IHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7IH0KLQogICAgIHVzaW5nIFNw
bGl0RnVuY3RvciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmdWaWV3Jik+OwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxv
d0VtcHR5RW50cmllcywgY29uc3QgU3BsaXRGdW5jdG9yJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRy
aWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdDsKLSAgICB2b2lkIHNwbGl0KFVDaGFy
IHNlcGFyYXRvciwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QgeyBzcGxpdChzZXBhcmF0
b3IsIGZhbHNlLCByZXN1bHQpOyB9Ci0gICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoVUNoYXIgc2Vw
YXJhdG9yKSBjb25zdDsKLSAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvcikgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdChVQ2hh
ciBzZXBhcmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYpIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0OworICAg
IFdURl9FWFBPUlRfUFJJVkFURSBWZWN0b3I8U3RyaW5nPiBzcGxpdChjb25zdCBTdHJpbmcmIHNl
cGFyYXRvcikgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKFVDaGFyIHNlcGFyYXRvciwgY29uc3QgU3BsaXRGdW5jdG9yJikgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IHNwbGl0QWxsb3dpbmdF
bXB0eUVudHJpZXMoVUNoYXIgc2VwYXJhdG9yKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgVmVjdG9yPFN0cmluZz4gc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyhjb25zdCBTdHJpbmcm
IHNlcGFyYXRvcikgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHRvSW50U3Ry
aWN0KGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCkgY29uc3Q7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHVuc2lnbmVkIHRvVUludFN0cmljdChib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApIGNvbnN0OwpAQCAtMzcwLDYgKzM3MCwxMCBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgcmVtb3ZlSW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBhcHBlbmRJbnRlcm5hbChDaGFyYWN0ZXJUeXBlKTsKIAor
ICAgIHRlbXBsYXRlPGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IHZvaWQgc3BsaXRJbnRlcm5hbChV
Q2hhciBzZXBhcmF0b3IsIGNvbnN0IFNwbGl0RnVuY3RvciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGJvb2wgYWxsb3dFbXB0eUVudHJpZXM+IFZlY3RvcjxTdHJpbmc+IHNwbGl0SW50ZXJuYWwoVUNo
YXIgc2VwYXJhdG9yKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxib29sIGFsbG93RW1wdHlFbnRyaWVz
PiBWZWN0b3I8U3RyaW5nPiBzcGxpdEludGVybmFsKGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBj
b25zdDsKKwogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7CiB9OwogCkBAIC01MzIsMjAg
KzUzNiw2IEBAIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNfSU5MSU5F
IFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlV2l0aExpdGVyCiAgICAgcmV0dXJuICp0aGlzOwogfQog
Ci1pbmxpbmUgVmVjdG9yPFN0cmluZz4gU3RyaW5nOjpzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNv
bnN0Ci17Ci0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIHNwbGl0KHNlcGFyYXRvciwg
ZmFsc2UsIHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5lIFZlY3RvcjxT
dHJpbmc+IFN0cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IpIGNvbnN0Ci17Ci0g
ICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwotICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJl
c3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNh
cGFjaXR5PiBpbmxpbmUgU3RyaW5nIFN0cmluZzo6bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoY29u
c3QgVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZlcikKIHsKICAgICByZXR1cm4g
bWFrZThCaXRGcm9tMTZCaXRTb3VyY2UoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRD
b250YWN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRDb250YWN0Q29jb2EubW0KaW5kZXggM2JlNjIxMDUwZjk4YzVhZDVlZjg3NzcwM2IzYzgx
OWRkNjZhYzI2Zi4uYmJhYTRlZjRmZWNjMGFlN2YzYWEzNWJiMDBiYjYyMjA1ZDcxN2M4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29u
dGFjdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2Ev
UGF5bWVudENvbnRhY3RDb2NvYS5tbQpAQCAtMjAyLDggKzIwMiw3IEBAIHN0YXRpYyBBcHBsZVBh
eVBheW1lbnRDb250YWN0IGNvbnZlcnQodW5zaWduZWQgdmVyc2lvbiwgUEtDb250YWN0ICpjb250
YWN0KQogCiAgICAgQ05Qb3N0YWxBZGRyZXNzICpwb3N0YWxBZGRyZXNzID0gY29udGFjdC5wb3N0
YWxBZGRyZXNzOwogICAgIGlmIChwb3N0YWxBZGRyZXNzLnN0cmVldC5sZW5ndGgpIHsKLSAgICAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkcmVzc0xpbmVzOwotICAgICAgICBTdHJpbmcocG9zdGFsQWRk
cmVzcy5zdHJlZXQpLnNwbGl0KCJcbiIsIGFkZHJlc3NMaW5lcyk7CisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGFkZHJlc3NMaW5lcyA9IFN0cmluZyhwb3N0YWxBZGRyZXNzLnN0cmVldCkuc3BsaXQo
J1xuJyk7CiAgICAgICAgIHJlc3VsdC5hZGRyZXNzTGluZXMgPSBXVEZNb3ZlKGFkZHJlc3NMaW5l
cyk7CiAgICAgfQogICAgIHJlc3VsdC5zdWJMb2NhbGl0eSA9IHN1YkxvY2FsaXR5KHBvc3RhbEFk
ZHJlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCAy
MzEzNWMxYTE4NjExMWRlZWRkYWY1ZjRjNWIzMjkwMzdmZDVlYTQ4Li4zOGQ1YTY2MDhiZDVmNGQ0
ODg4ODEyNmY5YjU4ZjIwMmQ5NzAyMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNS
ZXNwb25zZVZhcnlTdGFySGVhZGVyVmFsdWUoY29uc3QgRmV0Y2hSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgYXV0byB2YXJ5VmFsdWUgPSByZXNwb25zZS5oZWFkZXJzKCkuaW50ZXJuYWxIZWFk
ZXJzKCkuZ2V0KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsKICAgICBib29sIGhhc1N0
YXIgPSBmYWxzZTsKLSAgICB2YXJ5VmFsdWUuc3BsaXQoJywnLCBmYWxzZSwgWyZdKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIFsmXShTdHJpbmdWaWV3IHZpZXcp
IHsKICAgICAgICAgaWYgKCFoYXNTdGFyICYmIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNw
YWNlcyh2aWV3KSA9PSAiKiIpCiAgICAgICAgICAgICBoYXNTdGFyID0gdHJ1ZTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5k
ZXggNDkxMjhjNjRlOTg3MzExNDhlMzUxMmViOTE2OTUwZmNkMzhmNGYwNy4uMWJmYmRhNzRjNjcz
NzZmMTdlYWVjMjE0NWM4YjhiNjc5MTdiZGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBxdWVy
eUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIGNhY2gKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIGlzVmFyeWlu
ZyA9IGZhbHNlOwotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmll
dyB2aWV3KSB7CisgICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykg
ewogICAgICAgICBpZiAoaXNWYXJ5aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvIG5hbWVWaWV3ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKHZpZXcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDIxM2RhZjA4YTIwMDFmZDZlOWJlZjZlNzVkNzdm
ZTE0OGI3MmQ3ZjcuLmY1ZTk5MzEzZDgyOGM3MThjNWY1OTNiOWJiZDE5ZjBhMDM5YTAxMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgU3RyaW5n
IGZpbHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCiAgICAgYm9vbCBza2lwTmV4dEl0ZW0g
PSBmYWxzZTsKICAgICBib29sIGlzRmlyc3QgPSB0cnVlOwogICAgIFN0cmluZ0J1aWxkZXIgZmls
dGVyZWRTRFA7Ci0gICAgc2RwLnNwbGl0KCcgJywgZmFsc2UsIFsmXShTdHJpbmdWaWV3IGl0ZW0p
IHsKKyAgICBzZHAuc3BsaXQoJyAnLCBbJl0oU3RyaW5nVmlldyBpdGVtKSB7CiAgICAgICAgIGlm
IChza2lwTmV4dEl0ZW0pIHsKICAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IGZhbHNlOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDcgKzQxMiw3IEBAIFN0cmluZyBQZWVyQ29ubmVjdGlv
bkJhY2tlbmQ6OmZpbHRlclNEUChTdHJpbmcmJiBzZHApIGNvbnN0CiAgICAgICAgIHJldHVybiBX
VEZNb3ZlKHNkcCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGZpbHRlcmVkU0RQOwotICAgIHNkcC5z
cGxpdCgnXG4nLCBmYWxzZSwgWyZmaWx0ZXJlZFNEUF0oU3RyaW5nVmlldyBsaW5lKSB7CisgICAg
c2RwLnNwbGl0KCdcbicsIFsmZmlsdGVyZWRTRFBdKFN0cmluZ1ZpZXcgbGluZSkgewogICAgICAg
ICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgiYT1jYW5kaWRhdGUiKSkKICAgICAgICAgICAgIGZpbHRl
cmVkU0RQLmFwcGVuZChsaW5lKTsKICAgICAgICAgZWxzZSBpZiAobGluZS5maW5kKCIgaG9zdCAi
LCAxMSkgPT0gbm90Rm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDI3MDFhZGI5Njk5YzNmYWNk
ZGIzZTVjNjBmYTU0ZWRkY2RjZTQxYjIuLjc0MjdiYjU1NzA3NWVkYTg4ZmJkNjYxMjFlN2Q5MGEz
ZjE5Y2RkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC02MDUsOCArNjA1LDcgQEAgYm9vbCBXZWJT
b2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbCBtaXNtYXRjaCJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQotICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7Ci0gICAgICAgIG1fY2xpZW50
UHJvdG9jb2wuc3BsaXQoV2ViU29ja2V0OjpzdWJwcm90b2NvbFNlcGFyYXRvcigpLCByZXN1bHQp
OworICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQgPSBtX2NsaWVudFByb3RvY29sLnNwbGl0
KFdlYlNvY2tldDo6c3VicHJvdG9jb2xTZXBhcmF0b3IoKSk7CiAgICAgICAgIGlmICghcmVzdWx0
LmNvbnRhaW5zKHNlcnZlcldlYlNvY2tldFByb3RvY29sKSkgewogICAgICAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29j
a2V0LVByb3RvY29sIG1pc21hdGNoIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApp
bmRleCA0N2Q1ZGE3ZWRlMDNmMWI2NTUwMTczMGY5YTYzNTAxMjA3Yzc4MTNmLi4zOTMzNTA3NWY2
OGM1ZDkzMWFiOTZiYmVkOWNiNTY1OTkwZTEzZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNzMxLDcgKzczMSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRHJhZ2dpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QVJJQUdyYWJiZWQoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFSSUFEcm9wRWZmZWN0cyhWZWN0b3I8U3RyaW5nPiYp
IHsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3Rz
KCkgeyByZXR1cm4geyB9OyB9CiAgICAgCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSByb290IEFYIG9i
amVjdCB0byByZXR1cm4gdGhlIGRlZXBlc3QgYXZhaWxhYmxlIGVsZW1lbnQuCiAgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGFl
ZDNlYzk1MzZlNDljMGRlMzNhYTIwNGMzOThiZDNiODQ5NGM3YTcuLjczMGNiYjVjNjQyZDZlM2Rm
ZDJjNWMyMmUxZjI5OTJjZDhlYTg3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTAyOSwx
NyArMTAyOSwxNiBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQVJJQUdyYWJi
ZWQoKQogICAgIHJldHVybiBlbGVtZW50QXR0cmlidXRlVmFsdWUoYXJpYV9ncmFiYmVkQXR0cik7
CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQVJJQURyb3BF
ZmZlY3RzKFZlY3RvcjxTdHJpbmc+JiBlZmZlY3RzKQorVmVjdG9yPFN0cmluZz4gQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGRyb3BFZmZlY3RzID0gZ2V0QXR0cmlidXRlKGFyaWFfZHJvcGVmZmVj
dEF0dHIpOwogICAgIGlmIChkcm9wRWZmZWN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWZmZWN0
cy5jbGVhcigpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
ICAgIAogICAgIFN0cmluZyBkcm9wRWZmZWN0c1N0cmluZyA9IGRyb3BFZmZlY3RzLnN0cmluZygp
OwogICAgIGRyb3BFZmZlY3RzU3RyaW5nLnJlcGxhY2UoJ1xuJywgJyAnKTsKLSAgICBkcm9wRWZm
ZWN0c1N0cmluZy5zcGxpdCgnICcsIGVmZmVjdHMpOworICAgIHJldHVybiBkcm9wRWZmZWN0c1N0
cmluZy5zcGxpdCgnICcpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCA0OGFm
NjVhZDBkMTRkOTg4NmRlODNiNGU2YjM1NGUxNjVmNmNhMzJlLi4wMDNmMTgzMjc3ZGNlNzc1OGVi
NTk4NWRlNTRiOGVjYmNhMjA3MWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTc2LDcgKzE3Niw3
IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQVJJQURyb3BwaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgaXNBUklBR3JhYmJlZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0ZXJtaW5lQVJJQURy
b3BFZmZlY3RzKFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KHVuc2ln
bmVkIGluZGV4VmFsdWUsIGJvb2wgbGFzdEluZGV4T0spIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBlMzM2OTM3MjAwMjY5MGJkODNi
MzZhMTg3MjMyOTBiNWM3MzliNDdmLi4yNDExNDFjMGJjMDNhOGE3MWM3ZjExNjY4MzJmOTYwNjZi
ZjUzOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzA5
Myw4ICszMDkzLDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cmlu
ZyopYXR0cmlidXRlTmFtZQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5pc0FSSUFHcmFiYmVkKCldOwogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRyb3BFZmZlY3RzOwotICAgICAgICBtX29iamVjdC0+
ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKGRyb3BFZmZlY3RzKTsKKyAgICAgICAgVmVjdG9yPFN0
cmluZz4gZHJvcEVmZmVjdHMgPSBtX29iamVjdC0+ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKCk7
CiAgICAgICAgIHJldHVybiBjb252ZXJ0U3RyaW5nc1RvTlNBcnJheShkcm9wRWZmZWN0cyk7CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRh
RGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9u
Lm1tCmluZGV4IGI0ZjUzZjk3NWJiN2VlZTY5NWU0MjQ2MTRlZTYwMWQ0NTEyNzA1MWUuLjViY2Mz
YThlYTQ3NjUxNzg4Mjg2ODczZWM3NjlmMDY2OTdhOTA2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTIwMiw4ICsyMDIsNyBAQCBib29s
IERhdGFEZXRlY3Rpb246OnNob3VsZENhbmNlbERlZmF1bHRBY3Rpb24oRWxlbWVudCYgZWxlbWVu
dCkKICAgICBOU0FycmF5ICpyZXN1bHRzID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPmRh
dGFEZXRlY3Rpb25SZXN1bHRzKCk7CiAgICAgaWYgKCFyZXN1bHRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0SW5kaWNlczsKLSAgICByZXN1bHRBdHRy
aWJ1dGUuc3RyaW5nKCkuc3BsaXQoJy8nLCByZXN1bHRJbmRpY2VzKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHRJbmRpY2VzID0gcmVzdWx0QXR0cmlidXRlLnN0cmluZygpLnNwbGl0KCcvJyk7
CiAgICAgRERSZXN1bHRSZWYgcmVzdWx0ID0gW1tyZXN1bHRzIG9iamVjdEF0SW5kZXg6cmVzdWx0
SW5kaWNlc1swXS50b0ludCgpXSBjb3JlUmVzdWx0XTsKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ug
b2YgYSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGNvcnJlY3Qg
c3VicmVzdWx0LgogICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgcmVzdWx0SW5kaWNlcy5zaXpl
KCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDBlMTgzZmQxMTdmNzFj
YzY5NzhhMGFhYTM3NmRjNTNmMDYxNDdjYzYuLmQxZWM1ODk3NmU2MzJlOWI3MzJhOWYwOTIzYmQ2
NzEyMDQ4MGI3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTkzMyw4ICs5MzMs
NyBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlJiBw
YXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaQogCiAgICAgQVNTRVJUKHN0cmluZy5maW5kKCdc
bicpID09IG5vdEZvdW5kKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHRhYkxpc3Q7Ci0gICAgc3Ry
aW5nLnNwbGl0KCdcdCcsIHRydWUsIHRhYkxpc3QpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhYkxp
c3QgPSBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnXHQnKTsKICAgICBTdHJpbmcg
dGFiVGV4dCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgc2l6
ZV90IG51bUVudHJpZXMgPSB0YWJMaXN0LnNpemUoKTsKQEAgLTEwMzQsOCArMTAzMyw3IEBAIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KFJhbmdlJiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgICAgICYmIGJsb2NrICE9IGVkaXRhYmxlUm9vdEZv
clBvc2l0aW9uKGNvbnRleHQuc3RhcnRQb3NpdGlvbigpKTsKICAgICBib29sIHVzZUxpbmVCcmVh
ayA9IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb250ZXh0LnN0YXJ0UG9zaXRpb24oKSk7CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiBsaXN0OwotICAgIHN0cmluZy5zcGxpdCgnXG4nLCB0cnVlLCBs
aXN0KTsgLy8gdHJ1ZSBnZXRzIHVzIGVtcHR5IHN0cmluZ3MgaW4gdGhlIGxpc3QKKyAgICBWZWN0
b3I8U3RyaW5nPiBsaXN0ID0gc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1xuJyk7
CiAgICAgc2l6ZV90IG51bUxpbmVzID0gbGlzdC5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1MaW5lczsgKytpKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcyA9IGxpc3Rb
aV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IDBhODQzMzk1YTBk
NjljZWM3MzY4MDI1YWNjYTdhN2EwYWQzMTA3ZDAuLjQyNTUzNjkzOTg4YjkzZGQxYjU5MDNmMzIx
MTgxZGY5OTIxMjkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBA
IC02NCw5ICs2NCw3IEBAIGJvb2wgRW1haWxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFl
bGVtZW50KCktPm11bHRpcGxlKCkpCiAgICAgICAgIHJldHVybiAhaXNWYWxpZEVtYWlsQWRkcmVz
cyh2YWx1ZSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gYWRkcmVzc2VzOwotICAgIHZhbHVlLnNwbGl0
KCcsJywgdHJ1ZSwgYWRkcmVzc2VzKTsKLSAgICBmb3IgKGF1dG8mIGFkZHJlc3MgOiBhZGRyZXNz
ZXMpIHsKKyAgICBmb3IgKGF1dG8mIGFkZHJlc3MgOiB2YWx1ZS5zcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKCcsJykpIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW1haWxBZGRyZXNzKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhZGRyZXNzKSkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0xMDEsOCArOTksNyBAQCBTdHJpbmcgRW1haWxJbnB1dFR5cGU6OnNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogICAgIEFTU0VS
VChlbGVtZW50KCkpOwogICAgIGlmICghZWxlbWVudCgpLT5tdWx0aXBsZSgpKQogICAgICAgICBy
ZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKG5vTGluZUJyZWFrVmFsdWUp
OwotICAgIFZlY3RvcjxTdHJpbmc+IGFkZHJlc3NlczsKLSAgICBub0xpbmVCcmVha1ZhbHVlLnNw
bGl0KCcsJywgdHJ1ZSwgYWRkcmVzc2VzKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhZGRyZXNzZXMg
PSBub0xpbmVCcmVha1ZhbHVlLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJywnKTsKICAgICBT
dHJpbmdCdWlsZGVyIHN0cmlwcGVkVmFsdWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFkZHJlc3Nlcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoaSA+IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA4ZTU4NGQ5ODU1MDkyOTBiYmNiNzJl
ODI2MDdmOWMzMGU4MTNmZDhkLi5iMWZmMTJkOTZhNTlmZGI0ZDEzZDAxMTQ0MjQ1YTMyYzgxMTNj
ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTEyNzgs
OSArMTI3OCw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBwYXJzZUFjY2VwdEF0dHJpYnV0ZShj
b25zdCBTdHJpbmcmIGFjY2VwdFN0cmluZywgYm9vbCAoKnByCiAgICAgaWYgKGFjY2VwdFN0cmlu
Zy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0eXBlczsKIAotICAgIFZlY3RvcjxTdHJpbmc+
IHNwbGl0VHlwZXM7Ci0gICAgYWNjZXB0U3RyaW5nLnNwbGl0KCcsJywgZmFsc2UsIHNwbGl0VHlw
ZXMpOwotICAgIGZvciAoYXV0byYgc3BsaXRUeXBlIDogc3BsaXRUeXBlcykgeworICAgIGZvciAo
YXV0byYgc3BsaXRUeXBlIDogYWNjZXB0U3RyaW5nLnNwbGl0KCcsJykpIHsKICAgICAgICAgU3Ry
aW5nIHRyaW1tZWRUeXBlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHNwbGl0
VHlwZSk7CiAgICAgICAgIGlmICh0cmltbWVkVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXgg
NDcwZWFlZGMzYTc2Njg2ZDVjNDAxYTA1MzdlODA3ZmEzOGY1MDVlNC4uNGNjMDBiYzE2MjQxNDJl
MWI0MTRkYjJkYjI3ZThiZTA3OWMxODdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0
aW9uTWVzc2FnZS5jcHAKQEAgLTEyNyw4ICsxMjcsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdl
OjpzZXRNZXNzYWdlRE9NQW5kU3RhcnRUaW1lcigpCiAgICAgQVNTRVJUKG1fbWVzc2FnZUJvZHkp
OwogICAgIG1fbWVzc2FnZUhlYWRpbmctPnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgbV9tZXNzYWdl
Qm9keS0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBsaW5lczsKLSAgICBt
X21lc3NhZ2Uuc3BsaXQoJ1xuJywgbGluZXMpOworICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVzID0g
bV9tZXNzYWdlLnNwbGl0KCdcbicpOwogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fbWVzc2Fn
ZUhlYWRpbmctPmRvY3VtZW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGQ1
NTk0Mjg4MThmZmMxZWU5ZjJiYzE5ZGM3NjczZWU2YWIxMmJmMDQuLjE5MTgxZTQ0YzEzMzVjOGUy
OGJhYWEzZjA4OWI3MWJmZDI0ZWVlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xNTM2LDkgKzE1
MzYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvbXBpbGVTaGFkZXIoV2Vi
R0xTaGFkZXIqIHNoYWRlcikKICAgICBpZiAoY2FudmFzICYmIG1fc3ludGhlc2l6ZWRFcnJvcnNU
b0NvbnNvbGUgJiYgIXZhbHVlKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdENhbGxT
dGFjaz4gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFp
blRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCkpOwogCi0gICAgICAgIFZlY3RvcjxTdHJp
bmc+IGVycm9yczsKLSAgICAgICAgZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpLnNwbGl0KCJcbiIs
IGVycm9ycyk7Ci0gICAgICAgIGZvciAoU3RyaW5nJiBlcnJvciA6IGVycm9ycykKKyAgICAgICAg
Zm9yIChhdXRvJiBlcnJvciA6IGdldFNoYWRlckluZm9Mb2coc2hhZGVyKS5zcGxpdCgnXG4nKSkK
ICAgICAgICAgICAgIGNhbnZhcy0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OlJlbmRl
cmluZywgTWVzc2FnZVR5cGU6OkxvZywgTWVzc2FnZUxldmVsOjpFcnJvciwgIldlYkdMOiAiICsg
ZXJyb3IsIHN0YWNrVHJhY2UuY29weVJlZigpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA0
NzIyOThiZjM0YmQxOTJjMTM4ZTJjMThhNWFkMDZlNDE0NjRiMGUzLi45ODY5YjYzODcxYWExNGQw
OTdhNDllYmY3ZTA2Yzk1NTcxNWQzOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMjI5NSw4ICsyMjk1LDcg
QEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBOb2RlKiBub2RlID0gbV9kb2N1bWVu
dC5nZXQoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBwYXRoVG9rZW5zOwotICAgIHBhdGguc3BsaXQo
JywnLCBmYWxzZSwgcGF0aFRva2Vucyk7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aFRva2VucyA9
IHBhdGguc3BsaXQoJywnKTsKICAgICBpZiAoIXBhdGhUb2tlbnMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAK
aW5kZXggZmU0Mjc4NzYxNTlhMWM3ODBlMDBlMTNkNTI0Y2Q3NzFiOTA0MzNhNy4uMzM2ZGNjMTkx
NDE3OWE2MDFmOTNhOThjNTI3YjQzY2YyMWJjODMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uY3BwCkBAIC0xMzMsMTAgKzEzMyw3IEBAIHN0YXRpYyBUZXh0RW5jb2Rp
bmcgZW5jb2RpbmdGcm9tQWNjZXB0Q2hhcnNldChjb25zdCBTdHJpbmcmIGFjY2VwdENoYXJzZXQs
IERvY3VtCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRBY2NlcHRDaGFyc2V0ID0gYWNjZXB0Q2hhcnNl
dDsKICAgICBub3JtYWxpemVkQWNjZXB0Q2hhcnNldC5yZXBsYWNlKCcsJywgJyAnKTsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IGNoYXJzZXRzOwotICAgIG5vcm1hbGl6ZWRBY2NlcHRDaGFyc2V0LnNw
bGl0KCcgJywgY2hhcnNldHMpOwotCi0gICAgZm9yIChhdXRvJiBjaGFyc2V0IDogY2hhcnNldHMp
IHsKKyAgICBmb3IgKGF1dG8mIGNoYXJzZXQgOiBub3JtYWxpemVkQWNjZXB0Q2hhcnNldC5zcGxp
dCgnICcpKSB7CiAgICAgICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKICAgICAg
ICAgaWYgKGVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBlbmNvZGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZVRpbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IGRjYzQ3YjM2MWRk
ZGY4NzU4OTkzZmQ1NGVlNDA3ZTEyYzEyYjcxOTQuLmE2YWI2ODAyNzYxYzcyNTZlYTlhMDg2Nzcz
MjM5MzZhY2RiNDI3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZVRpbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlVGltaW5nLmNw
cApAQCAtNDcsOSArNDcsNyBAQCBzdGF0aWMgYm9vbCBwYXNzZXNUaW1pbmdBbGxvd0NoZWNrKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTZWN1cgogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4gPSBpbml0aWF0b3JT
ZWN1cml0eU9yaWdpbi50b1N0cmluZygpOwotICAgIFZlY3RvcjxTdHJpbmc+IHRpbWluZ0FsbG93
T3JpZ2luczsKLSAgICB0aW1pbmdBbGxvd09yaWdpblN0cmluZy5zcGxpdCgnLCcsIHRpbWluZ0Fs
bG93T3JpZ2lucyk7Ci0gICAgZm9yIChhdXRvJiBvcmlnaW4gOiB0aW1pbmdBbGxvd09yaWdpbnMp
IHsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHRpbWluZ0FsbG93T3JpZ2luU3RyaW5nLnNwbGl0
KCcsJykpIHsKICAgICAgICAgaWYgKG9yaWdpbi5zdHJpcFdoaXRlU3BhY2UoKSA9PSBzZWN1cml0
eU9yaWdpbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggYzNmYzk5M2ZkMjI1YjhjNjdmNmRmOTE0MGVlNzBj
NjU5MmE5MTA5My4uY2Y5MDEwN2I0ZmMwZGM4Njg2ODJkZTRkNGNhZDUxOWU5OGM5NzZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTExNyw5ICsxMTcsNyBAQCB2
b2lkIHByb2Nlc3NGZWF0dXJlc1N0cmluZyhTdHJpbmdWaWV3IGZlYXR1cmVzLCBGZWF0dXJlTW9k
ZSBtb2RlLCBjb25zdCBXVEY6OkZ1bgogT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IHBh
cnNlRGlzYWJsZWRBZGFwdGF0aW9ucyhjb25zdCBTdHJpbmcmIGRpc2FibGVkQWRhcHRhdGlvbnNT
dHJpbmcpCiB7CiAgICAgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+IGRpc2FibGVkQWRh
cHRhdGlvbnM7Ci0gICAgVmVjdG9yPFN0cmluZz4gZGlzYWJsZWRBZGFwdGF0aW9uTmFtZXM7Ci0g
ICAgZGlzYWJsZWRBZGFwdGF0aW9uc1N0cmluZy5zcGxpdCgnLCcsIGZhbHNlLCBkaXNhYmxlZEFk
YXB0YXRpb25OYW1lcyk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogZGlzYWJsZWRBZGFwdGF0aW9u
TmFtZXMpIHsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBkaXNhYmxlZEFkYXB0YXRpb25zU3RyaW5n
LnNwbGl0KCcsJykpIHsKICAgICAgICAgYXV0byBub3JtYWxpemVkTmFtZSA9IG5hbWUuc3RyaXBX
aGl0ZVNwYWNlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgaWYgKG5vcm1h
bGl6ZWROYW1lID09IHdhdGNoQWRhcHRhdGlvbk5hbWUoKSkKICAgICAgICAgICAgIGRpc2FibGVk
QWRhcHRhdGlvbnMgfD0gRGlzYWJsZWRBZGFwdGF0aW9uczo6V2F0Y2g7CkBAIC0yNDgsMTAgKzI0
Niw3IEBAIHN0YXRpYyBEaWFsb2dGZWF0dXJlc01hcCBwYXJzZURpYWxvZ0ZlYXR1cmVzTWFwKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogCiAgICAgRGlhbG9nRmVhdHVyZXNNYXAgZmVhdHVyZXM7CiAK
LSAgICBWZWN0b3I8U3RyaW5nPiB2ZWN0b3I7Ci0gICAgc3RyaW5nLnNwbGl0KCc7JywgdmVjdG9y
KTsKLQotICAgIGZvciAoYXV0byYgZmVhdHVyZVN0cmluZyA6IHZlY3RvcikgeworICAgIGZvciAo
YXV0byYgZmVhdHVyZVN0cmluZyA6IHN0cmluZy5zcGxpdCgnOycpKSB7CiAgICAgICAgIHNpemVf
dCBzZXBhcmF0b3JQb3NpdGlvbiA9IGZlYXR1cmVTdHJpbmcuZmluZCgnPScpOwogICAgICAgICBz
aXplX3QgY29sb25Qb3NpdGlvbiA9IGZlYXR1cmVTdHJpbmcuZmluZCgnOicpOwogICAgICAgICBp
ZiAoc2VwYXJhdG9yUG9zaXRpb24gIT0gbm90Rm91bmQgJiYgY29sb25Qb3NpdGlvbiAhPSBub3RG
b3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IGM5OWRlMTBmNWU0NzI1NGU3NDNkMzZl
ZTk2YTAzNzg5MzRlNmYyNWYuLmU5MDg0OTcxM2ZjOWRjZjliMTk3ZDZhMTdhOTI2ZDhjMTI2MWEy
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtMTA2Niw3ICsxMDY2LDcgQEAgc3RhdGlj
IGJvb2wgaXNJUHY0QWRkcmVzcyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBhdXRvIGNvdW50
ID0gMDsKIAotICAgIGZvciAoY29uc3QgYXV0byBvY3RldCA6IHN0cmluZy5zcGxpdCgnLicsIFN0
cmluZ1ZpZXc6OkFsbG93RW1wdHlFbnRyaWVzKSkgeworICAgIGZvciAoY29uc3QgYXV0byBvY3Rl
dCA6IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCcuJykpIHsKICAgICAgICAgaWYg
KGNvdW50ID49IDQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExMDAsNyArMTEw
MCw3IEBAIHN0YXRpYyBib29sIGlzSVB2NkFkZHJlc3MoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
YXV0byBza2lwU3RhdGUgPSBOb25lOwogICAgIGF1dG8gY291bnQgPSAwOwogCi0gICAgZm9yIChj
b25zdCBhdXRvIGhleHRldCA6IHN0cmluZy5zcGxpdCgnOicsIFN0cmluZ1ZpZXc6OkFsbG93RW1w
dHlFbnRyaWVzKSkgeworICAgIGZvciAoY29uc3QgYXV0byBoZXh0ZXQgOiBzdHJpbmcuc3BsaXRB
bGxvd2luZ0VtcHR5RW50cmllcygnOicpKSB7CiAgICAgICAgIGlmIChjb3VudCA+PSA4IHx8IHNr
aXBTdGF0ZSA9PSBGaW5hbCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggMjhkOWIzYmRk
YWM5YjRiMjEzMTg3ZjAyYTFlYTMwMjdkZjJiMGJjMy4uZjZkMzBkYjU4ZTUyYmQ5N2I3MDc3NTIx
NzE0YTYwMWExMjYzZjUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuY3BwCkBAIC0xNzMsMTkgKzE3MywxOCBAQCB1bnNpZ25lZCBHTENvbnRleHQ6
OnZlcnNpb24oKQogICAgICAgICAvLyBWZXJzaW9uIHN0cmluZyBjYW4gc3RhcnQgd2l0aCB0aGUg
dmVyc2lvbiBudW1iZXIgKGFsbCB2ZXJzaW9ucyBleGNlcHQgR0xFUyAxIGFuZCAyKSBvciB3aXRo
CiAgICAgICAgIC8vICJPcGVuR0wiLiBEaWZmZXJlbnQgZmllbGRzIGluc2lkZSB0aGUgdmVyc2lv
biBzdHJpbmcgYXJlIHNlcGFyYXRlZCBieSBzcGFjZXMuCiAgICAgICAgIFN0cmluZyB2ZXJzaW9u
U3RyaW5nID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KDo6Z2xHZXRTdHJp
bmcoR0xfVkVSU0lPTikpKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdmVyc2lvblN0cmluZ0Nv
bXBvbmVudHM7Ci0gICAgICAgIHZlcnNpb25TdHJpbmcuc3BsaXQoJyAnLCB2ZXJzaW9uU3RyaW5n
Q29tcG9uZW50cyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZlcnNpb25TdHJpbmdDb21wb25l
bnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnICcpOwogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHZlcnNpb25EaWdpdHM7CiAgICAgICAgIGlmICh2ZXJzaW9uU3RyaW5nQ29tcG9uZW50c1swXSA9
PSAiT3BlbkdMIikgewogICAgICAgICAgICAgLy8gSWYgdGhlIHZlcnNpb24gc3RyaW5nIHN0YXJ0
cyB3aXRoICJPcGVuR0wiIGl0IGNhbiBiZSBHTEVTIDEgb3IgMi4gSW4gR0xFUzEgdmVyc2lvbiBz
dHJpbmcgc3RhcnRzCiAgICAgICAgICAgICAvLyB3aXRoICJPcGVuR0wgRVMtPHByb2ZpbGU+IG1h
am9yLm1pbm9yIiBhbmQgaW4gR0xFUzIgd2l0aCAiT3BlbkdMIEVTIG1ham9yLm1pbm9yIi4gVmVy
c2lvbiBpcyB0aGUKICAgICAgICAgICAgIC8vIHRoaXJkIGNvbXBvbmVudCBpbiBib3RoIGNhc2Vz
LgotICAgICAgICAgICAgdmVyc2lvblN0cmluZ0NvbXBvbmVudHNbMl0uc3BsaXQoJy4nLCB2ZXJz
aW9uRGlnaXRzKTsKKyAgICAgICAgICAgIHZlcnNpb25EaWdpdHMgPSB2ZXJzaW9uU3RyaW5nQ29t
cG9uZW50c1syXS5zcGxpdCgnLicpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
VmVyc2lvbiBpcyB0aGUgZmlyc3QgY29tcG9uZW50LiBUaGUgdmVyc2lvbiBudW1iZXIgaXMgYWx3
YXlzICJtYWpvci5taW5vciIgb3IKICAgICAgICAgICAgIC8vICJtYWpvci5taW5vci5yZWxlYXNl
Ii4gSWdub3JlIHRoZSByZWxlYXNlIG51bWJlci4KLSAgICAgICAgICAgIHZlcnNpb25TdHJpbmdD
b21wb25lbnRzWzBdLnNwbGl0KCcuJywgdmVyc2lvbkRpZ2l0cyk7CisgICAgICAgICAgICB2ZXJz
aW9uRGlnaXRzID0gdmVyc2lvblN0cmluZ0NvbXBvbmVudHNbMF0uc3BsaXQoJy4nKTsKICAgICAg
ICAgfQogCiAgICAgICAgIG1fdmVyc2lvbiA9IHZlcnNpb25EaWdpdHNbMF0udG9VSW50KCkgKiAx
MDAgKyB2ZXJzaW9uRGlnaXRzWzFdLnRvVUludCgpICogMTA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKaW5kZXggZTk3NWNjNjllNmY5N2ZmMjYyZDVmY2RmMzNkNWY2YTY3NDgwMjliNi4u
ZWVhMmQxN2YxNDY1MTU1NjdjZDgzYWJiZDk4YmYxNWY4YmRkZGMxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcApAQCAtMTE1LDkgKzExNSw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5n
PiBwYXR0ZXJuVG9GYW1pbGllcyhGY1BhdHRlcm4mIHBhdHRlcm4pCiAgICAgU3RyaW5nIHBhdHRl
cm5TdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KHBhdHRlcm5DaGFycyk7CiAgICAgZnJlZShwYXR0
ZXJuQ2hhcnMpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0czsKLSAgICBwYXR0ZXJuU3Ry
aW5nLnNwbGl0KCcsJywgcmVzdWx0cyk7Ci0gICAgcmV0dXJuIHJlc3VsdHM7CisgICAgcmV0dXJu
IHBhdHRlcm5TdHJpbmcuc3BsaXQoJywnKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gRm9udENhY2hl
OjpzeXN0ZW1Gb250RmFtaWxpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCBm
NjY4ZTc3MzNiMTUxZjI3ODFlYTZjODkzYmJiZGNjY2U2NDIyNDJkLi42MjM1M2U0ZjNlNjg0N2Y5
ZjBjZWQzNWRlMjQ2YjA1MWE4MmRkOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IGV4dHJhY3RHU3RyZWFtZXJPcHRpb25z
RnJvbUNvbW1hbmRMaW5lKCkKIAogICAgIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnM7CiAgICAgYXV0
byBvcHRpb25zU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChjb250ZW50cy5nZXQoKSwgbGVuZ3Ro
KTsKLSAgICBvcHRpb25zU3RyaW5nLnNwbGl0KCdcMCcsIGZhbHNlLCBbJm9wdGlvbnNdKFN0cmlu
Z1ZpZXcgaXRlbSkgeworICAgIG9wdGlvbnNTdHJpbmcuc3BsaXQoJ1wwJywgWyZvcHRpb25zXShT
dHJpbmdWaWV3IGl0ZW0pIHsKICAgICAgICAgaWYgKGl0ZW0uc3RhcnRzV2l0aCgiLS1nc3QiKSkK
ICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKGl0ZW0udG9TdHJpbmcoKSk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCmluZGV4IDc0YWM0ZGMxNzJmMTMx
OTcwZTNlN2I4M2UzZWM0NTM2MzVjMGMwY2EuLmQzZjAwZTYwMGJlNTVhNjYzYWYzYmVhZmM0ODAz
NzYwODY3ZjYxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCkBA
IC03OCw4ICs3OCw3IEBAIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6RXh0ZW5zaW9uczNET3Bl
bkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBiCiAgICAgbV92ZW5kb3IgPSBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9WRU5E
T1IpKSk7CiAgICAgbV9yZW5kZXJlciA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPig6OmdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwogCi0gICAgVmVjdG9yPFN0cmluZz4g
dmVuZG9yQ29tcG9uZW50czsKLSAgICBtX3ZlbmRvci5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
LnNwbGl0KCcgJywgdmVuZG9yQ29tcG9uZW50cyk7CisgICAgVmVjdG9yPFN0cmluZz4gdmVuZG9y
Q29tcG9uZW50cyA9IG1fdmVuZG9yLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJyAn
KTsKICAgICBpZiAodmVuZG9yQ29tcG9uZW50cy5jb250YWlucygibnZpZGlhIikpCiAgICAgICAg
IG1faXNOVklESUEgPSB0cnVlOwogICAgIGlmICh2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJh
dGkiKSB8fCB2ZW5kb3JDb21wb25lbnRzLmNvbnRhaW5zKCJhbWQiKSkKQEAgLTIzNSwxMCArMjM0
LDggQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVF
eHRlbnNpb25zKCkKICNlbmRpZgogICAgIHsKICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbnNTdHJp
bmcgPSBnZXRFeHRlbnNpb25zKCk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGF2YWlsYWJsZUV4
dGVuc2lvbnM7Ci0gICAgICAgIGV4dGVuc2lvbnNTdHJpbmcuc3BsaXQoJyAnLCBhdmFpbGFibGVF
eHRlbnNpb25zKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdmFpbGFibGVFeHRl
bnNpb25zLnNpemUoKTsgKytpKQotICAgICAgICAgICAgbV9hdmFpbGFibGVFeHRlbnNpb25zLmFk
ZChhdmFpbGFibGVFeHRlbnNpb25zW2ldKTsKKyAgICAgICAgZm9yIChhdXRvJiBleHRlbnNpb24g
OiBleHRlbnNpb25zU3RyaW5nLnNwbGl0KCcgJykpCisgICAgICAgICAgICBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuYWRkKGV4dGVuc2lvbik7CiAgICAgfQogICAgIG1faW5pdGlhbGl6ZWRBdmFpbGFi
bGVFeHRlbnNpb25zID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCAxY2RjZDUxYjRmZGZlNTU0NjI4ZDU4MTIzMTcy
NDcyMzk1NDY5OGIyLi5jMTVhZDA2MWNiMWQ1YzExYWIzZjljZDU3M2I0ZjBhNjEzMWZlODE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3Bw
CkBAIC0yMjUsOCArMjI1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsU2VsZWN0aW9u
RGF0YShHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZ25lZCAvKiBpbmYKICAgICAgICAgc2Vs
ZWN0aW9uLnNldFVSSUxpc3Qoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7CiAgICAg
fSBlbHNlIGlmICh0YXJnZXQgPT0gbmV0c2NhcGVVUkxBdG9tKSB7CiAgICAgICAgIFN0cmluZyB1
cmxXaXRoTGFiZWwoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7Ci0gICAgICAgIFZl
Y3RvcjxTdHJpbmc+IHBpZWNlczsKLSAgICAgICAgdXJsV2l0aExhYmVsLnNwbGl0KCdcbicsIHBp
ZWNlcyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBpZWNlcyA9IHVybFdpdGhMYWJlbC5zcGxp
dCgnXG4nKTsKIAogICAgICAgICAvLyBHaXZlIHByZWZlcmVuY2UgdG8gdGV4dC91cmktbGlzdCBo
ZXJlLCBhcyBpdCBjYW4gaG9sZCBtb3JlCiAgICAgICAgIC8vIHRoYW4gb25lIFVSSSBidXQgc3Rp
bGwgdGFrZSAgdGhlIGxhYmVsIGlmIHRoZXJlIGlzIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAppbmRleCAxZTI3OTliYTVjY2MyNTY4ZGU4MWU0
YjUwYzllYTI1YWVhNjRhNmNjLi44MmZlNDcxYTU5YzFmYmM2NWZlYmJjZTA1YjM0MzkyMTdiZDM0
ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3Bw
CkBAIC00Nyw4ICs0Nyw2IEBAIHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJJTGlzdChjb25zdCBT
dHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAKICAgICAvLyBMaW5lIHNlcGFyYXRvciBpcyBcclxuIHBl
ciBSRkMgMjQ4MyAtIGhvd2V2ZXIsIGZvciBjb21wYXRpYmlsaXR5CiAgICAgLy8gcmVhc29ucyB3
ZSBhbHNvIGFsbG93IGp1c3QgXG4gaGVyZS4KLSAgICBWZWN0b3I8U3RyaW5nPiB1cmlMaXN0Owot
ICAgIHVyaUxpc3RTdHJpbmcuc3BsaXQoJ1xuJywgdXJpTGlzdCk7CiAKICAgICAvLyBQcm9jZXNz
IHRoZSBpbnB1dCBhbmQgY29weSB0aGUgZmlyc3QgdmFsaWQgVVJMIGludG8gdGhlIHVybCBtZW1i
ZXIuCiAgICAgLy8gSW4gY2FzZSBubyBVUkxzIGNhbiBiZSBmb3VuZCwgc3Vic2VxdWVudCBjYWxs
cyB0byBnZXREYXRhKCJVUkwiKQpAQCAtNTYsOCArNTQsNyBAQCB2b2lkIFNlbGVjdGlvbkRhdGE6
OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogICAgIC8vICJUaGUgRHJh
Z0V2ZW50IGFuZCBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlcyIpLiBBbHNvIGV4dHJhY3QgYWxsIGZp
bGVuYW1lcwogICAgIC8vIGZyb20gdGhlIFVSSSBsaXN0LgogICAgIGJvb2wgc2V0VVJMID0gZmFs
c2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cmlMaXN0LnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIFN0cmluZyYgbGluZSA9IHVyaUxpc3RbaV07CisgICAgZm9yIChhdXRvJiBsaW5lIDog
dXJpTGlzdFN0cmluZy5zcGxpdCgnXG4nKSkgewogICAgICAgICBsaW5lID0gbGluZS5zdHJpcFdo
aXRlU3BhY2UoKTsKICAgICAgICAgaWYgKGxpbmUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hl
VmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFs
aWRhdGlvbi5jcHAKaW5kZXggZjRjMGE2NDRjMGVlNTFmODhhNWYyZjg4ZWQyMWQ4NTgwZWRiNzBh
Mi4uMzAyYThkNjc4OWIwYzk4YTk2MGUyMzNiYTQyODJjZDJlNzgyNjczZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAt
MzUwLDggKzM1MCw3IEBAIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKGNvbnN0IFdlYkNvcmU6OlJlCiAgICAgU3RyaW5nIHZhcnlW
YWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6
VmFyeSk7CiAgICAgaWYgKHZhcnlWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgVmVjdG9yPFN0cmluZz4gdmFyeWluZ0hlYWRlck5hbWVzOwotICAgIHZhcnlWYWx1ZS5z
cGxpdCgnLCcsIHZhcnlpbmdIZWFkZXJOYW1lcyk7CisgICAgVmVjdG9yPFN0cmluZz4gdmFyeWlu
Z0hlYWRlck5hbWVzID0gdmFyeVZhbHVlLnNwbGl0KCcsJyk7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IHZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKICAgICB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMucmVzZXJ2ZUNhcGFjaXR5KHZhcnlpbmdIZWFkZXJOYW1lcy5zaXplKCkpOwog
ICAgIGZvciAoYXV0byYgdmFyeUhlYWRlck5hbWUgOiB2YXJ5aW5nSGVhZGVyTmFtZXMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXgg
NzFmMTc2ZmQ3MzBjNGRhOTFlODUxY2VhM2IwMTRiMjUyYzA2OTQ0Yy4uOTc4NDM5ODQ4OTNmMzJh
MmUyM2ZmOTQzODgwZmI2NzllZjI3ZjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTI3NywyMSArMjc3LDE3IEBAIHN0ZDo6b3B0
aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIC8vIGlu
IGEgY2FzZS1zZW5zaXRpdmUgbWFubmVyLiAoVGhlcmUgYXJlIGxpa2VseSBvdGhlciBidWdzIGFz
IHdlbGwuKQogU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBrZXlWYWx1ZVBhaXJzOwotICAg
IHZhbHVlLnNwbGl0KCc7Jywga2V5VmFsdWVQYWlycyk7Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGgg
PSBrZXlWYWx1ZVBhaXJzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgc2l6ZV90IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBhaXJz
W2ldLmZpbmQoJz0nKTsKKyAgICBmb3IgKGF1dG8mIGtleVZhbHVlUGFpciA6IHZhbHVlLnNwbGl0
KCc7JykpIHsKKyAgICAgICAgc2l6ZV90IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBhaXIuZmlu
ZCgnPScpOwogICAgICAgICBpZiAodmFsdWVTdGFydFBvcyA9PSBub3RGb3VuZCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBrZXkgPSBrZXlWYWx1ZVBhaXJzW2ldLmxl
ZnQodmFsdWVTdGFydFBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIFN0cmluZyBrZXkg
PSBrZXlWYWx1ZVBhaXIubGVmdCh2YWx1ZVN0YXJ0UG9zKS5zdHJpcFdoaXRlU3BhY2UoKTsKIAog
ICAgICAgICBpZiAoa2V5LmlzRW1wdHkoKSB8fCBrZXkgIT0gImZpbGVuYW1lIikKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgU3RyaW5nIHZhbHVlID0ga2V5VmFsdWVQ
YWlyc1tpXS5zdWJzdHJpbmcodmFsdWVTdGFydFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwor
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBrZXlWYWx1ZVBhaXIuc3Vic3RyaW5nKHZhbHVlU3RhcnRQ
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgICAgICAvLyBSZW1vdmUgcXVvdGVzIGlm
IHRoZXJlIGFyZSBhbnkKICAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcIicpCkBAIC01MDcsMTEg
KzUwMyw4IEBAIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFk
ZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgaWYgKGhlYWRlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJzOwotICAgIGhl
YWRlci5zcGxpdCgnLCcsIGhlYWRlcnMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBo
ZWFkZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBjdXJyZW50SGVhZGVyID0gaGVh
ZGVyc1tpXS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBmb3IgKGF1dG8mIGN1cnJlbnRIZWFkZXIg
OiBoZWFkZXIuc3BsaXQoJywnKSkgeworICAgICAgICBjdXJyZW50SGVhZGVyID0gY3VycmVudEhl
YWRlci5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9u
IGN1cnJlbnRWYWx1ZSA9IFhGcmFtZU9wdGlvbnNOb25lOwogICAgICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoY3VycmVudEhlYWRlciwgImRlbnkiKSkKICAgICAgICAgICAg
IGN1cnJlbnRWYWx1ZSA9IFhGcmFtZU9wdGlvbnNEZW55OwpAQCAtNzc3LDkgKzc3MCw3IEBAIHNp
emVfdCBwYXJzZUhUVFBSZXF1ZXN0Qm9keShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCBWZWN0b3I8dW5zaWduZWQgY2hhCiAKIHZvaWQgcGFyc2VBY2Nlc3NDb250cm9sRXhwb3NlSGVh
ZGVyc0FsbG93TGlzdChjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlLCBIVFRQSGVhZGVyU2V0JiBo
ZWFkZXJTZXQpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gaGVhZGVyczsKLSAgICBoZWFkZXJWYWx1
ZS5zcGxpdCgnLCcsIGZhbHNlLCBoZWFkZXJzKTsKLSAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhl
YWRlcnMpIHsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlclZhbHVlLnNwbGl0KCcsJykp
IHsKICAgICAgICAgU3RyaW5nIHN0cmlwcGVkSGVhZGVyID0gaGVhZGVyLnN0cmlwV2hpdGVTcGFj
ZSgpOwogICAgICAgICBpZiAoIXN0cmlwcGVkSGVhZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IGhlYWRlclNldC5hZGQoc3RyaXBwZWRIZWFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IGQ2MmZkYmQ4OWNlOTVj
ZjI2OTFhYjQwZjczYzU4ZGYzMWM4ZmNjMDguLjk0OTUyNjUyMDU2M2U0YzcyMDRiMjcwZGMyMmFm
Y2Q3OTg5NjA3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE3MSw5ICsxNzEsNyBAQCBib29sIHBhcnNlQ29va2ll
SGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIENv
b2tpZSYgcgogICAgIGJvb2wgaGFzTWF4QWdlID0gZmFsc2U7CiAgICAgcmVzdWx0LnNlc3Npb24g
PSB0cnVlOwogCi0gICAgVmVjdG9yPFN0cmluZz4gY29va2llQXR0cmlidXRlczsKLSAgICBjb29r
aWVMaW5lLnNwbGl0KCc7JywgdHJ1ZSwgY29va2llQXR0cmlidXRlcyk7Ci0gICAgZm9yIChhdXRv
IGF0dHJpYnV0ZSA6IGNvb2tpZUF0dHJpYnV0ZXMpCisgICAgZm9yIChhdXRvIGF0dHJpYnV0ZSA6
IGNvb2tpZUxpbmUuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOycpKQogICAgICAgICBwYXJz
ZUNvb2tpZUF0dHJpYnV0ZXMoYXR0cmlidXRlLCBkb21haW4sIGhhc01heEFnZSwgcmVzdWx0KTsK
IAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggZjQxOGJjOTA3MDQ5OTQ0OWRm
OTNmYWViOThkZTQ4NjhkZDU2MjY3Ny4uNTUxOGUzNTU2YTZjZTJjNTM0NDFhZjNkNDZhMmJkNTM1
NGE4MzMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xNTUsOCArMTU1LDcgQEAgYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6bG9hZFJlc3BvbnNlSGVhZGVycygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwotICAgIFZlY3RvcjxTdHJpbmc+IGhlYWRlckZpZWxkczsKLSAgICBoZWFkZXJDb250
ZW50LnNwbGl0KCdcbicsIGhlYWRlckZpZWxkcyk7CisgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVy
RmllbGRzID0gaGVhZGVyQ29udGVudC5zcGxpdCgnXG4nKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlckZpZWxkcy5iZWdpbigpOwogICAgIFZlY3RvcjxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJGaWVsZHMuZW5kKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKaW5kZXggYThkZWI5ODhlMWFlYzE5MzJkMTVhN2U2ZTllNjZlYzU3YzdhOWMwMy4u
NDNiYzJlN2JmZmY0ZjliZDZmNzEwMjg1ZDZkM2Q4NjMxYmI3NzgzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2Vy
LmNwcApAQCAtMTMxLDggKzEzMSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4
KCkKIAogICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5nIGhlYWRl
ckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgVmVj
dG9yPFN0cmluZz4gaW5kZXhVUkxzOwotICAgIGhlYWRlckNvbnRlbnQuc3BsaXQoJ1xuJywgaW5k
ZXhVUkxzKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBpbmRleFVSTHMgPSBoZWFkZXJDb250ZW50LnNw
bGl0KCdcbicpOwogICAgIGJ1ZmZlci5jbGVhcigpOwogCiAgICAgLy8gQWRkIGVudHJpZXMgdG8g
aW5kZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAppbmRleCBmNDk0MDlhN2YzYjg3MWNkN2JlNzc2ZmUwMTM4YTFkMTFk
NzljMzRhLi41ZWU4NzYxZjY1YjE1YWIwOWEyNGVkYjkwZWRhYTg1MjMzZDUzMWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCkBAIC02NywxMSArNjcsOCBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIFNv
dXBDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIEdTTGlzdCog
ZXhpc3RpbmdDb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9jb29raWVfbGlzdChqYXIsIG9y
aWdpbi5nZXQoKSwgVFJVRSk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBjb29raWVzOwotICAgIHZh
bHVlLnNwbGl0KCdcbicsIGNvb2tpZXMpOwotICAgIGNvbnN0IHNpemVfdCBjb29raWVzQ291bnQg
PSBjb29raWVzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXNDb3Vu
dDsgKytpKSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8U291cENvb2tpZT4gY29va2llKHNvdXBfY29v
a2llX3BhcnNlKGNvb2tpZXNbaV0udXRmOCgpLmRhdGEoKSwgb3JpZ2luLmdldCgpKSk7CisgICAg
Zm9yIChhdXRvJiBjb29raWVTdHJpbmcgOiB2YWx1ZS5zcGxpdCgnXG4nKSkgeworICAgICAgICBH
VW5pcXVlUHRyPFNvdXBDb29raWU+IGNvb2tpZShzb3VwX2Nvb2tpZV9wYXJzZShjb29raWVTdHJp
bmcudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmdldCgpKSk7CiAgICAgICAgIGlmICghY29va2llKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcAppbmRleCA0ZWZiOGYxYjhmZjNlZWViZGY0YmE4NzE1OTczYzI2MmJmOWRhZTVh
Li4wZjkxY2QyZTc5MzMxNDJmYTNmNTFlMzJlMmEwMzY1NTZmODZhYjIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9p
ZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWMKICAgICAgICAgLy8gUGVyIHRoZSBTTUlMIHNwZWNpZmljYXRp
b24sIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlLAogICAgICAgICAvLyBhbmQgd2hp
dGUgc3BhY2UgYmVmb3JlIGFuZCBhZnRlciBzZW1pY29sb24gc2VwYXJhdG9ycywgaXMgYWxsb3dl
ZCBhbmQgd2lsbCBiZSBpZ25vcmVkLgogICAgICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9T
VkcxMS9hbmltYXRlLmh0bWwjVmFsdWVzQXR0cmlidXRlCi0gICAgICAgIHZhbHVlLnN0cmluZygp
LnNwbGl0KCc7JywgbV92YWx1ZXMpOworICAgICAgICBtX3ZhbHVlcyA9IHZhbHVlLnN0cmluZygp
LnNwbGl0KCc7Jyk7CiAgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3ZhbHVlcykKICAgICAg
ICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXBXaGl0ZVNwYWNlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCAwY2Y1NTkxZDJkMjBmMDc3
NjQ3MWJjZjljMTVjMDI2NmMwNTI0OWJmLi4yMzIyNzkxZDJlYmQ5YTM3NjIwYzllZTk5YjA1ZTFm
OGFhZDY5ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwCkBAIC01MTksOCArNTE5LDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFw
cGVuZE9TMlRhYmxlKCkKICAgICBjb25zdCB1bnNpZ25lZCBwYW5vc2VTaXplID0gMTA7CiAgICAg
Y2hhciBwYW5vc2VCeXRlc1twYW5vc2VTaXplXTsKICAgICBpZiAobV9mb250RmFjZUVsZW1lbnQp
IHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gc2VnbWVudHM7Ci0gICAgICAgIG1fZm9udEZhY2VF
bGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpwYW5vc2Vf
MUF0dHIpLnN0cmluZygpLnNwbGl0KCcgJywgc2VnbWVudHMpOworICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBzZWdtZW50cyA9IG1fZm9udEZhY2VFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjpwYW5vc2VfMUF0dHIpLnN0cmluZygpLnNwbGl0KCcgJyk7CiAg
ICAgICAgIGlmIChzZWdtZW50cy5zaXplKCkgPT0gcGFub3NlU2l6ZSkgewogICAgICAgICAgICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpIHsKICAgICAgICAgICAgICAgICBib29sIG9r
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApp
bmRleCBmYzVlZjJlMjhkYmQzZDEyOGI4ZGU2ODY5Y2U4ZGJhYTE4MzFjOWZhLi4wNjAxZTVjMzM1
NTI1YmMwNDVhZWJiYjlkMzliNGJkODZmNzZlNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNDQ2LDkgKzQ0Niw3IEBAIHZvaWQg
U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZChjb25zdCBTdHJpbmcmIHBhcnNlU3RyaW5n
LCBCZWdpbk9yRW5kIGJlZ2luCiAgICAgSGFzaFNldDxkb3VibGU+IGV4aXN0aW5nOwogICAgIGZv
ciAoYXV0byYgdGltZSA6IHRpbWVMaXN0KQogICAgICAgICBleGlzdGluZy5hZGQodGltZS50aW1l
KCkudmFsdWUoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gc3BsaXRTdHJpbmc7Ci0gICAgcGFyc2VT
dHJpbmcuc3BsaXQoJzsnLCBzcGxpdFN0cmluZyk7Ci0gICAgZm9yIChhdXRvJiBzdHJpbmcgOiBz
cGxpdFN0cmluZykgeworICAgIGZvciAoYXV0byYgc3RyaW5nIDogcGFyc2VTdHJpbmcuc3BsaXQo
JzsnKSkgewogICAgICAgICBTTUlMVGltZSB2YWx1ZSA9IHBhcnNlQ2xvY2tWYWx1ZShzdHJpbmcp
OwogICAgICAgICBpZiAodmFsdWUuaXNVbnJlc29sdmVkKCkpCiAgICAgICAgICAgICBwYXJzZUNv
bmRpdGlvbihzdHJpbmcsIGJlZ2luT3JFbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCA5ZjJiMjNmNGFmNDFiMGI3ZTVjNzllMzZmZDQ0YWFjYmFhY2Zk
MTcyLi5hNzQzM2M2Y2Y4MjI1Yzc1OGRiZGYyMmExMjM2MzkyNDAwOGMzYjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMTk4LDggKzE5OCw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uCiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlc3BvbnNlLmRhdGEoKSksIHJlc3BvbnNlLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VBcnJheTsKLSAgICBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkp
LnNwbGl0KCIgIl9zLCByZXNwb25zZUFycmF5KTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25z
ZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVz
cG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMDQsOCArMzAzLDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQsIExpY2Vuc2VUeXBlLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3I7Ci0gICAgU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgiICJfcywgcmVzcG9uc2VWZWN0b3IpOworICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9u
c2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5z
KFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggYjA0ZTBjZjll
N2I2NTlhMjQ1ZWUxYTUwZGIwNjA3ZTYxMzAwZjkxZS4uYzMzNjQ2ZjExMTUyNjllZGU0ZWY5OWRm
MzUyODUxMjYyMGY4MGI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJT
ZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBA
IC0xOTcsMTAgKzE5Nyw4IEBAIGJvb2wgV2ViRHJpdmVyU2VydmljZTo6ZmluZENvbW1hbmQoSFRU
UE1ldGhvZCBtZXRob2QsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tbWFuCiAgICAgICAgIGlmIChz
X2NvbW1hbmRzW2ldLm1ldGhvZCAhPSBtZXRob2QpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoVG9rZW5zOwotICAgICAgICBwYXRoLnNwbGl0KCIv
IiwgcGF0aFRva2Vucyk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvbW1hbmRUb2tlbnM7Ci0g
ICAgICAgIFN0cmluZzo6ZnJvbVVURjgoc19jb21tYW5kc1tpXS51cmlUZW1wbGF0ZSkuc3BsaXQo
Ii8iLCBjb21tYW5kVG9rZW5zKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aFRva2VucyA9
IHBhdGguc3BsaXQoJy8nKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gY29tbWFuZFRva2VucyA9
IFN0cmluZzo6ZnJvbVVURjgoc19jb21tYW5kc1tpXS51cmlUZW1wbGF0ZSkuc3BsaXQoJy8nKTsK
ICAgICAgICAgaWYgKHBhdGhUb2tlbnMuc2l6ZSgpICE9IGNvbW1hbmRUb2tlbnMuc2l6ZSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xp
Yi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvV2ViRHJp
dmVyU2VydmljZUdMaWIuY3BwCmluZGV4IDk3MWNhZjFjNjY0NTQ1NzcyMzk5MDJmZDhiZWNiNTMw
MWIzODgxNDMuLjU5NWQzNDM4ZTY2MWE1NDNkZGYyZDQzNWMyZTlkODliNTcxYzQ4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9XZWJEcml2ZXJTZXJ2aWNlR0xpYi5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9nbGliL1dlYkRyaXZlclNlcnZpY2VHTGliLmNwcApAQCAtMzIs
OCArMzIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCB1aW50NjRfdCYgbWFqb3IsIHVpbnQ2NF90JiBtaW5vcgogewogICAgIG1ham9yID0gbWlub3Ig
PSBtaWNybyA9IDA7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7Ci0gICAgdmVyc2lvbi5z
cGxpdCgiLiIsIGZhbHNlLCB0b2tlbnMpOworICAgIFZlY3RvcjxTdHJpbmc+IHRva2VucyA9IHZl
cnNpb24uc3BsaXQoJy4nKTsKICAgICBib29sIG9rOwogICAgIHN3aXRjaCAodG9rZW5zLnNpemUo
KSkgewogICAgIGNhc2UgMzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggYWM4YmJj
MmRiZTRhOGZlZjgyMmE1NWNlZjllYzgzNGZiNTIyZThlZS4uNjkxNTVmZjIwOTMzMWU2YjFkNWUz
ZmQyMjVmZmIwZTRiNTA3YjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVZhcnlJbmZvcm1hdGlvbihSZWNv
cmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHZhcnlWYWx1ZS5zcGxpdCgnLCcsIGZhbHNlLCBbJl0oU3RyaW5nVmlldyB2aWV3
KSB7CisgICAgdmFyeVZhbHVlLnNwbGl0KCcsJywgWyZdKFN0cmluZ1ZpZXcgdmlldykgewogICAg
ICAgICBpZiAoIXJlY29yZEluZm9ybWF0aW9uLmhhc1ZhcnlTdGFyICYmIHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRUUFNwYWNlcyh2aWV3KSA9PSAiKiIpCiAgICAgICAgICAgICByZWNvcmRJbmZv
cm1hdGlvbi5oYXNWYXJ5U3RhciA9IHRydWU7CiAgICAgICAgIFN0cmluZyBoZWFkZXJOYW1lID0g
dmlldy50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCA1NjEzYmU4
ODJmZDZjZGU5ZWRlZDEwNDI3YzUyZjRhZjUzNGIxNzY0Li5kNjc5Y2QzNTY2NDE2NjNiYWM0NzVi
ZDk1MzZjYTA1MDVhNDM5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAtMjE2
LDkgKzIxNiw4IEBAIGludCBNYW5hZ2VyOjpmdXp6eU1hdGNoVVJMcyhjb25zdCBXZWJDb3JlOjpV
UkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTFBhCiAgICAgY29uc3QgYXV0byYgcmVx
dWVzdFBhdGggPSByZXF1ZXN0VVJMLnBhdGgoKTsKICAgICBjb25zdCBhdXRvJiByZXNvdXJjZVBh
dGggPSByZXNvdXJjZVVSTC5wYXRoKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0UGF0
aENvbXBvbmVudHMsIHJlc291cmNlUGF0aENvbXBvbmVudHM7Ci0gICAgcmVxdWVzdFBhdGguc3Bs
aXQoJy8nLCByZXF1ZXN0UGF0aENvbXBvbmVudHMpOwotICAgIHJlc291cmNlUGF0aC5zcGxpdCgn
LycsIHJlc291cmNlUGF0aENvbXBvbmVudHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RQ
YXRoQ29tcG9uZW50cyA9IHJlcXVlc3RQYXRoLnNwbGl0KCcvJyk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzb3VyY2VQYXRoQ29tcG9uZW50cyA9IHJlc291cmNlUGF0aC5zcGxpdCgnLycpOwogCiAg
ICAgYXV0byB1cGRhdGVkSXRlcmF0b3JzID0gc3RkOjptaXNtYXRjaCgKICAgICAgICAgc3RkOjpi
ZWdpbihyZXF1ZXN0UGF0aENvbXBvbmVudHMpLCBzdGQ6OmVuZChyZXF1ZXN0UGF0aENvbXBvbmVu
dHMpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9t
YWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRleCBmZWVhMWVm
N2ViZjk3MWI3YjI4YjAzZDc3ZTFhODdjMjA5YTE5NDBmLi42OGQ3YzZhZGYzNjI3NTEzMTI5NjM1
NjI4NmYxMWU4NDljMTRjMmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQpAQCAtMTQ5LDggKzE0OSw3IEBAIHN0YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9tUHJv
cGVydHlMaXN0cyhDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZm8mCiAgICAgICAg
ICAgICAvLyBUaGUgRGl2WCBwbHVnLWluIGxpc3RzIG11bHRpcGxlIGV4dGVuc2lvbnMgaW4gYSBj
b21tYSBzZXBhcmF0ZWQgc3RyaW5nIGluc3RlYWQgb2YgdXNpbmcKICAgICAgICAgICAgIC8vIG11
bHRpcGxlIGFycmF5IGVsZW1lbnRzIGluIHRoZSBwcm9wZXJ0eSBsaXN0LiBXb3JrIGFyb3VuZCB0
aGlzIGhlcmUgYnkgc3BsaXR0aW5nIHRoZQogICAgICAgICAgICAgLy8gZXh0ZW5zaW9uIHN0cmlu
ZyBpbnRvIGNvbXBvbmVudHMuCi0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25D
b21wb25lbnRzOwotICAgICAgICAgICAgU3RyaW5nKGV4dGVuc2lvbikuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKS5zcGxpdCgnLCcsIGV4dGVuc2lvbkNvbXBvbmVudHMpOworICAgICAgICAgICAg
VmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uQ29tcG9uZW50cyA9IFN0cmluZyhleHRlbnNpb24pLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3BsaXQoJywnKTsKIAogICAgICAgICAgICAgZm9yIChh
dXRvJiBjb21wb25lbnQgOiBleHRlbnNpb25Db21wb25lbnRzKQogICAgICAgICAgICAgICAgIG1p
bWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoY29tcG9uZW50KTsKQEAgLTIzNyw4ICsyMzYs
NyBAQCBQbHVnaW5WZXJzaW9uIFBsdWdpblZlcnNpb246OnBhcnNlKGNvbnN0IFN0cmluZyYgdmVy
c2lvblN0cmluZykKIHsKICAgICBQbHVnaW5WZXJzaW9uIHZlcnNpb247CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiB2ZXJzaW9uU3RyaW5nQ29tcG9uZW50czsKLSAgICB2ZXJzaW9uU3RyaW5nLnNwbGl0
KCcuJywgdmVyc2lvblN0cmluZ0NvbXBvbmVudHMpOworICAgIFZlY3RvcjxTdHJpbmc+IHZlcnNp
b25TdHJpbmdDb21wb25lbnRzID0gdmVyc2lvblN0cmluZy5zcGxpdCgnLicpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmVyc2lvblN0cmluZ0NvbXBvbmVudHMuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgYm9vbCBzdWNjZXNzZnVsbHlQYXJzZWQgPSBmYWxzZTsKICAgICAgICAgdW5zaWdu
ZWQgdmVyc2lvbkNvbXBvbmVudCA9IHZlcnNpb25TdHJpbmdDb21wb25lbnRzW2ldLnRvVUludCgm
c3VjY2Vzc2Z1bGx5UGFyc2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxl
VW5peC5jcHAKaW5kZXggZjllYjA2ZTE2MTdjNWM1NDg5NmRlMGI4MzU3YTVkYzkzZTQ0MDEyNi4u
ZmIxZDlkYzkyNmZkNjc2NzkzZjQ1NGE3NGZhNTUxYWVlNTcwYzhlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9k
dWxlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91
bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTc0LDE0ICs3NCwxMiBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXJzZU1JTUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcm
IG1pbWVEZXNjcmlwdGlvbiwgVgogewogICAgIEFTU0VSVF9BUkcocmVzdWx0LCByZXN1bHQuaXNF
bXB0eSgpKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIG1pbWVEZXNjcmlwdGlv
bi5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KFVDaGFyKCc7JyksIGZhbHNlLCB0eXBl
cyk7CisgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMgPSBtaW1lRGVzY3JpcHRpb24uY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnOycpOwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHR5cGVzLnNpemUoKSk7CiAKICAgICBzaXplX3QgbWltZUluZm9Db3VudCA9IDA7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7ICsraSkgewotICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBtaW1lVHlwZVBhcnRzOwotICAgICAgICB0eXBlc1tpXS5zcGxpdChVQ2hh
cignOicpLCB0cnVlLCBtaW1lVHlwZVBhcnRzKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbWlt
ZVR5cGVQYXJ0cyA9IHR5cGVzW2ldLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJzonKTsKICAg
ICAgICAgaWYgKG1pbWVUeXBlUGFydHMuc2l6ZSgpIDw9IDApCiAgICAgICAgICAgICBjb250aW51
ZTsKIApAQCAtOTAsNyArODgsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpwYXJzZU1J
TUVEZXNjcmlwdGlvbihjb25zdCBTdHJpbmcmIG1pbWVEZXNjcmlwdGlvbiwgVgogICAgICAgICBt
aW1lSW5mby50eXBlID0gbWltZVR5cGVQYXJ0c1swXTsKIAogICAgICAgICBpZiAobWltZVR5cGVQ
YXJ0cy5zaXplKCkgPiAxKQotICAgICAgICAgICAgbWltZVR5cGVQYXJ0c1sxXS5zcGxpdChVQ2hh
cignLCcpLCBmYWxzZSwgbWltZUluZm8uZXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBtaW1lSW5m
by5leHRlbnNpb25zID0gbWltZVR5cGVQYXJ0c1sxXS5zcGxpdCgnLCcpOwogCiAgICAgICAgIGlm
IChtaW1lVHlwZVBhcnRzLnNpemUoKSA+IDIpCiAgICAgICAgICAgICBtaW1lSW5mby5kZXNjID0g
bWltZVR5cGVQYXJ0c1syXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdp
bnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAppbmRleCAzNDIwNWFkMzFjODI5ODA3YTY5ZDVj
MDJlNWFlYzU1ODA1YjJkMjk2Li5lOGFmOTYwNGNlNTU5NWE0NDRmZThjYTUwNDVkM2E2MTdhYjIz
NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2lu
U2VhcmNoUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1Bs
dWdpblNlYXJjaFBhdGguY3BwCkBAIC0zOCw4ICszOCw3IEBAIFZlY3RvcjxTdHJpbmc+IHBsdWdp
bnNEaXJlY3RvcmllcygpCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3Ry
aW5nIG1vemlsbGFQYXRocyhnZXRlbnYoIk1PWl9QTFVHSU5fUEFUSCIpKTsKICAgICBpZiAoIW1v
emlsbGFQYXRocy5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7Ci0g
ICAgICAgIG1vemlsbGFQYXRocy5zcGxpdChVQ2hhcignOicpLCAvKiBhbGxvd0VtcHR5RW50cmll
cyAqLyBmYWxzZSwgcGF0aHMpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRocyA9IG1vemls
bGFQYXRocy5zcGxpdCgnOicpOwogICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHBhdGhzKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nl
c3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmlu
ZGV4IGIwODVmZjkyYTU3YzU3YTdiMjRiZmRkY2U1Njk3NmEzYTMwMWMzNjIuLjg4NjM2YThkMjYz
NDA1MzJkNGUxNmZkZTNiZGZmNDFiZjFlMGQ1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMTM0LDkgKzEzNCw4IEBAIHZvaWQgQ2hpbGRQcm9j
ZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvc1ZlcnNp
b25QYXJ0czsKICAgICBTdHJpbmcgb3NTeXN0ZW1NYXJrZXRpbmdWZXJzaW9uID0gc3lzdGVtTWFy
a2V0aW5nVmVyc2lvbigpOwotICAgIG9zU3lzdGVtTWFya2V0aW5nVmVyc2lvbi5zcGxpdCgnLics
IGZhbHNlLCBvc1ZlcnNpb25QYXJ0cyk7CisgICAgVmVjdG9yPFN0cmluZz4gb3NWZXJzaW9uUGFy
dHMgPSBvc1N5c3RlbU1hcmtldGluZ1ZlcnNpb24uc3BsaXQoJy4nKTsKICAgICBpZiAob3NWZXJz
aW9uUGFydHMuc2l6ZSgpIDwgMikgewogICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4n
dCBmaW5kIE9TIFZlcnNpb25cbiIsIGdldHByb2duYW1lKCkpOwogICAgICAgICBleGl0KEVYX05P
UEVSTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5k
ZXggMTkxN2MxOWYyZGY0OTQ0YjhjOTllODFkZWM5YWZjYjczZjY0OTkyYS4uYjI2NmE5NWJiNTdj
YzhkNGViZDliZWM2MDk2ZGFkMDIwMjA0M2MxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtNDQsOCArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRQb3N0TWVzc2FnZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gc2VyaWFsaXplZFNjcmlw
dFZhbHVlLnRvU3RyaW5nKCk7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKLSAgICAg
ICAgbWVzc2FnZS5zcGxpdCgiOiIsIHRva2Vucyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRv
a2VucyA9IG1lc3NhZ2Uuc3BsaXQoJzonKTsKICAgICAgICAgaWYgKHRva2Vucy5zaXplKCkgIT0g
MikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA3Nzg3
OGFhYTczZjk4MmFjMmEwZDI5MmMwMWM1ZjVkMmQyNmZhNGQ3Li5jMzZmM2NkMGQ5ZWI2OTQ0Yjcx
NGQ3NmM4ZDFiYjE3YzA1NmU2Y2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtODA2LDgg
KzgwNiw3IEBAIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gRmFsbCBiYWNrIHRvIGNoZWNraW5nIGZvciBhIE1JTUUgdHlwZSB3aWxkY2FyZCBp
ZiBhbiBleGFjdCBtYXRjaCBpcyBub3QgZm91bmQuCi0gICAgVmVjdG9yPFN0cmluZz4gY29tcG9u
ZW50czsKLSAgICBtYXBwZWRNSU1FVHlwZS5zcGxpdCgnLycsIGZhbHNlLCBjb21wb25lbnRzKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBjb21wb25lbnRzID0gbWFwcGVkTUlNRVR5cGUuc3BsaXQoJy8n
KTsKICAgICBpZiAoY29tcG9uZW50cy5zaXplKCkgIT0gMikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCBlYWQzZDFiNmE3YTY0ZTc5NWRmYzQz
YWQ5ZGRiNTY2YmQ1YjZiODljLi41MjkxNjk3MTUyNmRhOTkzNWUzZmY4YmE2NTNlNzMzYTJhYTI1
YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTExNCw5ICsxMTQsNyBAQCB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAjaWYgRU5BQkxFKERFVkVMT1BFUl9N
T0RFKQogICAgIFZlY3RvcjxDU3RyaW5nPiBwcmVmaXhBcmdzOwogICAgIGlmICghbV9sYXVuY2hP
cHRpb25zLnByb2Nlc3NDbWRQcmVmaXguaXNOdWxsKCkpIHsKLSAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gc3BsaXRBcmdzOwotICAgICAgICBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc0NtZFByZWZpeC5z
cGxpdCgnICcsIHNwbGl0QXJncyk7Ci0gICAgICAgIGZvciAoYXV0byYgYXJnIDogc3BsaXRBcmdz
KQorICAgICAgICBmb3IgKGF1dG8mIGFyZyA6IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzQ21kUHJl
Zml4LnNwbGl0KCcgJykpCiAgICAgICAgICAgICBwcmVmaXhBcmdzLmFwcGVuZChhcmcudXRmOCgp
KTsKICAgICAgICAgbmFyZ3MgKz0gcHJlZml4QXJncy5zaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW0KaW5kZXggNWU0MGYyNmU2YzI0NDgzMWU0NDk0MjZjMjFjMmRlMzk4NjgzZGZjMi4u
YjQ3ZjdkMDE0YzU5NGJhZmE4ZGI1NTIyYzZiYjQ5MmRlNzJhMDBmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVy
TWFjLm1tCkBAIC0xMjgsOSArMTI4LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFBy
b2Nlc3MoKQogICAgIGF1dG8gbGFuZ3VhZ2VzSXRlcmF0b3IgPSBtX2xhdW5jaE9wdGlvbnMuZXh0
cmFJbml0aWFsaXphdGlvbkRhdGEuZmluZCgiT3ZlcnJpZGVMYW5ndWFnZXMiKTsKICAgICBpZiAo
bGFuZ3VhZ2VzSXRlcmF0b3IgIT0gbV9sYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25E
YXRhLmVuZCgpKSB7CiAgICAgICAgIGF1dG8gbGFuZ3VhZ2VzID0gYWRvcHRPU09iamVjdCh4cGNf
YXJyYXlfY3JlYXRlKG51bGxwdHIsIDApKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3Vh
Z2VWZWN0b3I7Ci0gICAgICAgIGxhbmd1YWdlc0l0ZXJhdG9yLT52YWx1ZS5zcGxpdCgiLCIsIGZh
bHNlLCBsYW5ndWFnZVZlY3Rvcik7Ci0gICAgICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBsYW5n
dWFnZVZlY3RvcikKKyAgICAgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IGxhbmd1YWdlc0l0ZXJh
dG9yLT52YWx1ZS5zcGxpdCgnLCcpKQogICAgICAgICAgICAgeHBjX2FycmF5X3NldF9zdHJpbmco
bGFuZ3VhZ2VzLmdldCgpLCBYUENfQVJSQVlfQVBQRU5ELCBsYW5ndWFnZS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGluaXRpYWxpemF0aW9uTWVzc2Fn
ZS5nZXQoKSwgIk92ZXJyaWRlTGFuZ3VhZ2VzIiwgbGFuZ3VhZ2VzLmdldCgpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJv
Y2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgv
UGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXggYWYwMzQxYzAyYWQwMTlmMjJiZmRiMjY4
YjkyNTc4ZDdmMWYxNzMyZS4uZjllZjJjYTkxMmRhNDZiNjhkOWVmOWYwMzAwYjA2NTBiODkxZDUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdp
blByb2Nlc3NQcm94eVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIGJv
b2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBsaW5lczsKLSAgICBTdHJpbmc6OmZyb21VVEY4KHN0ZE91dC5nZXQo
KSkuc3BsaXQoVUNoYXIoJ1xuJyksIHRydWUsIGxpbmVzKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBs
aW5lcyA9IFN0cmluZzo6ZnJvbVVURjgoc3RkT3V0LmdldCgpKS5zcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKCdcbicpOwogCiAgICAgaWYgKGxpbmVzLnNpemUoKSA8IDMpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJFcnJvciBzY2FubmluZyBwbHVnaW4gJXMsIHRvbyBmZXcgbGluZXMgb2Ygb3V0
cHV0IHByb3ZpZGVkIiwgYXJndlsyXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggZDFj
MzY4NGIzOGYwZTI1NTgyNTcxMDliNTNmZmJmOWNiYWM2MGVjOC4uNjhmYjcxYTVjNGFhMTMzMDlh
NzA5MGU3NTZlY2YwZjQ3M2EwYWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNjAx
LDggKzYwMSw3IEBAIHN0YXRpYyBib29sIGlzVHJhbnNwYXJlbnRTaWx2ZXJsaWdodEJhY2tncm91
bmRWYWx1ZShjb25zdCBTdHJpbmcmIGxvd2VyY2FzZUJhY2tnCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobG93ZXJjYXNlQmFja2dyb3VuZFZhbHVl
LnN0YXJ0c1dpdGgoInNjIyIpKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7
Ci0gICAgICAgIGxvd2VyY2FzZUJhY2tncm91bmRWYWx1ZS5zdWJzdHJpbmcoMykuc3BsaXQoJywn
LCBjb21wb25lbnRzKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gY29tcG9uZW50cyA9IGxvd2Vy
Y2FzZUJhY2tncm91bmRWYWx1ZS5zdWJzdHJpbmcoMykuc3BsaXQoJywnKTsKIAogICAgICAgICAv
LyBBbiBTY1JHQiB2YWx1ZSB3aXRoIGFscGhhIHRyYW5zcGFyZW5jeSwgaW4gdGhlIGZvcm0gc2Mj
QSxSLEcsQi4KICAgICAgICAgaWYgKGNvbXBvbmVudHMuc2l6ZSgpID09IDQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmlu
ZGV4IGViNTcyNzNmNTMxNTE4NzIyYzhlOTEwMDEzNGE0OWFkN2ZmZTM4ZWIuLjk0YmJhNmE5ZTdi
NjY1NDhhNjhiMzY3YjM4NzU4OTVlZmU5YjUyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAtMTkwLDIwICsxOTAs
MTYgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogICAgIGlmIChpc1BsdWdpbkJs
YWNrbGlzdGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJNSU1F
VHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOwotICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbkxp
c3RzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRXh0
ZW50cyIpLnNwbGl0KCd8JywgZXh0ZW5zaW9uTGlzdHMpOwotICAgIFZlY3RvcjxTdHJpbmc+IGRl
c2NyaXB0aW9uczsKLSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAi
RmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOworICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIk1JTUVU
eXBlIikuc3BsaXQoJ3wnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25MaXN0cyA9IGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRXh0ZW50cyIpLnNwbGl0
KCd8Jyk7CisgICAgVmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25zID0gZ2V0VmVyc2lvbkluZm8o
dmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIkZpbGVPcGVuTmFtZSIpLnNwbGl0KCd8Jyk7CiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAg
U3RyaW5nIHR5cGUgPSB0eXBlc1tpXS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgICAg
ICBTdHJpbmcgZGVzY3JpcHRpb24gPSBpIDwgZGVzY3JpcHRpb25zLnNpemUoKSA/IGRlc2NyaXB0
aW9uc1tpXSA6ICIiOwogICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uTGlzdCA9IGkgPCBleHRlbnNp
b25MaXN0cy5zaXplKCkgPyBleHRlbnNpb25MaXN0c1tpXSA6ICIiOwogCi0gICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGV4dGVuc2lvbnNWZWN0b3I7Ci0gICAgICAgIGV4dGVuc2lvbkxpc3Quc3BsaXQo
JywnLCBleHRlbnNpb25zVmVjdG9yKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9u
c1ZlY3RvciA9IGV4dGVuc2lvbkxpc3Quc3BsaXQoJywnKTsKIAogICAgICAgICAvLyBHZXQgcmlk
IG9mIHRoZSBleHRlbnNpb24gbGlzdCB0aGF0IG1heSBiZSBhdCB0aGUgZW5kIG9mIHRoZSBkZXNj
cmlwdGlvbiBzdHJpbmcuCiAgICAgICAgIGludCBwb3MgPSBkZXNjcmlwdGlvbi5maW5kKCIoKiIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFk
YjYxMzE5MDJiYzYyMjg4MzZkODkyZTgzN2ZkNzZmYjRjMGM5MTguLmRlZDkxZmM1NTFjNmU3M2Vk
ZjM1YmRmM2Y5ZjliMDZlMDMwN2M2MGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wNy0yNSAgUm9zcyBLaXJz
bGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgU3RyaW5nKFZpZXcpIHNo
b3VsZCBoYXZlIGEgc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcyBmdW5jdGlvbiBpbnN0ZWFkIG9m
IGEgZmxhZyBwYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Nzk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcDoKKyAgICAg
ICAgQWRkIHRlc3RzIGZvciBTdHJpbmc6OnNwbGl0IGFuZCBTdHJpbmc6OnNwbGl0QWxsb3dpbmdF
bXB0eUVudHJpZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdW
aWV3LmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdUUjo6dXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcik6CisgICAgICAg
IFVwZGF0ZSBzcGxpdC9zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzIHVzYWdlLgorCiAyMDE4LTA3
LTI1ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdz
LWJ1aWxkXSBBZGQgYnVpbGQgc3RlcHMgRG93bmxvYWRCdWlsdFByb2R1Y3QgYW5kIEV4dHJhY3RC
dWlsdFByb2R1Y3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5j
cHAKaW5kZXggYzhiYjExNDAxZDI0YWQxN2Q1MzBhYmU5NmEwYWVkYzA3ZTQ3MjJlMy4uYjc1MWY2
ODgzZGNlZWY5YjdhZTAxOTAxZWI1NTg3ZDUyNjFiNTk0MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBURVNUKFdU
RiwgU3RyaW5nVmlld1NwbGl0V2l0aENvbnNlY3V0aXZlU2VwYXJhdG9ycykKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKICAgICAgICAgRVhQRUNUX1NUUkVR
KGV4cGVjdGVkW2ldLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFtpXS51dGY4KCkuZGF0YSgpKSA8PCAi
VmVjdG9ycyBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOwogCi0gICAgYWN0dWFsID0gdmVjdG9yRnJv
bVNwbGl0UmVzdWx0KGEuc3BsaXQoJyAnLCBTdHJpbmdWaWV3OjpBbGxvd0VtcHR5RW50cmllcykp
OworICAgIGFjdHVhbCA9IHZlY3RvckZyb21TcGxpdFJlc3VsdChhLnNwbGl0QWxsb3dpbmdFbXB0
eUVudHJpZXMoJyAnKSk7CiAgICAgZXhwZWN0ZWQgPSB7ICIiLCAiVGhpcyIsICIiLCAiIiwgIiIs
ICIiLCAiaXMiLCAiIiwgImEiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAic2VudGVuY2UuIiwg
IiIgfTsKICAgICBBU1NFUlRfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBhY3R1YWwuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCmluZGV4IDVjYjZjNzZlNmMzYmQ0ZjI5
NzA4Njc5ZTc3NWE3MTgzNTE5NDQ3OTIuLjhlY2M0ZDRkNDNlZmM2Y2Q2OGE5ZjIwMmJjMGU5NTZk
ODFjYzIwNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0
cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNw
cApAQCAtNDk5LDQgKzQ5OSwyMSBAQCBURVNUKFdURiwgU3RyaW5nRm9ybWF0V2l0aEFyZ3VtZW50
cykKICAgICB0ZXN0V2l0aEZvcm1hdEFuZEFyZ3VtZW50cygiaGVsbG8gLTE3ODkwLjUgd29ybGQi
LCAiJXMgJS4xZiAlcyIsICJoZWxsbyIsIC0xNzg5MC41LCAid29ybGQiKTsKIH0KIAorVEVTVChX
VEYsIFN0cmluZ1NwbGl0V2l0aENvbnNlY3V0aXZlU2VwYXJhdG9ycykKK3sKKyAgICBTdHJpbmcg
c3RyaW5nIHsgIiBUaGlzICAgICBpcyAgYSAgICAgICBzZW50ZW5jZS4gIiB9OworCisgICAgVmVj
dG9yPFN0cmluZz4gYWN0dWFsID0gc3RyaW5nLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gZXhwZWN0ZWQgeyAiVGhpcyIsICJpcyIsICJhIiwgInNlbnRlbmNlLiIgfTsKKyAgICBBU1NF
UlRfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBhY3R1YWwuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gaSA9
IDB1OyBpIDwgYWN0dWFsLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0
ZWRbaV0udXRmOCgpLmRhdGEoKSwgYWN0dWFsW2ldLnV0ZjgoKS5kYXRhKCkpIDw8ICJWZWN0b3Jz
IGRpZmZlciBhdCBpbmRleCAiIDw8IGk7CisKKyAgICBhY3R1YWwgPSBzdHJpbmcuc3BsaXRBbGxv
d2luZ0VtcHR5RW50cmllcygnICcpOworICAgIGV4cGVjdGVkID0geyAiIiwgIlRoaXMiLCAiIiwg
IiIsICIiLCAiIiwgImlzIiwgIiIsICJhIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgInNlbnRl
bmNlLiIsICIiIH07CisgICAgQVNTRVJUX0VRKGV4cGVjdGVkLnNpemUoKSwgYWN0dWFsLnNpemUo
KSk7CisgICAgZm9yIChhdXRvIGkgPSAwdTsgaSA8IGFjdHVhbC5zaXplKCk7ICsraSkKKyAgICAg
ICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkW2ldLnV0ZjgoKS5kYXRhKCksIGFjdHVhbFtpXS51dGY4
KCkuZGF0YSgpKSA8PCAiVmVjdG9ycyBkaWZmZXIgYXQgaW5kZXggIiA8PCBpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCmluZGV4IDNlYTNjMGE1OGU4ODgwYTA4YjA1ZGVmYTllYjA5Y2MwMTYwNTI1ZTYu
Ljc1ZDJkZGI3ZWI0ZWJiYzU0MzlkZjMxYzIzNTc0MzQzMjBkNmRiZmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDg4LDcgKzEwODgsNyBAQCBzdGF0
aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RPcHRpb25zJiB0ZXN0
T3B0aW9ucywgY29uc3Qgc3RkOgogICAgICAgICBhdXRvIGtleSA9IHBhaXJTdHJpbmcuc3Vic3Ry
KHBhaXJTdGFydCwgZXF1YWxzTG9jYXRpb24gLSBwYWlyU3RhcnQpOwogICAgICAgICBhdXRvIHZh
bHVlID0gcGFpclN0cmluZy5zdWJzdHIoZXF1YWxzTG9jYXRpb24gKyAxLCBwYWlyRW5kIC0gKGVx
dWFsc0xvY2F0aW9uICsgMSkpOwogICAgICAgICBpZiAoa2V5ID09ICJsYW5ndWFnZSIpCi0gICAg
ICAgICAgICBTdHJpbmcodmFsdWUuY19zdHIoKSkuc3BsaXQoIiwiLCBmYWxzZSwgdGVzdE9wdGlv
bnMub3ZlcnJpZGVMYW5ndWFnZXMpOworICAgICAgICAgICAgdGVzdE9wdGlvbnMub3ZlcnJpZGVM
YW5ndWFnZXMgPSBTdHJpbmcodmFsdWUuY19zdHIoKSkuc3BsaXQoJywnKTsKICAgICAgICAgZWxz
ZSBpZiAoa2V5ID09ICJ1c2VUaHJlYWRlZFNjcm9sbGluZyIpCiAgICAgICAgICAgICB0ZXN0T3B0
aW9ucy51c2VUaHJlYWRlZFNjcm9sbGluZyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtleSA9PSAidXNlQWNjZWxlcmF0ZWREcmF3aW5nIikK
</data>

          </attachment>
      

    </bug>

</bugzilla>