<?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>143934</bug_id>
          
          <creation_ts>2015-04-19 01:09:11 -0700</creation_ts>
          <short_desc>Implement String.codePointAt()</short_desc>
          <delta_ts>2015-04-22 15:26:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086632</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 01:09:11 -0700</bug_when>
    <thetext>Implement String.codePointAt()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086633</commentid>
    <comment_count>1</comment_count>
      <attachid>251118</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 01:13:21 -0700</bug_when>
    <thetext>Created attachment 251118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086638</commentid>
    <comment_count>2</comment_count>
      <attachid>251118</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-19 08:21:33 -0700</bug_when>
    <thetext>Comment on attachment 251118
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.h:657
&gt; +    WTF_EXPORT_STRING_API UChar32 jsCodePointAt(unsigned);

If this is only used by JSC I don&apos;t think it needs to go into WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086643</commentid>
    <comment_count>3</comment_count>
      <attachid>251118</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-19 09:51:36 -0700</bug_when>
    <thetext>Comment on attachment 251118
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.cpp:371
&gt; +    // -Let first be the code unit value of the element at index position in the String S.

Delete these comments now that the code is written?

&gt; LayoutTests/js/script-tests/string-code-point-at.js:80
&gt; +shouldThrow(&apos;&quot;abc&quot;.codePointAt(Symbol(&quot;WebKit&quot;))&apos;);

Nice test suite. Curious why Symbol is  so much of a special case.

&gt; LayoutTests/js/script-tests/string-code-point-at.js:82
&gt; +// The following are using special test functions because of limitations of WebKitTestRunner when handling strings with invalid codepoints.

Can you reword this comment to explain what exactly doesn&apos;t work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086644</commentid>
    <comment_count>4</comment_count>
      <attachid>251118</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-19 10:36:56 -0700</bug_when>
    <thetext>Comment on attachment 251118
Patch

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

&gt; LayoutTests/js/Object-getOwnPropertyNames-expected.txt:51
&gt; +FAIL getSortedOwnPropertyNames(String.prototype) should be anchor,big,blink,bold,charAt,charCodeAt,concat,constructor,endsWith,fixed,fontcolor,fontsize,includes,indexOf,italics,lastIndexOf,length,link,localeCompare,match,repeat,replace,search,slice,small,split,startsWith,strike,sub,substr,substring,sup,toLocaleLowerCase,toLocaleUpperCase,toLowerCase,toString,toUpperCase,trim,trimLeft,trimRight,valueOf. Was anchor,big,blink,bold,charAt,charCodeAt,codePointAt,concat,constructor,endsWith,fixed,fontcolor,fontsize,includes,indexOf,italics,lastIndexOf,length,link,localeCompare,match,repeat,replace,search,slice,small,split,startsWith,strike,sub,substr,substring,sup,toLocaleLowerCase,toLocaleUpperCase,toLowerCase,toString,toUpperCase,trim,trimLeft,trimRight,valueOf.

test failed. adding &quot;charCodeAt&apos; to test solves it :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086649</commentid>
    <comment_count>5</comment_count>
      <attachid>251118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 11:23:46 -0700</bug_when>
    <thetext>Comment on attachment 251118
Patch

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

if

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:816
&gt; +EncodedJSValue JSC_HOST_CALL stringProtoFuncCodePointAt(ExecState* exec)

Here’s the helper function I suggest implementing:

    static inline UChar32 codePointAt(const String&amp; string, unsigned position)
    {
        ASSERT(position &lt; string.length());
        if (string.is8Bit())
            return string[position];
        UChar32 character;
        U16_NEXT(string.characters16(), position, string.length(), character);
        return character;
    }

Or you could skip the is8Bit check and not bother with characters16 to make this cleaner:

    static inline UChar32 codePointAt(const String&amp; string, unsigned position)
    {
        ASSERT(position &lt; string.length());
        UChar32 character;
        U16_NEXT(string, position, string.length(), character);
        return character;
    }

I’m not sure how good the compiler will be at optimizing this second case, but it might do just fine.

This implements the same rule that the JavaScript specification calls for. It’s annoying how close this is to StringImpl::characterStartingAt but for some reason that function returns 0 when it’s not a valid surrogate pair.

&gt;&gt; Source/WTF/wtf/text/StringImpl.h:657
&gt;&gt; +    WTF_EXPORT_STRING_API UChar32 jsCodePointAt(unsigned);
&gt; 
&gt; If this is only used by JSC I don&apos;t think it needs to go into WTF.

I agree. We don’t need to put this in StringImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086653</commentid>
    <comment_count>6</comment_count>
      <attachid>251118</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 11:28:52 -0700</bug_when>
    <thetext>Comment on attachment 251118
Patch

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

&gt;&gt; LayoutTests/js/script-tests/string-code-point-at.js:82
&gt;&gt; +// The following are using special test functions because of limitations of WebKitTestRunner when handling strings with invalid codepoints.
&gt; 
&gt; Can you reword this comment to explain what exactly doesn&apos;t work?

A good point. I’d like to know more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086655</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 11:34:47 -0700</bug_when>
    <thetext>This reason for StringImpl + explicit implementation was the extra testing and having the spec text in code.

Looks like nobody appreciates it. I&apos;ll move back to JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086664</commentid>
    <comment_count>8</comment_count>
      <attachid>251123</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 12:03:14 -0700</bug_when>
    <thetext>Created attachment 251123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086699</commentid>
    <comment_count>9</comment_count>
      <attachid>251123</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 16:58:12 -0700</bug_when>
    <thetext>Comment on attachment 251123
Patch

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

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:813
&gt;      return JSValue::encode(jsNaN());

Strange that charCodeAt returns NaN and codePointAt returns undefined in the analogous situation.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:832
&gt; +    String string = thisValue.toWTFString(exec);

I think the fact that we convert &quot;this&quot; to a string before converting the argument to an integer is detectable. We should write tests using valueOf to see if so. And if so, decide whether that’s the correct order or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086704</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 17:28:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 251123 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251123&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:813
&gt; &gt;      return JSValue::encode(jsNaN());
&gt; 
&gt; Strange that charCodeAt returns NaN and codePointAt returns undefined in the
&gt; analogous situation.

Agreed, that is just plain weird.

&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:832
&gt; &gt; +    String string = thisValue.toWTFString(exec);
&gt; 
&gt; I think the fact that we convert &quot;this&quot; to a string before converting the
&gt; argument to an integer is detectable. We should write tests using valueOf to
&gt; see if so. And if so, decide whether that’s the correct order or not.

Good point!

It is the correct order. It is defined by the spec.

I&apos;ll add coverage for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086715</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-19 21:40:34 -0700</bug_when>
    <thetext>Oh, I thought of something else.

If converting “this” to a string throws an exception, then the argument should not be converted to an integer; the exception should stop the processing before the second conversion is done. To implement this correctly, we probably need to add one early return if we see an exception. I bet we have this wrong for charCodeAt and probably other functions as well. It’s one good argument for writing more of the runtime library in JavaScript instead of C++ long term because it’s easier to get exceptions right that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086717</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 21:55:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Oh, I thought of something else.
&gt; 
&gt; If converting “this” to a string throws an exception, then the argument
&gt; should not be converted to an integer; the exception should stop the
&gt; processing before the second conversion is done. To implement this
&gt; correctly, we probably need to add one early return if we see an exception.
&gt; I bet we have this wrong for charCodeAt and probably other functions as
&gt; well. It’s one good argument for writing more of the runtime library in
&gt; JavaScript instead of C++ long term because it’s easier to get exceptions
&gt; right that way.

I thought about that, but what would be the way of checking if &quot;this&quot; is coercible to object in JavaScript?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086719</commentid>
    <comment_count>13</comment_count>
      <attachid>251123</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-19 22:14:51 -0700</bug_when>
    <thetext>Comment on attachment 251123
Patch

I&apos;ll post a new patch tomorrow. The last bug you uncovered shows this need more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086916</commentid>
    <comment_count>14</comment_count>
      <attachid>251123</attachid>
    <who name="Jordan Harband">ljharb</who>
    <bug_when>2015-04-20 14:52:20 -0700</bug_when>
    <thetext>Comment on attachment 251123
Patch

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

Please also see es6-shim&apos;s tests here: https://github.com/paulmillr/es6-shim/blob/master/test/string.js#L429-L474

&gt; LayoutTests/js/script-tests/string-code-point-at.js:8
&gt; +shouldBe(&apos;String.prototype.codePointAt.length&apos;, &apos;1&apos;);

It&apos;d be good to also assert `shouldBeEqualToString(&apos;String.prototype.codePointAt.name&apos;, &apos;codePointAt&apos;)`

&gt; LayoutTests/js/script-tests/string-code-point-at.js:69
&gt; +shouldBe(&apos;&quot;abc&quot;.codePointAt(4)&apos;, &apos;undefined&apos;);

Maybe also a `shouldBe(&apos;var str = &quot;abc&quot;; str.codePointAt(str.length)&apos;, &apos;undefined&apos;);`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086934</commentid>
    <comment_count>15</comment_count>
      <attachid>251197</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-20 16:00:54 -0700</bug_when>
    <thetext>Created attachment 251197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086936</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-20 16:02:07 -0700</bug_when>
    <thetext>Ok, the exception on toString() is not a problem since the generated string is null so the remaining code does nothing.

I added test coverage for the issues pointed out so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087008</commentid>
    <comment_count>17</comment_count>
      <attachid>251221</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-20 23:52:56 -0700</bug_when>
    <thetext>Created attachment 251221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087053</commentid>
    <comment_count>18</comment_count>
      <attachid>251221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-21 08:48:32 -0700</bug_when>
    <thetext>Comment on attachment 251221
Patch

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

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:818
&gt; +    RELEASE_ASSERT(position &lt; string.length());

This should not be RELEASE_ASSERT. The two call sites just below guarantee this invariant in a clear, obvious way. Maybe if this function was used in more places, but it seems like overkill given the way this is used.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:834
&gt; +    if (UNLIKELY(exec-&gt;hadException()))
&gt; +        return JSValue::encode(jsUndefined());

You could put this after the isUInt32 check below, since we only need this check if we continue and call toInteger. Of course, you could also argue that putting it right here is best for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087583</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-22 14:04:18 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 251221 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251221&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:818
&gt; &gt; +    RELEASE_ASSERT(position &lt; string.length());
&gt; 
&gt; This should not be RELEASE_ASSERT. The two call sites just below guarantee
&gt; this invariant in a clear, obvious way. Maybe if this function was used in
&gt; more places, but it seems like overkill given the way this is used.

I think it is a good safety net.

Today the code will be eliminated by the compiler. If anyone ever modify a caller, this branch could protect the &quot;string.characters8()[position]&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087609</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-22 15:26:33 -0700</bug_when>
    <thetext>Committed r183141: &lt;http://trac.webkit.org/changeset/183141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251118</attachid>
            <date>2015-04-19 01:13:21 -0700</date>
            <delta_ts>2015-04-19 12:03:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143934-20150419011220.patch</filename>
            <type>text/plain</type>
            <size>25972</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGVmNmVkY2EwODcwYzNkZTczYTdhMWEwZjgyYWQ3ZTQ1YjlkMWJkLi5hMzRmOWIyMmMzMGY1OWU2
ZDA4ZjU4ZTI5NTE1MWZiNjdkNDllOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNS0wNC0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KToKKwogMjAx
NS0wNC0xNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgdHlwZWQgYXJyYXlzIHRvIHRoZSBBcnJheSBwcm9maWxpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggOTBjMWZkZmE0OGU4YmRiOWFkNGQzZDI2OTI5M2Y3ZjlhZTY1ZWE5Zi4uOTg2N2M1MTc4NzVj
NWQxNWM3NTUxMTNkYTE3MzBjNjMzZDljNmZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
NC0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
SW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjpqc0NvZGVQb2ludEF0KToKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nOjpqc0NvZGVQb2ludEF0KToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJp
bmcuaDoKKwogMjAxNS0wNC0xNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBVc2UgQVNhbiBwb2lzb25pbmcgdG8gdGFpbnQgbW92ZWQtb3V0LW9mIFJlZnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CmluZGV4IDk5ZGFjMzFkNjM0ZjhkNGQxZTRhNTliOGY1N2U3MDhkYjhkOWRkNWIuLmViOGJhYjJi
YWZhYzQ4YmZjMDdkODBkNjM3Y2E1YTc4YzM0MmYxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNTYsNiArNTYsNyBAQCBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoU3RyaW5nUHJvdG90eXBlKTsK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0No
YXJBdChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqKTsKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUq
KTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4
T2YoRXhlY1N0YXRlKik7CkBAIC0xMDgsNiArMTA5LDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNT
dHIKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZU9mLCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZywgRG9udEVudW0sIDAsIFN0cmluZ1Byb3Rv
dHlwZVZhbHVlT2ZJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9O
KCJjaGFyQXQiLCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQsIERvbnRFbnVtLCAxLCBDaGFyQXRJbnRy
aW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJjaGFyQ29kZUF0Iiwg
c3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwgRG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRyaW5z
aWMpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImNvZGVQb2ludEF0Iiwgc3RyaW5nUHJvdG9G
dW5jQ29kZVBvaW50QXQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJj
b25jYXQiLCBzdHJpbmdQcm90b0Z1bmNDb25jYXQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKCJpbmRleE9mIiwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0s
IDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImxhc3RJbmRleE9mIiwgc3RyaW5nUHJvdG9G
dW5jTGFzdEluZGV4T2YsIERvbnRFbnVtLCAxKTsKQEAgLTgxMSw2ICs4MTMsMjkgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogfQogCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OworICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisKKyAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1Zh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKKworICAgIEpTVmFsdWUgYXJndW1lbnQwID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
aWYgKGFyZ3VtZW50MC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0g
YXJndW1lbnQwLmFzVUludDMyKCk7CisgICAgICAgIGlmIChwb3NpdGlvbiA8IGxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RyaW5nLmpzQ29kZVBv
aW50QXQocG9zaXRpb24pKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgfQorCisgICAgZG91YmxlIGRvdWJsZVBvc2l0aW9uID0gYXJndW1lbnQw
LnRvSW50ZWdlcihleGVjKTsKKyAgICBpZiAoZG91YmxlUG9zaXRpb24gPj0gMCAmJiBkb3VibGVQ
b3NpdGlvbiA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihzdHJpbmcuanNDb2RlUG9pbnRBdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZG91YmxlUG9zaXRp
b24pKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29uY2F0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggODNiMTUyMzllMTJlZGI1MTBjOWY0
MGVlNmM4MmVmMGVkZDY3M2E2Yy4uZjgxNWM3NmU0MjhmNGRkZGRlNjE5YTYxZGJlYzc5MTUwYTNk
MTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0zNTksNiArMzU5LDM1IEBA
IFVDaGFyMzIgU3RyaW5nSW1wbDo6Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCBpKQogICAg
IHJldHVybiAwOwogfQogCisvLyBUaGlzIGZvbGxvd3MgdGhlIEVjbWFTY3JpcHQgZGVmaW5pdGlv
biBvZiBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0KCkuCisvLyBVbmxpa2UgdGhlIHVzdWFs
IGNvZGVQb2ludCBtZXRob2RzLCBnZXR0aW5nIGludmFsaWQgc3Vycm9nYXRlcyByZXR1cm4gc29t
ZXRoaW5nLgorVUNoYXIzMiBTdHJpbmdJbXBsOjpqc0NvZGVQb2ludEF0KHVuc2lnbmVkIGkpCit7
CisgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGxlbmd0aCgpKTsKKworICAgIGlmIChpczhCaXQoKSkK
KyAgICAgICAgcmV0dXJuIG1fZGF0YThbaV07CisKKyAgICAvLyAtTGV0IGZpcnN0IGJlIHRoZSBj
b2RlIHVuaXQgdmFsdWUgb2YgdGhlIGVsZW1lbnQgYXQgaW5kZXggcG9zaXRpb24gaW4gdGhlIFN0
cmluZyBTLgorICAgIFVDaGFyIGZpcnN0ID0gbV9kYXRhMTZbaV07CisKKyAgICAvLyAtSWYgZmly
c3QgPCAweEQ4MDAgb3IgZmlyc3QgPiAweERCRkYgb3IgcG9zaXRpb24rMSA9IHNpemUsIHJldHVy
biBmaXJzdC4KKyAgICBpZiAoIVUxNl9JU19MRUFEKGZpcnN0KSkKKyAgICAgICAgcmV0dXJuIGZp
cnN0OworCisgICAgLy8gLUxldCBzZWNvbmQgYmUgdGhlIGNvZGUgdW5pdCB2YWx1ZSBvZiB0aGUg
ZWxlbWVudCBhdCBpbmRleCBwb3NpdGlvbisxIGluIHRoZSBTdHJpbmcgUy4KKyAgICBpZiAoaSAr
IDEgPT0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmaXJzdDsKKworICAgIFVDaGFyIHNlY29u
ZCA9IG1fZGF0YTE2W2kgKyAxXTsKKworICAgIC8vIC1JZiBzZWNvbmQgPCAweERDMDAgb3Igc2Vj
b25kID4gMHhERkZGLCByZXR1cm4gZmlyc3QuCisgICAgaWYgKCFVMTZfSVNfVFJBSUwoc2Vjb25k
KSkKKyAgICAgICAgcmV0dXJuIGZpcnN0OworCisgICAgcmV0dXJuIFUxNl9HRVRfU1VQUExFTUVO
VEFSWShmaXJzdCwgc2Vjb25kKTsKK30KKwogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6Omxv
d2VyKCkKIHsKICAgICAvLyBOb3RlOiBUaGlzIGlzIGEgaG90IGZ1bmN0aW9uIGluIHRoZSBEcm9t
YWVvIGJlbmNobWFyaywgc3BlY2lmaWNhbGx5IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApp
bmRleCA5Mzk5MDI4ZWQzNzAyZmRhMDExOGM3NjYxY2Y4YWRmMDBmM2QxMWNlLi40YWIzYzczMmIz
OGU2NjFiOTk0MjI4ODRjNzBhYjFhOTMzMDY3ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aApAQCAtNjU0LDYgKzY1NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgVUNoYXIgb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGpzQ29kZVBvaW50QXQodW5zaWduZWQpOwogCiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggY2QyNWE2OWFlYjg0ODdmMjY5Y2NjZGU4MDU5
OWJhN2ZkM2VjYWY2Mi4uMTkyNjc5ZGE4MTRlODdkNmFmMGI5MzY2ZmI2MzRlZjcwNGI0MTNhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMjc5LDYgKzI3OSwxMiBAQCBVQ2hhcjMy
IFN0cmluZzo6Y2hhcmFjdGVyU3RhcnRpbmdBdCh1bnNpZ25lZCBpKSBjb25zdAogICAgIHJldHVy
biBtX2ltcGwtPmNoYXJhY3RlclN0YXJ0aW5nQXQoaSk7CiB9CiAKK1VDaGFyMzIgU3RyaW5nOjpq
c0NvZGVQb2ludEF0KHVuc2lnbmVkIGkpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9p
bXBsKTsKKyAgICByZXR1cm4gbV9pbXBsLT5qc0NvZGVQb2ludEF0KGkpOworfQorCiB2b2lkIFN0
cmluZzo6dHJ1bmNhdGUodW5zaWduZWQgcG9zaXRpb24pCiB7CiAgICAgaWYgKG1faW1wbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDZlOGYwOTJiMjdlNTliN2E4MWQ5NTA3MGU0OGUzMjBk
ZmQ4YzczNjEuLjQ0OGI1ZmMyMjQ1MjM4ODMxNjBmODhmNmYzNGFiNDA1MzlmODhlMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMjU4LDYgKzI1OCw3IEBAIHB1YmxpYzoKICAgICBXVEZf
RVhQT1JUX1NUUklOR19BUEkgVmVjdG9yPFVDaGFyPiBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpIGNvbnN0OwogICAgIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNo
YXJhY3RlclN0YXJ0aW5nQXQodW5zaWduZWQpIGNvbnN0OyAvLyBEaXR0by4KKyAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgVUNoYXIzMiBqc0NvZGVQb2ludEF0KHVuc2lnbmVkKSBjb25zdDsKICAg
ICAKICAgICBib29sIGNvbnRhaW5zKFVDaGFyIGMpIGNvbnN0IHsgcmV0dXJuIGZpbmQoYykgIT0g
bm90Rm91bmQ7IH0KICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBzdHIsIGJvb2wgY2Fz
ZVNlbnNpdGl2ZSA9IHRydWUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkgY29uc3QgCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTEzZDc5YTcx
NjBjOWM5ZTI3ZGYzNWFkZDhlOWVmMDY5YTY0MjNjYi4uODBiZWY3NmYxZGY2YjlhNzVhMTE3YmZm
ODA3NWIyYWFiMjViMWI5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA0LTE5ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgU3RyaW5nLmNvZGVQ
b2ludEF0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHA6CisKIDIwMTUtMDQtMTcg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCBhYmxlIHRv
IGJ1aWxkIFdlYktpdCBhZ2FpbnN0IGlPUyBTaW11bGF0b3IgOC4zIFNESwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCAwOTJjYzQ3ZjkwMTZhZmJk
MmI0NjgyYjI2MGVhNTU4MzA5MzY0NDgzLi45NjA1OTIzNDI2ZmY3MGU3MTFiMGYxYjFhZmViY2Yw
YWMxMjA2ZTU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBs
LmNwcApAQCAtNTI5LDQgKzUyOSwxMDQgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxTeW1ib2xFbXB0
eVRvQXRvbWljU3RyaW5nKQogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkp
OwogfQogCitURVNUKFdURiwgU3RyaW5nSW1wbEpTQ29kZVBvaW50QXRPbjhCaXRTdHJpbmdzKQor
eworICAgIFZlY3RvcjxMQ2hhcj4gbGF0aW4xQ2hhcmFjdGVyczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIGxhdGluMUNoYXJhY3RlcnMuYXBwZW5kKGkp
OworCisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZShs
YXRpbjFDaGFyYWN0ZXJzLmRhdGEoKSwgbGF0aW4xQ2hhcmFjdGVycy5zaXplKCkpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgKytpKQorICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8VUNoYXIzMj4oaSksIHN0cmluZy0+anNDb2RlUG9pbnRBdChpKSk7Cit9CisKK1RF
U1QoV1RGLCBTdHJpbmdJbXBsSlNDb2RlUG9pbnRBdE9uTG93ZXI4Qml0c09mMTZCaXRTdHJpbmdz
KQoreworICAgIFZlY3RvcjxVQ2hhcj4gdWNoYXJDaGFyYWN0ZXJzOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAyNTY7ICsraSkKKyAgICAgICAgdWNoYXJDaGFyYWN0ZXJzLmFwcGVuZChp
KTsKKworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBzdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGUo
dWNoYXJDaGFyYWN0ZXJzLmRhdGEoKSwgdWNoYXJDaGFyYWN0ZXJzLnNpemUoKSk7CisKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyArK2kpCisgICAgICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxVQ2hhcjMyPihpKSwgc3RyaW5nLT5qc0NvZGVQb2ludEF0KGkpKTsKK30KKworVEVT
VChXVEYsIFN0cmluZ0ltcGxKU0NvZGVQb2ludEF0V2l0aE5vdExlYWRTdXJyb2dhdGUpCit7Cisg
ICAgVmVjdG9yPFVDaGFyPiB1Y2hhckNoYXJhY3RlcnM7CisgICAgLy8gQW55dGhpbmcgdW5kZXIg
MHhEODAwIGlzIGEgc2luZ2xlIDE2Yml0cyBjb2RlIHBvaW50LgorICAgIHVjaGFyQ2hhcmFjdGVy
cy5hcHBlbmQoMHgwMTAwKTsKKyAgICB1Y2hhckNoYXJhY3RlcnMuYXBwZW5kKDB4ZDdmZik7CisK
KyAgICAvLyBWYWx1ZXMgb3ZlciAweERCRkYgd291bGQgYmUgZnJvbSBhIHRyYWlsIHN1cnJvZ2F0
ZS4KKyAgICB1Y2hhckNoYXJhY3RlcnMuYXBwZW5kKDB4ZGMwMCk7CisgICAgdWNoYXJDaGFyYWN0
ZXJzLmFwcGVuZCgweGZmZmYpOworCisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmluZyA9IFN0
cmluZ0ltcGw6OmNyZWF0ZSh1Y2hhckNoYXJhY3RlcnMuZGF0YSgpLCB1Y2hhckNoYXJhY3RlcnMu
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8VUNoYXIzMj4oMHgwMTAwKSwgc3Ry
aW5nLT5qc0NvZGVQb2ludEF0KDApKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8VUNoYXIz
Mj4oMHhkN2ZmKSwgc3RyaW5nLT5qc0NvZGVQb2ludEF0KDEpKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8VUNoYXIzMj4oMHhkYzAwKSwgc3RyaW5nLT5qc0NvZGVQb2ludEF0KDIpKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8VUNoYXIzMj4oMHhmZmZmKSwgc3RyaW5nLT5qc0NvZGVQ
b2ludEF0KDMpKTsKK30KKworVEVTVChXVEYsIFN0cmluZ0ltcGxKU0NvZGVQb2ludEF0T25MYXN0
Q2hhcmFjdGVyKQoreworICAgIFZlY3RvcjxVQ2hhcj4gdWNoYXJDaGFyYWN0ZXJzOworCisgICAg
Ly8ganNDb2RlUG9pbnQoKSByZXR1cm5zIGEgbGVhZCBzdXJyb2dhdGUgaWYgaXQgaXMgdGhlIGxh
c3QgY2hhcmFjdGVyIG9mIHRoZSBzdHJpbmcuCisgICAgdWNoYXJDaGFyYWN0ZXJzLmFwcGVuZCgw
eEQ4MDApOworCisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHN0cmluZyA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZSh1Y2hhckNoYXJhY3RlcnMuZGF0YSgpLCB1Y2hhckNoYXJhY3RlcnMuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8VUNoYXIzMj4oMHhEODAwKSwgc3RyaW5nLT5qc0NvZGVQ
b2ludEF0KDApKTsKK30KKworc3RhdGljIFVDaGFyMzIganNVVEYxNkRlY29kZShVQ2hhciBsZWFk
LCBVQ2hhciB0cmFpbCkKK3sKKyAgICAvLyBGcm9tIEVjbWFTY3JpcHQuCisgICAgLy8gLUFzc2Vy
dDogMHhEODAwIOKJpCBsZWFkIOKJpCAweERCRkYgYW5kIDB4REMwMCDiiaQgdHJhaWwg4omkIDB4
REZGRi4KKyAgICBBU1NFUlQoMHhEODAwIDw9IGxlYWQpOworICAgIEFTU0VSVChsZWFkIDw9IDB4
REJGRik7CisgICAgQVNTRVJUKDB4REMwMCA8PSB0cmFpbCk7CisgICAgQVNTRVJUKHRyYWlsIDw9
IDB4REZGRik7CisKKyAgICAvLyAtTGV0IGNwIGJlIChsZWFkIOKAkyAweEQ4MDApIMOXIDEwMjQg
KyAodHJhaWwg4oCTIDB4REMwMCkgKyAweDEwMDAwLgorICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8
VUNoYXIzMj4obGVhZCkgLSAweEQ4MDApICogMTAyNCArICh0cmFpbCAtIDB4REMwMCkgKyAweDEw
MDAwOworfQorCitURVNUKFdURiwgU3RyaW5nSW1wbEpTQ29kZVBvaW50QXRXaXRoVHJhaWxTdXJy
b2dhdGUpCit7CisgICAgLy8gVGhlIGxlYWQgc3Vycm9nYXRlIHNob3VsZCBiZSBiZXR3ZWVuIDB4
RDgwMCBhbmQgMHhEQkZGLgorICAgIC8vIEEgdmFsaWQgdHJhaWwgc3Vycm9nYXRlIHNob3VsZCBi
ZSBiZXR3ZWVuIDB4REMwMCBhbmQgMHhERkZGLgorICAgIC8vIElmIHRoZSB0cmFpbCBzdXJyb2dh
dGUgaW4gbm90IGluIHRoZSB2YWxpZCByYW5nZSwganNDb2RlUG9pbnRBdCgpIHNob3VsZCByZXR1
cm4gdGhlIGxlYWQgb25seS4KKyAgICBWZWN0b3I8VUNoYXI+IHVjaGFyQ2hhcmFjdGVyczsKKwor
ICAgIC8vIFRoaXMgaXMgdmFsaWQuCisgICAgdWNoYXJDaGFyYWN0ZXJzLmFwcGVuZCgweERCRkYp
OworICAgIHVjaGFyQ2hhcmFjdGVycy5hcHBlbmQoMHhEQzAwKTsKKworICAgIC8vIFRoaXMgaXMg
bm90LgorICAgIHVjaGFyQ2hhcmFjdGVycy5hcHBlbmQoMHhEQkZGKTsKKyAgICB1Y2hhckNoYXJh
Y3RlcnMuYXBwZW5kKDB4REMwMCAtIDEpOworCisgICAgLy8gVGhpcyBpcyB2YWxpZC4KKyAgICB1
Y2hhckNoYXJhY3RlcnMuYXBwZW5kKDB4RDgwMCk7CisgICAgdWNoYXJDaGFyYWN0ZXJzLmFwcGVu
ZCgweERGRkYpOworCisgICAgLy8gVGhpcyBpcyBub3QuCisgICAgdWNoYXJDaGFyYWN0ZXJzLmFw
cGVuZCgweEQ4MDApOworICAgIHVjaGFyQ2hhcmFjdGVycy5hcHBlbmQoMHhERkZGICsgMSk7CisK
KyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHVjaGFy
Q2hhcmFjdGVycy5kYXRhKCksIHVjaGFyQ2hhcmFjdGVycy5zaXplKCkpOworICAgIEVYUEVDVF9F
UShqc1VURjE2RGVjb2RlKHN0cmluZy0+YXQoMCksIHN0cmluZy0+YXQoMSkpLCBzdHJpbmctPmpz
Q29kZVBvaW50QXQoMCkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxVQ2hhcjMyPihzdHJp
bmctPmF0KDEpKSwgc3RyaW5nLT5qc0NvZGVQb2ludEF0KDEpKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8VUNoYXIzMj4oc3RyaW5nLT5hdCgyKSksIHN0cmluZy0+anNDb2RlUG9pbnRBdCgy
KSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PFVDaGFyMzI+KHN0cmluZy0+YXQoMykpLCBz
dHJpbmctPmpzQ29kZVBvaW50QXQoMykpOworICAgIEVYUEVDVF9FUShqc1VURjE2RGVjb2RlKHN0
cmluZy0+YXQoNCksIHN0cmluZy0+YXQoNSkpLCBzdHJpbmctPmpzQ29kZVBvaW50QXQoNCkpOwor
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxVQ2hhcjMyPihzdHJpbmctPmF0KDUpKSwgc3RyaW5n
LT5qc0NvZGVQb2ludEF0KDUpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8VUNoYXIzMj4o
c3RyaW5nLT5hdCg2KSksIHN0cmluZy0+anNDb2RlUG9pbnRBdCg2KSk7CisgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PFVDaGFyMzI+KHN0cmluZy0+YXQoNykpLCBzdHJpbmctPmpzQ29kZVBvaW50
QXQoNykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTBiNDlm
N2I0MzQ5YWI0YjA0OTJiYjQwMDg1NzY1MDkwZWY1ZDBmYS4uNDYwMjY5ZGVkNWMxZDE0ZjczYjYw
NjI0NjNhYmYwNDM5NTE3ZTdhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA0LTE5ICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgU3RyaW5nLmNvZGVQb2ludEF0KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzkzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBTdHJpbmcuY29kZVBvaW50QXQoKSBhcyBk
ZWZpbmVkIGJ5IEVTNi4KKyAgICAgICAgSSBvcHRlZCBmb3IgYSBDKysgaW1wbGVtZW50YXRpb24g
Zm9yIG5vdy4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQu
anM6IEFkZGVkLgorICAgICAgICAob2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nLnRvU3RyaW5nKToK
KyAgICAgICAgKG9iamVjdFRocm93aW5nT25Ub1N0cmluZy50b1N0cmluZyk6CisgICAgICAgIChv
YmplY3RDb3VudGluZ1RvU3RyaW5nLnRvU3RyaW5nKToKKyAgICAgICAgKHRlc3RMZWFkU3Vycm9n
YXRlT3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdExlYWRTdXJyb2dhdGVBc0xhc3RDaGFyYWN0
ZXIpOgorICAgICAgICAodGVzdFRyYWlsU3Vycm9nYXRlT3V0T2Zib3VuZHMpOgorICAgICAgICAo
dGVzdEFjY2Vzc051bGxJblN0cmluZyk6CisgICAgICAgICh0ZXN0Tm9ybWFsQ29tYmluYXRpb25P
ZlN1cnJvZ2F0ZXMpOgorICAgICAgICAqIGpzL3N0cmluZy1jb2RlLXBvaW50LWF0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuaHRtbDogQWRk
ZWQuCisKIDIwMTUtMDQtMTcgIEJlbSBKb25lcy1CZXkgIDxiam9uZXNiZUBhZG9iZS5jb20+CiAK
ICAgICAgICAgTGFyZ2UgdmFsdWVzIGZvciBsaW5lLWhlaWdodCBjYXVzZSBpbnRlZ2VyIG92ZXJm
bG93IGluIFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAppbmRleCBm
NTdmNjU1YWY5MGI5Y2ViMWZhMDBmNDdmMzdhNDA1YjY4ZWE3NjNhLi4yYjRhZjAzMTM5NzAxNGM2
YWM3NmY1MDE2YzE1YTMyYTkwYjAxYTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9PYmpl
Y3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
T2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CkBAIC00OCw3ICs0OCw3IEBA
IFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhGdW5jdGlvbi5wcm90b3R5cGUpIGlzIFsn
YXBwbHknLCAnYmluZCcsICdjYWxsJywKIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhB
cnJheSkgaXMgWydmcm9tJywgJ2lzQXJyYXknLCAnbGVuZ3RoJywgJ25hbWUnLCAnb2YnLCAncHJv
dG90eXBlJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhBcnJheS5wcm90b3R5cGUp
IGlzIFsnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VudHJpZXMnLCAnZXZlcnknLCAnZmlsbCcs
ICdmaWx0ZXInLCAnZmluZCcsICdmaW5kSW5kZXgnLCAnZm9yRWFjaCcsICdpbmNsdWRlcycsICdp
bmRleE9mJywgJ2pvaW4nLCAna2V5cycsICdsYXN0SW5kZXhPZicsICdsZW5ndGgnLCAnbWFwJywg
J3BvcCcsICdwdXNoJywgJ3JlZHVjZScsICdyZWR1Y2VSaWdodCcsICdyZXZlcnNlJywgJ3NoaWZ0
JywgJ3NsaWNlJywgJ3NvbWUnLCAnc29ydCcsICdzcGxpY2UnLCAndG9Mb2NhbGVTdHJpbmcnLCAn
dG9TdHJpbmcnLCAndW5zaGlmdCcsICd2YWx1ZXMnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0
eU5hbWVzKFN0cmluZykgaXMgWydmcm9tQ2hhckNvZGUnLCAnbGVuZ3RoJywgJ25hbWUnLCAncHJv
dG90eXBlJ10KLVBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTdHJpbmcucHJvdG90eXBl
KSBpcyBbJ2FuY2hvcicsICdiaWcnLCAnYmxpbmsnLCAnYm9sZCcsICdjaGFyQXQnLCAnY2hhckNv
ZGVBdCcsICdjb25jYXQnLCAnY29uc3RydWN0b3InLCAnZW5kc1dpdGgnLCAnZml4ZWQnLCAnZm9u
dGNvbG9yJywgJ2ZvbnRzaXplJywgJ2luY2x1ZGVzJywgJ2luZGV4T2YnLCAnaXRhbGljcycsICds
YXN0SW5kZXhPZicsICdsZW5ndGgnLCAnbGluaycsICdsb2NhbGVDb21wYXJlJywgJ21hdGNoJywg
J3JlcGVhdCcsICdyZXBsYWNlJywgJ3NlYXJjaCcsICdzbGljZScsICdzbWFsbCcsICdzcGxpdCcs
ICdzdGFydHNXaXRoJywgJ3N0cmlrZScsICdzdWInLCAnc3Vic3RyJywgJ3N1YnN0cmluZycsICdz
dXAnLCAndG9Mb2NhbGVMb3dlckNhc2UnLCAndG9Mb2NhbGVVcHBlckNhc2UnLCAndG9Mb3dlckNh
c2UnLCAndG9TdHJpbmcnLCAndG9VcHBlckNhc2UnLCAndHJpbScsICd0cmltTGVmdCcsICd0cmlt
UmlnaHQnLCAndmFsdWVPZiddCitGQUlMIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3RyaW5n
LnByb3RvdHlwZSkgc2hvdWxkIGJlIGFuY2hvcixiaWcsYmxpbmssYm9sZCxjaGFyQXQsY2hhckNv
ZGVBdCxjb25jYXQsY29uc3RydWN0b3IsZW5kc1dpdGgsZml4ZWQsZm9udGNvbG9yLGZvbnRzaXpl
LGluY2x1ZGVzLGluZGV4T2YsaXRhbGljcyxsYXN0SW5kZXhPZixsZW5ndGgsbGluayxsb2NhbGVD
b21wYXJlLG1hdGNoLHJlcGVhdCxyZXBsYWNlLHNlYXJjaCxzbGljZSxzbWFsbCxzcGxpdCxzdGFy
dHNXaXRoLHN0cmlrZSxzdWIsc3Vic3RyLHN1YnN0cmluZyxzdXAsdG9Mb2NhbGVMb3dlckNhc2Us
dG9Mb2NhbGVVcHBlckNhc2UsdG9Mb3dlckNhc2UsdG9TdHJpbmcsdG9VcHBlckNhc2UsdHJpbSx0
cmltTGVmdCx0cmltUmlnaHQsdmFsdWVPZi4gV2FzIGFuY2hvcixiaWcsYmxpbmssYm9sZCxjaGFy
QXQsY2hhckNvZGVBdCxjb2RlUG9pbnRBdCxjb25jYXQsY29uc3RydWN0b3IsZW5kc1dpdGgsZml4
ZWQsZm9udGNvbG9yLGZvbnRzaXplLGluY2x1ZGVzLGluZGV4T2YsaXRhbGljcyxsYXN0SW5kZXhP
ZixsZW5ndGgsbGluayxsb2NhbGVDb21wYXJlLG1hdGNoLHJlcGVhdCxyZXBsYWNlLHNlYXJjaCxz
bGljZSxzbWFsbCxzcGxpdCxzdGFydHNXaXRoLHN0cmlrZSxzdWIsc3Vic3RyLHN1YnN0cmluZyxz
dXAsdG9Mb2NhbGVMb3dlckNhc2UsdG9Mb2NhbGVVcHBlckNhc2UsdG9Mb3dlckNhc2UsdG9TdHJp
bmcsdG9VcHBlckNhc2UsdHJpbSx0cmltTGVmdCx0cmltUmlnaHQsdmFsdWVPZi4KIFBBU1MgZ2V0
U29ydGVkT3duUHJvcGVydHlOYW1lcyhCb29sZWFuKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3By
b3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQm9vbGVhbi5wcm90b3R5
cGUpIGlzIFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNv
cnRlZE93blByb3BlcnR5TmFtZXMoTnVtYmVyKSBpcyBbJ0VQU0lMT04nLCAnTUFYX1NBRkVfSU5U
RUdFUicsICdNQVhfVkFMVUUnLCAnTUlOX1NBRkVfSU5URUdFUicsICdNSU5fVkFMVUUnLCAnTkVH
QVRJVkVfSU5GSU5JVFknLCAnTmFOJywgJ1BPU0lUSVZFX0lORklOSVRZJywgJ2lzRmluaXRlJywg
J2lzSW50ZWdlcicsICdpc05hTicsICdpc1NhZmVJbnRlZ2VyJywgJ2xlbmd0aCcsICduYW1lJywg
J3BhcnNlRmxvYXQnLCAncGFyc2VJbnQnLCAncHJvdG90eXBlJ10KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1wb2ludC1hdC5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1wb2ludC1hdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ODU4YjE4MGMzMTQ1Zjk4NTVhNmI5NTY1NmQyZTU1MDZlOGFiNzYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzCkBA
IC0wLDAgKzEsMTE5IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGUgYmFzaWMgYmVoYXZpb3JzIG9m
IFN0cmluZy5jb2RlUG9pbnRBdCIpOworCitzaG91bGRCZSgnU3RyaW5nLmNvZGVQb2ludEF0Jywg
J3VuZGVmaW5lZCcpOworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBTdHJpbmcucHJv
dG90eXBlLmNvZGVQb2ludEF0JywgJ2Z1bmN0aW9uJyk7CisKKy8vIEZ1bmN0aW9uIHByb3BlcnRp
ZXMuCitzaG91bGRCZSgnU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdC5sZW5ndGgnLCAnMScp
Oworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3Rv
dHlwZSwgImNvZGVQb2ludEF0IikuY29uZmlndXJhYmxlJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90b3R5cGUsICJjb2RlUG9p
bnRBdCIpLmVudW1lcmFibGUnLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90b3R5cGUsICJjb2RlUG9pbnRBdCIpLndyaXRhYmxl
JywgJ3RydWUnKTsKKworLy8gVGhlIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIG9uIHRoZSBwcm90
b3R5cGUgY2hhaW4sIG5vdCBvbiB0aGUgb2JqZWN0IHRoZW1zZWx2ZXMuCitzaG91bGRCZUZhbHNl
KCciZm9vIi5oYXNPd25Qcm9wZXJ0eSgiY29kZVBvaW50QXQiKScpOworc2hvdWxkQmVGYWxzZSgn
KG5ldyBTdHJpbmcoImJhciIpKS5oYXNPd25Qcm9wZXJ0eSgiY29kZVBvaW50QXQiKScpOworCisv
LyBTb21lIHNpbXBsZSBjYXNlcy4KK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdCgwKScsICd1bmRl
ZmluZWQnKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdCgxKScsICd1bmRlZmluZWQnKTsKKwor
c2hvdWxkQmUoJyLDiXTDqSIuY29kZVBvaW50QXQoMCknLCAnMjAxJyk7CitzaG91bGRCZSgnIsOJ
dMOpIi5jb2RlUG9pbnRBdCgxKScsICcxMTYnKTsKK3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2lu
dEF0KDIpJywgJzIzMycpOworc2hvdWxkQmUoJyLDiXTDqSIuY29kZVBvaW50QXQoMyknLCAndW5k
ZWZpbmVkJyk7CisKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgw
KScsICcxMjQ1NCcpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0
KDEpJywgJzEyNDU1Jyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBvaW50
QXQoMiknLCAnMTI1MDInKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9p
bnRBdCgzKScsICcxMjQ2MScpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQ
b2ludEF0KDQpJywgJzEyNDgzJyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIuY29k
ZVBvaW50QXQoNSknLCAnMTI0ODgnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OIIi5j
b2RlUG9pbnRBdCg2KScsICd1bmRlZmluZWQnKTsKKworLy8gT2JqZWN0IGNvZXJjaW9uLgorc2hv
dWxkVGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwobnVsbCwgMCknKTsKK3Nob3VsZFRocm93KCci
Ii5jb2RlUG9pbnRBdC5jYWxsKHVuZGVmaW5lZCwgMCknKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9p
bnRBdC5jYWxsKDAsIDApJywgJzQ4Jyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChN
YXRoLlBJLCAwKScsICc1MScpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwoTWF0aC5Q
SSwgMSknLCAnNDYnKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKE1hdGguUEksIDMp
JywgJzUyJyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbCh0cnVlLCAzKScsICcxMDEn
KTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKGZhbHNlLCAzKScsICcxMTUnKTsKK3No
b3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKG5ldyBPYmplY3QsIDMpJywgJzEwNicpOworc2hv
dWxkVGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwoU3ltYm9sKCJXZWJLaXQiKSwgMyknKTsKKwor
Ly8gdG9TdHJpbmcuCit2YXIgb2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nID0geyB0b1N0cmluZzog
ZnVuY3Rpb24oKSB7IHJldHVybiAiw7giOyB9IH07CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQu
Y2FsbChvYmplY3RXaXRoQ3VzdG9tVG9TdHJpbmcsIDApJywgJzI0OCcpOworCit2YXIgb2JqZWN0
VGhyb3dpbmdPblRvU3RyaW5nID0geyB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHRocm93ICJIZWhl
IjsgfSB9Oworc2hvdWxkVGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0VGhyb3dpbmdP
blRvU3RyaW5nLCAwKScpOworCit2YXIgb2JqZWN0Q291bnRpbmdUb1N0cmluZyA9IHsgY291bnRl
cjogMCwgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIHRoaXMu
Y291bnRlcjsgfSB9Oworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0Q291bnRp
bmdUb1N0cmluZywgMCknLCAnNDknKTsKK3Nob3VsZEJlKCdvYmplY3RDb3VudGluZ1RvU3RyaW5n
LmNvdW50ZXInLCAnMScpOworCisvLyBXZWlyZCBwb3NpdGlvbnMuCitzaG91bGRCZSgnImFiYyIu
Y29kZVBvaW50QXQoTmFOKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0w
KScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0wLjApJywgJzk3Jyk7Citz
aG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTAuMDUpJywgJzk3Jyk7CitzaG91bGRCZSgnImFi
YyIuY29kZVBvaW50QXQoLTAuOTk5KScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2lu
dEF0KDAuNCknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCgwLjkpJywgJzk3
Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoMi45OTk5KScsICc5OScpOworCisvLyBP
dXQgb2YgYm91bmQgcG9zaXRpb25zLgorc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0xKScs
ICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCg0KScsICd1bmRlZmlu
ZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCg0LjEpJywgJ3VuZGVmaW5lZCcpOwor
c2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KE51bWJlci5QT1NJVElWRV9JTkZJTklUWSknLCAn
dW5kZWZpbmVkJyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoTnVtYmVyLk5FR0FUSVZF
X0lORklOSVRZKScsICd1bmRlZmluZWQnKTsKKworLy8gTm9uLW51bWJlciBhcyBwb3NpdGlvbnMu
CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQobnVsbCknLCAnOTcnKTsKK3Nob3VsZEJlKCci
YWJjIi5jb2RlUG9pbnRBdCh1bmRlZmluZWQpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29k
ZVBvaW50QXQoIiIpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoIldlYktp
dCEiKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KG5ldyBPYmplY3QpJywg
Jzk3Jyk7CitzaG91bGRUaHJvdygnImFiYyIuY29kZVBvaW50QXQoU3ltYm9sKCJXZWJLaXQiKSkn
KTsKKworLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNpbmcgc3BlY2lhbCB0ZXN0IGZ1bmN0aW9ucyBi
ZWNhdXNlIG9mIGxpbWl0YXRpb25zIG9mIFdlYktpdFRlc3RSdW5uZXIgd2hlbiBoYW5kbGluZyBz
dHJpbmdzIHdpdGggaW52YWxpZCBjb2RlcG9pbnRzLgorCisvLyBJZiBmaXJzdCA8IDB4RDgwMCBv
ciBmaXJzdCA+IDB4REJGRiBvciBwb3NpdGlvbisxID0gc2l6ZSwgcmV0dXJuIGZpcnN0LgorZnVu
Y3Rpb24gdGVzdExlYWRTdXJyb2dhdGVPdXRPZkJvdW5kcygpCit7CisgICAgcmV0dXJuICgiXHVE
N0ZGXHVEQzAwIi5jb2RlUG9pbnRBdCgwKSA9PT0gMHhkN2ZmICYmICJcdUQ3RkZcdURDMDAiLmNv
ZGVQb2ludEF0KDEpID09PSAweGRjMDAgJiYgIlx1RDdGRlx1REMwMCIuY29kZVBvaW50QXQoMikg
PT09IHVuZGVmaW5lZAorICAgICAgICAgICAgJiYgIlx1REMwMFx1REMwMCIuY29kZVBvaW50QXQo
MCkgPT09IDB4ZGMwMCAmJiAiXHVEQzAwXHVEQzAwIi5jb2RlUG9pbnRBdCgxKSA9PT0gMHhkYzAw
ICYmICJcdURDMDBcdURDMDAiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQpCit9CitzaG91
bGRCZVRydWUoInRlc3RMZWFkU3Vycm9nYXRlT3V0T2ZCb3VuZHMoKSIpOworCitmdW5jdGlvbiB0
ZXN0TGVhZFN1cnJvZ2F0ZUFzTGFzdENoYXJhY3RlcigpCit7CisgICAgcmV0dXJuICJhYmNcdUQ4
MDAiLmNvZGVQb2ludEF0KDMpID09PSAweGQ4MDA7Cit9CitzaG91bGRCZVRydWUoInRlc3RMZWFk
U3Vycm9nYXRlQXNMYXN0Q2hhcmFjdGVyKCkiKTsKKworLy8gSWYgc2Vjb25kIDwgMHhEQzAwIG9y
IHNlY29uZCA+IDB4REZGRiwgcmV0dXJuIGZpcnN0LgorZnVuY3Rpb24gdGVzdFRyYWlsU3Vycm9n
YXRlT3V0T2Zib3VuZHMoKQoreworICAgIHJldHVybiAoIlx1RDgwMFx1REJGRiIuY29kZVBvaW50
QXQoMCkgPT09IDB4ZDgwMCAmJiAiXHVEODAwXHVEQkZGIi5jb2RlUG9pbnRBdCgxKSA9PT0gMHhk
YmZmICYmICJcdUQ4MDBcdURCRkYiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQKKyAgICAg
ICAgICAgICYmICJcdUQ4MDBcdUUwMDAiLmNvZGVQb2ludEF0KDApID09PSAweGQ4MDAgJiYgIlx1
RDgwMFx1RTAwMCIuY29kZVBvaW50QXQoMSkgPT09IDB4ZTAwMCAmJiAiXHVEODAwXHVFMDAwIi5j
b2RlUG9pbnRBdCgyKSA9PT0gdW5kZWZpbmVkKQorfQorc2hvdWxkQmVUcnVlKCJ0ZXN0VHJhaWxT
dXJyb2dhdGVPdXRPZmJvdW5kcygpIik7CisKKy8vIE51bGwgaW4gYSBzdHJpbmcuCitmdW5jdGlv
biB0ZXN0QWNjZXNzTnVsbEluU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gImFcdTAwMDBiIi5jb2Rl
UG9pbnRBdCgwKSA9PT0gOTcgJiYgImFcdTAwMDBiIi5jb2RlUG9pbnRBdCgxKSA9PT0gMCAmJiAi
YVx1MDAwMGIiLmNvZGVQb2ludEF0KDIpID09PSA5OCAmJiAiYVx1MDAwMGIiLmNvZGVQb2ludEF0
KDMpID09PSB1bmRlZmluZWQ7Cit9CitzaG91bGRCZVRydWUoInRlc3RBY2Nlc3NOdWxsSW5TdHJp
bmcoKSIpOworCisKKy8vIE5vcm1hbCBjb21iaW5hdGlvbnMgb2Ygc3Vycm9nYXRlcy4KK2Z1bmN0
aW9uIHRlc3ROb3JtYWxDb21iaW5hdGlvbk9mU3Vycm9nYXRlcygpCit7CisgICAgcmV0dXJuICJc
dUQ4MDBcdURDMDAiLmNvZGVQb2ludEF0KDApID09PSA2NTUzNiAmJiAiXHVEODAwXHVEQzAwIi5j
b2RlUG9pbnRBdCgxKSA9PT0gNTYzMjAgJiYgIlx1RDgwMFx1REMwMCIuY29kZVBvaW50QXQoMikg
PT09IHVuZGVmaW5lZDsKK30KK3Nob3VsZEJlVHJ1ZSgidGVzdE5vcm1hbENvbWJpbmF0aW9uT2ZT
dXJyb2dhdGVzKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBv
aW50LWF0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmQ4NmQ4ZmU2ZmQyMmRkMDc5NDY4MDc5NTRjYWNh
ZTQ1ZjFiNGZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUt
cG9pbnQtYXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjggQEAKK1Rlc3QgdGhlIGJhc2ljIGJl
aGF2aW9ycyBvZiBTdHJpbmcuY29kZVBvaW50QXQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgU3RyaW5nLmNvZGVQb2ludEF0IGlzIHVuZGVmaW5lZAorUEFTUyB0eXBlb2Yg
U3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCBpcyAiZnVuY3Rpb24iCitQQVNTIFN0cmluZy5w
cm90b3R5cGUuY29kZVBvaW50QXQubGVuZ3RoIGlzIDEKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQiKS5jb25maWd1cmFi
bGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5w
cm90b3R5cGUsICJjb2RlUG9pbnRBdCIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQi
KS53cml0YWJsZSBpcyB0cnVlCitQQVNTICJmb28iLmhhc093blByb3BlcnR5KCJjb2RlUG9pbnRB
dCIpIGlzIGZhbHNlCitQQVNTIChuZXcgU3RyaW5nKCJiYXIiKSkuaGFzT3duUHJvcGVydHkoImNv
ZGVQb2ludEF0IikgaXMgZmFsc2UKK1BBU1MgIiIuY29kZVBvaW50QXQoMCkgaXMgdW5kZWZpbmVk
CitQQVNTICIiLmNvZGVQb2ludEF0KDEpIGlzIHVuZGVmaW5lZAorUEFTUyAiw4l0w6kiLmNvZGVQ
b2ludEF0KDApIGlzIDIwMQorUEFTUyAiw4l0w6kiLmNvZGVQb2ludEF0KDEpIGlzIDExNgorUEFT
UyAiw4l0w6kiLmNvZGVQb2ludEF0KDIpIGlzIDIzMworUEFTUyAiw4l0w6kiLmNvZGVQb2ludEF0
KDMpIGlzIHVuZGVmaW5lZAorUEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgw
KSBpcyAxMjQ1NAorUEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgxKSBpcyAx
MjQ1NQorUEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgyKSBpcyAxMjUwMgor
UEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgzKSBpcyAxMjQ2MQorUEFTUyAi
44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCg0KSBpcyAxMjQ4MworUEFTUyAi44Km44Kn
44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCg1KSBpcyAxMjQ4OAorUEFTUyAi44Km44Kn44OW44Kt
44OD44OIIi5jb2RlUG9pbnRBdCg2KSBpcyB1bmRlZmluZWQKK1BBU1MgIiIuY29kZVBvaW50QXQu
Y2FsbChudWxsLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyAiIi5jb2RlUG9pbnRBdC5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbCgwLCAwKSBpcyA0OAor
UEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKE1hdGguUEksIDApIGlzIDUxCitQQVNTICIiLmNvZGVQ
b2ludEF0LmNhbGwoTWF0aC5QSSwgMSkgaXMgNDYKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChN
YXRoLlBJLCAzKSBpcyA1MgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKHRydWUsIDMpIGlzIDEw
MQorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKGZhbHNlLCAzKSBpcyAxMTUKK1BBU1MgIiIuY29k
ZVBvaW50QXQuY2FsbChuZXcgT2JqZWN0LCAzKSBpcyAxMDYKK1BBU1MgIiIuY29kZVBvaW50QXQu
Y2FsbChTeW1ib2woIldlYktpdCIpLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdFdpdGhDdXN0b21Ub1N0cmlu
ZywgMCkgaXMgMjQ4CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0VGhyb3dpbmdPblRv
U3RyaW5nLCAwKSB0aHJldyBleGNlcHRpb24gSGVoZS4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2Fs
bChvYmplY3RDb3VudGluZ1RvU3RyaW5nLCAwKSBpcyA0OQorUEFTUyBvYmplY3RDb3VudGluZ1Rv
U3RyaW5nLmNvdW50ZXIgaXMgMQorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChOYU4pIGlzIDk3CitQ
QVNTICJhYmMiLmNvZGVQb2ludEF0KC0wKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgt
MC4wKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgtMC4wNSkgaXMgOTcKK1BBU1MgImFi
YyIuY29kZVBvaW50QXQoLTAuOTk5KSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgwLjQp
IGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDAuOSkgaXMgOTcKK1BBU1MgImFiYyIuY29k
ZVBvaW50QXQoMi45OTk5KSBpcyA5OQorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgtMSkgaXMgdW5k
ZWZpbmVkCitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDQpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJj
Ii5jb2RlUG9pbnRBdCg0LjEpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChO
dW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9p
bnRBdChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5j
b2RlUG9pbnRBdChudWxsKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCh1bmRlZmluZWQp
IGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KCIiKSBpcyA5NworUEFTUyAiYWJjIi5jb2Rl
UG9pbnRBdCgiV2ViS2l0ISIpIGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KG5ldyBPYmpl
Y3QpIGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KFN5bWJvbCgiV2ViS2l0IikpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHRlc3RMZWFkU3Vycm9nYXRl
T3V0T2ZCb3VuZHMoKSBpcyB0cnVlCitQQVNTIHRlc3RMZWFkU3Vycm9nYXRlQXNMYXN0Q2hhcmFj
dGVyKCkgaXMgdHJ1ZQorUEFTUyB0ZXN0VHJhaWxTdXJyb2dhdGVPdXRPZmJvdW5kcygpIGlzIHRy
dWUKK1BBU1MgdGVzdEFjY2Vzc051bGxJblN0cmluZygpIGlzIHRydWUKK1BBU1MgdGVzdE5vcm1h
bENvbWJpbmF0aW9uT2ZTdXJyb2dhdGVzKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3N0cmluZy1jb2RlLXBvaW50LWF0Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1w
b2ludC1hdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1NmE0MjIyZWJlMTI0NjNmY2NhODZmZTZlZTdiMzkx
NDU2M2VjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1w
b2ludC1hdC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1w
b2ludC1hdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251123</attachid>
            <date>2015-04-19 12:03:14 -0700</date>
            <delta_ts>2015-04-20 16:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143934-20150419120213.patch</filename>
            <type>text/plain</type>
            <size>19682</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyOTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MGVmNmVkY2EwODcwYzNkZTczYTdhMWEwZjgyYWQ3ZTQ1YjlkMWJkLi5kZTBjYTViMWJhMzljMDFl
Njc2MmQ1MzY5NjVhMTgxM2EwNjNiNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNC0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
U3RyaW5nLmNvZGVQb2ludEF0KCkgYXMgZGVmaW5lZCBieSBFUzYuCisgICAgICAgIEkgb3B0ZWQg
Zm9yIGEgQysrIGltcGxlbWVudGF0aW9uIGZvciBub3cuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KToKKwogMjAxNS0wNC0xNyAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdHlwZWQg
YXJyYXlzIHRvIHRoZSBBcnJheSBwcm9maWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDk5ZGFjMzFkNjM0ZjhkNGQxZTRh
NTliOGY1N2U3MDhkYjhkOWRkNWIuLjQ4NmI5NTY2ZDBjNmRmMDE3ODUzNWM2MWNkOTYzZmU0ZjAx
MzIyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcApAQCAtNTYsNiArNTYsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoU3RyaW5nUHJvdG90eXBlKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50
QXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0NvbmNhdChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7CkBAIC0xMDgsNiAr
MTA5LDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLCBzdHJpbmdQcm90b0Z1bmNUb1N0
cmluZywgRG9udEVudW0sIDAsIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMpOwogICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJjaGFyQXQiLCBzdHJpbmdQcm90b0Z1bmND
aGFyQXQsIERvbnRFbnVtLCAxLCBDaGFyQXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OKCJjaGFyQ29kZUF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwg
RG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oImNvZGVQb2ludEF0Iiwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQsIERvbnRFbnVtLCAx
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJjb25jYXQiLCBzdHJpbmdQcm90b0Z1bmNDb25j
YXQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJpbmRleE9mIiwgc3Ry
aW5nUHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oImxhc3RJbmRleE9mIiwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YsIERvbnRFbnVtLCAx
KTsKQEAgLTgxMSw2ICs4MTMsMzkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTmFOKCkpOwogfQogCitzdGF0aWMgaW5saW5lIFVDaGFyMzIgY29kZVBvaW50
QXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKHBvc2l0aW9uIDwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gc3RyaW5nLmNoYXJhY3RlcnM4KClbcG9zaXRpb25dOwor
ICAgIFVDaGFyMzIgY2hhcmFjdGVyOworICAgIFUxNl9ORVhUKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgcG9zaXRpb24sIHN0cmluZy5sZW5ndGgoKSwgY2hhcmFjdGVyKTsKKyAgICByZXR1cm4gY2hh
cmFjdGVyOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisKKyAgICBTdHJp
bmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKworICAgIEpTVmFsdWUgYXJndW1lbnQwID0gZXhlYy0+
YXJndW1lbnQoMCk7CisgICAgaWYgKGFyZ3VtZW50MC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVu
c2lnbmVkIHBvc2l0aW9uID0gYXJndW1lbnQwLmFzVUludDMyKCk7CisgICAgICAgIGlmIChwb3Np
dGlvbiA8IGxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoY29kZVBvaW50QXQoc3RyaW5nLCBwb3NpdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBkb3VibGUgZG91YmxlUG9z
aXRpb24gPSBhcmd1bWVudDAudG9JbnRlZ2VyKGV4ZWMpOworICAgIGlmIChkb3VibGVQb3NpdGlv
biA+PSAwICYmIGRvdWJsZVBvc2l0aW9uIDwgbGVuZ3RoKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGNvZGVQb2ludEF0KHN0cmluZywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGRvdWJsZVBvc2l0aW9uKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0NvbmNhdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMGI0OWY3YjQzNDlhYjRiMDQ5MmJiNDAwODU3NjUw
OTBlZjVkMGZhLi4zY2M5YjE2MWJiZGE2ZGNiODBhNWI4NmY2NDJiZjM3OWMzMjc5NmIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDQtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1p
bkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBTdHJpbmcuY29kZVBvaW50QXQoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTM0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9PYmpl
Y3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzOiBBZGRlZC4KKyAgICAgICAgKG9iamVjdFdp
dGhDdXN0b21Ub1N0cmluZy50b1N0cmluZyk6CisgICAgICAgIChvYmplY3RUaHJvd2luZ09uVG9T
dHJpbmcudG9TdHJpbmcpOgorICAgICAgICAob2JqZWN0Q291bnRpbmdUb1N0cmluZy50b1N0cmlu
Zyk6CisgICAgICAgICh0ZXN0TGVhZFN1cnJvZ2F0ZU91dE9mQm91bmRzKToKKyAgICAgICAgKHRl
c3RMZWFkU3Vycm9nYXRlQXNMYXN0Q2hhcmFjdGVyKToKKyAgICAgICAgKHRlc3RUcmFpbFN1cnJv
Z2F0ZU91dE9mYm91bmRzKToKKyAgICAgICAgKHRlc3RBY2Nlc3NOdWxsSW5TdHJpbmcpOgorICAg
ICAgICAodGVzdE5vcm1hbENvbWJpbmF0aW9uT2ZTdXJyb2dhdGVzKToKKyAgICAgICAgKiBqcy9z
dHJpbmctY29kZS1wb2ludC1hdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3N0
cmluZy1jb2RlLXBvaW50LWF0Lmh0bWw6IEFkZGVkLgorCiAyMDE1LTA0LTE3ICBCZW0gSm9uZXMt
QmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgogCiAgICAgICAgIExhcmdlIHZhbHVlcyBmb3IgbGlu
ZS1oZWlnaHQgY2F1c2UgaW50ZWdlciBvdmVyZmxvdyBpbiBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRM
aW5lSGVpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVy
dHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggZjU3ZjY1NWFmOTBiOWNlYjFmYTAwZjQ3ZjM3YTQw
NWI2OGVhNzYzYS4uOWU3MTA4M2IxNWM1ZDA4NmI4YmFkZWNhZGIwZDQzMTMyY2ExNTE2MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4
cGVjdGVkLnR4dApAQCAtNDgsNyArNDgsNyBAQCBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFt
ZXMoRnVuY3Rpb24ucHJvdG90eXBlKSBpcyBbJ2FwcGx5JywgJ2JpbmQnLCAnY2FsbCcsCiBQQVNT
IGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQXJyYXkpIGlzIFsnZnJvbScsICdpc0FycmF5Jywg
J2xlbmd0aCcsICduYW1lJywgJ29mJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoQXJyYXkucHJvdG90eXBlKSBpcyBbJ2NvbmNhdCcsICdjb25zdHJ1Y3Rvcics
ICdlbnRyaWVzJywgJ2V2ZXJ5JywgJ2ZpbGwnLCAnZmlsdGVyJywgJ2ZpbmQnLCAnZmluZEluZGV4
JywgJ2ZvckVhY2gnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdqb2luJywgJ2tleXMnLCAnbGFz
dEluZGV4T2YnLCAnbGVuZ3RoJywgJ21hcCcsICdwb3AnLCAncHVzaCcsICdyZWR1Y2UnLCAncmVk
dWNlUmlnaHQnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzbGljZScsICdzb21lJywgJ3NvcnQnLCAn
c3BsaWNlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3Vuc2hpZnQnLCAndmFsdWVz
J10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhTdHJpbmcpIGlzIFsnZnJvbUNoYXJD
b2RlJywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCi1QQVNTIGdldFNvcnRlZE93blBy
b3BlcnR5TmFtZXMoU3RyaW5nLnByb3RvdHlwZSkgaXMgWydhbmNob3InLCAnYmlnJywgJ2JsaW5r
JywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJDb2RlQXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9y
JywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2ZvbnRjb2xvcicsICdmb250c2l6ZScsICdpbmNsdWRl
cycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsn
LCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcsICdyZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gn
LCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQnLCAnc3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3Vi
JywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAnc3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3Rv
TG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJDYXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNl
JywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJpbVJpZ2h0JywgJ3ZhbHVlT2YnXQorUEFTUyBnZXRT
b3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN0cmluZy5wcm90b3R5cGUpIGlzIFsnYW5jaG9yJywgJ2Jp
ZycsICdibGluaycsICdib2xkJywgJ2NoYXJBdCcsICdjaGFyQ29kZUF0JywgJ2NvZGVQb2ludEF0
JywgJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdlbmRzV2l0aCcsICdmaXhlZCcsICdmb250Y29s
b3InLCAnZm9udHNpemUnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdpdGFsaWNzJywgJ2xhc3RJ
bmRleE9mJywgJ2xlbmd0aCcsICdsaW5rJywgJ2xvY2FsZUNvbXBhcmUnLCAnbWF0Y2gnLCAncmVw
ZWF0JywgJ3JlcGxhY2UnLCAnc2VhcmNoJywgJ3NsaWNlJywgJ3NtYWxsJywgJ3NwbGl0JywgJ3N0
YXJ0c1dpdGgnLCAnc3RyaWtlJywgJ3N1YicsICdzdWJzdHInLCAnc3Vic3RyaW5nJywgJ3N1cCcs
ICd0b0xvY2FsZUxvd2VyQ2FzZScsICd0b0xvY2FsZVVwcGVyQ2FzZScsICd0b0xvd2VyQ2FzZScs
ICd0b1N0cmluZycsICd0b1VwcGVyQ2FzZScsICd0cmltJywgJ3RyaW1MZWZ0JywgJ3RyaW1SaWdo
dCcsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlOYW1lcyhCb29sZWFuKSBp
cyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3Bl
cnR5TmFtZXMoQm9vbGVhbi5wcm90b3R5cGUpIGlzIFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcn
LCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoTnVtYmVyKSBpcyBb
J0VQU0lMT04nLCAnTUFYX1NBRkVfSU5URUdFUicsICdNQVhfVkFMVUUnLCAnTUlOX1NBRkVfSU5U
RUdFUicsICdNSU5fVkFMVUUnLCAnTkVHQVRJVkVfSU5GSU5JVFknLCAnTmFOJywgJ1BPU0lUSVZF
X0lORklOSVRZJywgJ2lzRmluaXRlJywgJ2lzSW50ZWdlcicsICdpc05hTicsICdpc1NhZmVJbnRl
Z2VyJywgJ2xlbmd0aCcsICduYW1lJywgJ3BhcnNlRmxvYXQnLCAncGFyc2VJbnQnLCAncHJvdG90
eXBlJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0
T3duUHJvcGVydHlOYW1lcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3Qt
Z2V0T3duUHJvcGVydHlOYW1lcy5qcwppbmRleCBlZGE2MzhjZjg1OGY2YWVlODBjMjA5ZjRhMTI3
OThjMDlmYTc3MTE1Li4wNDE5ZGI3M2U2NWZiZTA2NmFkMGM3YzE2ZDMwOTkzNzIzODA1MzI3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3Bl
cnR5TmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRP
d25Qcm9wZXJ0eU5hbWVzLmpzCkBAIC01Nyw3ICs1Nyw3IEBAIHZhciBleHBlY3RlZFByb3BlcnR5
TmFtZXNTZXQgPSB7CiAgICAgIkFycmF5IjogIlsnZnJvbScsICdpc0FycmF5JywgJ2xlbmd0aCcs
ICduYW1lJywgJ29mJywgJ3Byb3RvdHlwZSddIiwKICAgICAiQXJyYXkucHJvdG90eXBlIjogIlsn
Y29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VudHJpZXMnLCAnZXZlcnknLCAnZmlsbCcsICdmaWx0
ZXInLCAnZmluZCcsICdmaW5kSW5kZXgnLCAnZm9yRWFjaCcsICdpbmNsdWRlcycsICdpbmRleE9m
JywgJ2pvaW4nLCAna2V5cycsICdsYXN0SW5kZXhPZicsICdsZW5ndGgnLCAnbWFwJywgJ3BvcCcs
ICdwdXNoJywgJ3JlZHVjZScsICdyZWR1Y2VSaWdodCcsICdyZXZlcnNlJywgJ3NoaWZ0JywgJ3Ns
aWNlJywgJ3NvbWUnLCAnc29ydCcsICdzcGxpY2UnLCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJp
bmcnLCAndW5zaGlmdCcsICd2YWx1ZXMnXSIsCiAgICAgIlN0cmluZyI6ICJbJ2Zyb21DaGFyQ29k
ZScsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCi0gICAgIlN0cmluZy5wcm90b3R5
cGUiOiAiWydhbmNob3InLCAnYmlnJywgJ2JsaW5rJywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJD
b2RlQXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2Zv
bnRjb2xvcicsICdmb250c2l6ZScsICdpbmNsdWRlcycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAn
bGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsnLCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcs
ICdyZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gnLCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQn
LCAnc3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3ViJywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAn
c3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3RvTG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJD
YXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJp
bVJpZ2h0JywgJ3ZhbHVlT2YnXSIsCisgICAgIlN0cmluZy5wcm90b3R5cGUiOiAiWydhbmNob3In
LCAnYmlnJywgJ2JsaW5rJywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJDb2RlQXQnLCAnY29kZVBv
aW50QXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2Zv
bnRjb2xvcicsICdmb250c2l6ZScsICdpbmNsdWRlcycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAn
bGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsnLCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcs
ICdyZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gnLCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQn
LCAnc3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3ViJywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAn
c3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3RvTG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJD
YXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJp
bVJpZ2h0JywgJ3ZhbHVlT2YnXSIsCiAgICAgIkJvb2xlYW4iOiAiWydsZW5ndGgnLCAnbmFtZScs
ICdwcm90b3R5cGUnXSIsCiAgICAgIkJvb2xlYW4ucHJvdG90eXBlIjogIlsnY29uc3RydWN0b3In
LCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAgICAiTnVtYmVyIjogIlsnRVBTSUxPTicsICdN
QVhfU0FGRV9JTlRFR0VSJywgJ01BWF9WQUxVRScsICdNSU5fU0FGRV9JTlRFR0VSJywgJ01JTl9W
QUxVRScsICdORUdBVElWRV9JTkZJTklUWScsICdOYU4nLCAnUE9TSVRJVkVfSU5GSU5JVFknLCAn
aXNGaW5pdGUnLCAnaXNJbnRlZ2VyJywgJ2lzTmFOJywgJ2lzU2FmZUludGVnZXInLCAnbGVuZ3Ro
JywgJ25hbWUnLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICdwcm90b3R5cGUnXSIsCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzkxOWQ3NGM0NTUwMTM4ZTNlZTlkYmU3MTk0MzM5NWNlYjdhNjcwMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1w
b2ludC1hdC5qcwpAQCAtMCwwICsxLDEyMCBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2lj
IGJlaGF2aW9ycyBvZiBTdHJpbmcuY29kZVBvaW50QXQiKTsKKworc2hvdWxkQmUoJ1N0cmluZy5j
b2RlUG9pbnRBdCcsICd1bmRlZmluZWQnKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBl
b2YgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCcsICdmdW5jdGlvbicpOworCisvLyBGdW5j
dGlvbiBwcm9wZXJ0aWVzLgorc2hvdWxkQmUoJ1N0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQu
bGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFN0cmluZy5wcm90b3R5cGUsICJjb2RlUG9pbnRBdCIpLmNvbmZpZ3VyYWJsZScsICd0cnVlJyk7
CitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90
eXBlLCAiY29kZVBvaW50QXQiKS5lbnVtZXJhYmxlJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50
QXQiKS53cml0YWJsZScsICd0cnVlJyk7CisKKy8vIFRoZSBmdW5jdGlvbiBzaG91bGQgb25seSBi
ZSBvbiB0aGUgcHJvdG90eXBlIGNoYWluLCBub3Qgb24gdGhlIG9iamVjdCB0aGVtc2VsdmVzLgor
c2hvdWxkQmVGYWxzZSgnImZvbyIuaGFzT3duUHJvcGVydHkoImNvZGVQb2ludEF0IiknKTsKK3No
b3VsZEJlRmFsc2UoJyhuZXcgU3RyaW5nKCJiYXIiKSkuaGFzT3duUHJvcGVydHkoImNvZGVQb2lu
dEF0IiknKTsKKworLy8gU29tZSBzaW1wbGUgY2FzZXMuCitzaG91bGRCZSgnIiIuY29kZVBvaW50
QXQoMCknLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQoMSknLCAndW5k
ZWZpbmVkJyk7CisKK3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2ludEF0KDApJywgJzIwMScpOwor
c2hvdWxkQmUoJyLDiXTDqSIuY29kZVBvaW50QXQoMSknLCAnMTE2Jyk7CitzaG91bGRCZSgnIsOJ
dMOpIi5jb2RlUG9pbnRBdCgyKScsICcyMzMnKTsKK3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2lu
dEF0KDMpJywgJ3VuZGVmaW5lZCcpOworCitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIu
Y29kZVBvaW50QXQoMCknLCAnMTI0NTQnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OI
Ii5jb2RlUG9pbnRBdCgxKScsICcxMjQ1NScpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pj
g4giLmNvZGVQb2ludEF0KDIpJywgJzEyNTAyJyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreOD
g+ODiCIuY29kZVBvaW50QXQoMyknLCAnMTI0NjEnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt
44OD44OIIi5jb2RlUG9pbnRBdCg0KScsICcxMjQ4MycpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bj
gq3jg4Pjg4giLmNvZGVQb2ludEF0KDUpJywgJzEyNDg4Jyk7CitzaG91bGRCZSgnIuOCpuOCp+OD
luOCreODg+ODiCIuY29kZVBvaW50QXQoNiknLCAndW5kZWZpbmVkJyk7CisKKy8vIE9iamVjdCBj
b2VyY2lvbi4KK3Nob3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKG51bGwsIDApJyk7Citz
aG91bGRUaHJvdygnIiIuY29kZVBvaW50QXQuY2FsbCh1bmRlZmluZWQsIDApJyk7CitzaG91bGRC
ZSgnIiIuY29kZVBvaW50QXQuY2FsbCgwLCAwKScsICc0OCcpOworc2hvdWxkQmUoJyIiLmNvZGVQ
b2ludEF0LmNhbGwoTWF0aC5QSSwgMCknLCAnNTEnKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRB
dC5jYWxsKE1hdGguUEksIDEpJywgJzQ2Jyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2Fs
bChNYXRoLlBJLCAzKScsICc1MicpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwodHJ1
ZSwgMyknLCAnMTAxJyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChmYWxzZSwgMykn
LCAnMTE1Jyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChuZXcgT2JqZWN0LCAzKScs
ICcxMDYnKTsKK3Nob3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKFN5bWJvbCgiV2ViS2l0
IiksIDMpJyk7CisKKy8vIHRvU3RyaW5nLgordmFyIG9iamVjdFdpdGhDdXN0b21Ub1N0cmluZyA9
IHsgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyByZXR1cm4gIsO4IjsgfSB9Oworc2hvdWxkQmUoJyIi
LmNvZGVQb2ludEF0LmNhbGwob2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nLCAwKScsICcyNDgnKTsK
KwordmFyIG9iamVjdFRocm93aW5nT25Ub1N0cmluZyA9IHsgdG9TdHJpbmc6IGZ1bmN0aW9uKCkg
eyB0aHJvdyAiSGVoZSI7IH0gfTsKK3Nob3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKG9i
amVjdFRocm93aW5nT25Ub1N0cmluZywgMCknKTsKKwordmFyIG9iamVjdENvdW50aW5nVG9TdHJp
bmcgPSB7IGNvdW50ZXI6IDAsIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50ZXI7
IHJldHVybiB0aGlzLmNvdW50ZXI7IH0gfTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxs
KG9iamVjdENvdW50aW5nVG9TdHJpbmcsIDApJywgJzQ5Jyk7CitzaG91bGRCZSgnb2JqZWN0Q291
bnRpbmdUb1N0cmluZy5jb3VudGVyJywgJzEnKTsKKworLy8gV2VpcmQgcG9zaXRpb25zLgorc2hv
dWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KE5hTiknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5j
b2RlUG9pbnRBdCgtMCknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCgtMC4w
KScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0wLjA1KScsICc5NycpOwor
c2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0wLjk5OSknLCAnOTcnKTsKK3Nob3VsZEJlKCci
YWJjIi5jb2RlUG9pbnRBdCgwLjQpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50
QXQoMC45KScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KDIuOTk5OSknLCAn
OTknKTsKKworLy8gT3V0IG9mIGJvdW5kIHBvc2l0aW9ucy4KK3Nob3VsZEJlKCciYWJjIi5jb2Rl
UG9pbnRBdCgtMSknLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQo
NCknLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoNC4xKScsICd1
bmRlZmluZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdChOdW1iZXIuUE9TSVRJVkVf
SU5GSU5JVFkpJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KE51
bWJlci5ORUdBVElWRV9JTkZJTklUWSknLCAndW5kZWZpbmVkJyk7CisKKy8vIE5vbi1udW1iZXIg
YXMgcG9zaXRpb25zLgorc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KG51bGwpJywgJzk3Jyk7
CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQodW5kZWZpbmVkKScsICc5NycpOworc2hvdWxk
QmUoJyJhYmMiLmNvZGVQb2ludEF0KCIiKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQ
b2ludEF0KCJXZWJLaXQhIiknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdChu
ZXcgT2JqZWN0KScsICc5NycpOworc2hvdWxkVGhyb3coJyJhYmMiLmNvZGVQb2ludEF0KFN5bWJv
bCgiV2ViS2l0IikpJyk7CisKKy8vIFRoZSBmb2xsb3dpbmcgYXJlIHVzaW5nIHNwZWNpYWwgdGVz
dCBmdW5jdGlvbnMgYmVjYXVzZSBvZiBsaW1pdGF0aW9ucyBvZiBXZWJLaXRUZXN0UnVubmVyIHdo
ZW4gaGFuZGxpbmcgc3RyaW5ncyB3aXRoIGludmFsaWQgY29kZXBvaW50cy4KKy8vIFdoZW4gdHJh
bnNmZXJpbmcgdGhlIHRleHQgb2YgYSB0ZXN0LCBXZWJLaXRUZXN0UnVubmVyIGNvbnZlcnRzIGl0
IHRvIGEgVVRGLTggQyBTdHJpbmcuIE5vdCBhbGwgaW52YWxpZCBjb2RlIHBvaW50IGNhbiBiZSBy
ZXByZXNlbnRlZC4KKworLy8gSWYgZmlyc3QgPCAweEQ4MDAgb3IgZmlyc3QgPiAweERCRkYgb3Ig
cG9zaXRpb24rMSA9IHNpemUsIHJldHVybiBmaXJzdC4KK2Z1bmN0aW9uIHRlc3RMZWFkU3Vycm9n
YXRlT3V0T2ZCb3VuZHMoKQoreworICAgIHJldHVybiAoIlx1RDdGRlx1REMwMCIuY29kZVBvaW50
QXQoMCkgPT09IDB4ZDdmZiAmJiAiXHVEN0ZGXHVEQzAwIi5jb2RlUG9pbnRBdCgxKSA9PT0gMHhk
YzAwICYmICJcdUQ3RkZcdURDMDAiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQKKyAgICAg
ICAgICAgICYmICJcdURDMDBcdURDMDAiLmNvZGVQb2ludEF0KDApID09PSAweGRjMDAgJiYgIlx1
REMwMFx1REMwMCIuY29kZVBvaW50QXQoMSkgPT09IDB4ZGMwMCAmJiAiXHVEQzAwXHVEQzAwIi5j
b2RlUG9pbnRBdCgyKSA9PT0gdW5kZWZpbmVkKQorfQorc2hvdWxkQmVUcnVlKCJ0ZXN0TGVhZFN1
cnJvZ2F0ZU91dE9mQm91bmRzKCkiKTsKKworZnVuY3Rpb24gdGVzdExlYWRTdXJyb2dhdGVBc0xh
c3RDaGFyYWN0ZXIoKQoreworICAgIHJldHVybiAiYWJjXHVEODAwIi5jb2RlUG9pbnRBdCgzKSA9
PT0gMHhkODAwOworfQorc2hvdWxkQmVUcnVlKCJ0ZXN0TGVhZFN1cnJvZ2F0ZUFzTGFzdENoYXJh
Y3RlcigpIik7CisKKy8vIElmIHNlY29uZCA8IDB4REMwMCBvciBzZWNvbmQgPiAweERGRkYsIHJl
dHVybiBmaXJzdC4KK2Z1bmN0aW9uIHRlc3RUcmFpbFN1cnJvZ2F0ZU91dE9mYm91bmRzKCkKK3sK
KyAgICByZXR1cm4gKCJcdUQ4MDBcdURCRkYiLmNvZGVQb2ludEF0KDApID09PSAweGQ4MDAgJiYg
Ilx1RDgwMFx1REJGRiIuY29kZVBvaW50QXQoMSkgPT09IDB4ZGJmZiAmJiAiXHVEODAwXHVEQkZG
Ii5jb2RlUG9pbnRBdCgyKSA9PT0gdW5kZWZpbmVkCisgICAgICAgICAgICAmJiAiXHVEODAwXHVF
MDAwIi5jb2RlUG9pbnRBdCgwKSA9PT0gMHhkODAwICYmICJcdUQ4MDBcdUUwMDAiLmNvZGVQb2lu
dEF0KDEpID09PSAweGUwMDAgJiYgIlx1RDgwMFx1RTAwMCIuY29kZVBvaW50QXQoMikgPT09IHVu
ZGVmaW5lZCkKK30KK3Nob3VsZEJlVHJ1ZSgidGVzdFRyYWlsU3Vycm9nYXRlT3V0T2Zib3VuZHMo
KSIpOworCisvLyBOdWxsIGluIGEgc3RyaW5nLgorZnVuY3Rpb24gdGVzdEFjY2Vzc051bGxJblN0
cmluZygpCit7CisgICAgcmV0dXJuICJhXHUwMDAwYiIuY29kZVBvaW50QXQoMCkgPT09IDk3ICYm
ICJhXHUwMDAwYiIuY29kZVBvaW50QXQoMSkgPT09IDAgJiYgImFcdTAwMDBiIi5jb2RlUG9pbnRB
dCgyKSA9PT0gOTggJiYgImFcdTAwMDBiIi5jb2RlUG9pbnRBdCgzKSA9PT0gdW5kZWZpbmVkOwor
fQorc2hvdWxkQmVUcnVlKCJ0ZXN0QWNjZXNzTnVsbEluU3RyaW5nKCkiKTsKKworCisvLyBOb3Jt
YWwgY29tYmluYXRpb25zIG9mIHN1cnJvZ2F0ZXMuCitmdW5jdGlvbiB0ZXN0Tm9ybWFsQ29tYmlu
YXRpb25PZlN1cnJvZ2F0ZXMoKQoreworICAgIHJldHVybiAiXHVEODAwXHVEQzAwIi5jb2RlUG9p
bnRBdCgwKSA9PT0gNjU1MzYgJiYgIlx1RDgwMFx1REMwMCIuY29kZVBvaW50QXQoMSkgPT09IDU2
MzIwICYmICJcdUQ4MDBcdURDMDAiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQ7Cit9Citz
aG91bGRCZVRydWUoInRlc3ROb3JtYWxDb21iaW5hdGlvbk9mU3Vycm9nYXRlcygpIik7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1hdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1hdC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2JkODZkOGZlNmZkMjJkZDA3OTQ2ODA3OTU0Y2FjYWU0NWYxYjRmZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDY4IEBACitUZXN0IHRoZSBiYXNpYyBiZWhhdmlvcnMgb2YgU3RyaW5nLmNv
ZGVQb2ludEF0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFN0cmluZy5j
b2RlUG9pbnRBdCBpcyB1bmRlZmluZWQKK1BBU1MgdHlwZW9mIFN0cmluZy5wcm90b3R5cGUuY29k
ZVBvaW50QXQgaXMgImZ1bmN0aW9uIgorUEFTUyBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0
Lmxlbmd0aCBpcyAxCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5n
LnByb3RvdHlwZSwgImNvZGVQb2ludEF0IikuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50
QXQiKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgImNvZGVQb2ludEF0Iikud3JpdGFibGUgaXMgdHJ1ZQor
UEFTUyAiZm9vIi5oYXNPd25Qcm9wZXJ0eSgiY29kZVBvaW50QXQiKSBpcyBmYWxzZQorUEFTUyAo
bmV3IFN0cmluZygiYmFyIikpLmhhc093blByb3BlcnR5KCJjb2RlUG9pbnRBdCIpIGlzIGZhbHNl
CitQQVNTICIiLmNvZGVQb2ludEF0KDApIGlzIHVuZGVmaW5lZAorUEFTUyAiIi5jb2RlUG9pbnRB
dCgxKSBpcyB1bmRlZmluZWQKK1BBU1MgIsOJdMOpIi5jb2RlUG9pbnRBdCgwKSBpcyAyMDEKK1BB
U1MgIsOJdMOpIi5jb2RlUG9pbnRBdCgxKSBpcyAxMTYKK1BBU1MgIsOJdMOpIi5jb2RlUG9pbnRB
dCgyKSBpcyAyMzMKK1BBU1MgIsOJdMOpIi5jb2RlUG9pbnRBdCgzKSBpcyB1bmRlZmluZWQKK1BB
U1MgIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBvaW50QXQoMCkgaXMgMTI0NTQKK1BBU1MgIuOC
puOCp+ODluOCreODg+ODiCIuY29kZVBvaW50QXQoMSkgaXMgMTI0NTUKK1BBU1MgIuOCpuOCp+OD
luOCreODg+ODiCIuY29kZVBvaW50QXQoMikgaXMgMTI1MDIKK1BBU1MgIuOCpuOCp+ODluOCreOD
g+ODiCIuY29kZVBvaW50QXQoMykgaXMgMTI0NjEKK1BBU1MgIuOCpuOCp+ODluOCreODg+ODiCIu
Y29kZVBvaW50QXQoNCkgaXMgMTI0ODMKK1BBU1MgIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBv
aW50QXQoNSkgaXMgMTI0ODgKK1BBU1MgIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBvaW50QXQo
NikgaXMgdW5kZWZpbmVkCitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwobnVsbCwgMCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2Fs
bCh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQ
QVNTICIiLmNvZGVQb2ludEF0LmNhbGwoMCwgMCkgaXMgNDgKK1BBU1MgIiIuY29kZVBvaW50QXQu
Y2FsbChNYXRoLlBJLCAwKSBpcyA1MQorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKE1hdGguUEks
IDEpIGlzIDQ2CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwoTWF0aC5QSSwgMykgaXMgNTIKK1BB
U1MgIiIuY29kZVBvaW50QXQuY2FsbCh0cnVlLCAzKSBpcyAxMDEKK1BBU1MgIiIuY29kZVBvaW50
QXQuY2FsbChmYWxzZSwgMykgaXMgMTE1CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwobmV3IE9i
amVjdCwgMykgaXMgMTA2CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwoU3ltYm9sKCJXZWJLaXQi
KSwgMykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgIiIuY29k
ZVBvaW50QXQuY2FsbChvYmplY3RXaXRoQ3VzdG9tVG9TdHJpbmcsIDApIGlzIDI0OAorUEFTUyAi
Ii5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdFRocm93aW5nT25Ub1N0cmluZywgMCkgdGhyZXcgZXhj
ZXB0aW9uIEhlaGUuCitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0Q291bnRpbmdUb1N0
cmluZywgMCkgaXMgNDkKK1BBU1Mgb2JqZWN0Q291bnRpbmdUb1N0cmluZy5jb3VudGVyIGlzIDEK
K1BBU1MgImFiYyIuY29kZVBvaW50QXQoTmFOKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRB
dCgtMCkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoLTAuMCkgaXMgOTcKK1BBU1MgImFi
YyIuY29kZVBvaW50QXQoLTAuMDUpIGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KC0wLjk5
OSkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoMC40KSBpcyA5NworUEFTUyAiYWJjIi5j
b2RlUG9pbnRBdCgwLjkpIGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDIuOTk5OSkgaXMg
OTkKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoLTEpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5j
b2RlUG9pbnRBdCg0KSBpcyB1bmRlZmluZWQKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoNC4xKSBp
cyB1bmRlZmluZWQKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoTnVtYmVyLlBPU0lUSVZFX0lORklO
SVRZKSBpcyB1bmRlZmluZWQKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoTnVtYmVyLk5FR0FUSVZF
X0lORklOSVRZKSBpcyB1bmRlZmluZWQKK1BBU1MgImFiYyIuY29kZVBvaW50QXQobnVsbCkgaXMg
OTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQodW5kZWZpbmVkKSBpcyA5NworUEFTUyAiYWJjIi5j
b2RlUG9pbnRBdCgiIikgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoIldlYktpdCEiKSBp
cyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChuZXcgT2JqZWN0KSBpcyA5NworUEFTUyAiYWJj
Ii5jb2RlUG9pbnRBdChTeW1ib2woIldlYktpdCIpKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBUeXBlIGVycm9yLgorUEFTUyB0ZXN0TGVhZFN1cnJvZ2F0ZU91dE9mQm91bmRzKCkgaXMgdHJ1
ZQorUEFTUyB0ZXN0TGVhZFN1cnJvZ2F0ZUFzTGFzdENoYXJhY3RlcigpIGlzIHRydWUKK1BBU1Mg
dGVzdFRyYWlsU3Vycm9nYXRlT3V0T2Zib3VuZHMoKSBpcyB0cnVlCitQQVNTIHRlc3RBY2Nlc3NO
dWxsSW5TdHJpbmcoKSBpcyB0cnVlCitQQVNTIHRlc3ROb3JtYWxDb21iaW5hdGlvbk9mU3Vycm9n
YXRlcygpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1h
dC5odG1sIGIvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NTZhNDIyMmViZTEyNDYzZmNjYTg2ZmU2ZWU3YjM5MTQ1NjNlYzUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuaHRtbApAQCAtMCww
ICsxLDExIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251197</attachid>
            <date>2015-04-20 16:00:54 -0700</date>
            <delta_ts>2015-04-20 23:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143934-20150420155952.patch</filename>
            <type>text/plain</type>
            <size>21777</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OGI1ODQ1ZmU1MjVhZWI0NTY5NWNjMDc4MDIxNDJiMDU1Mzg4ZDZiLi4xYmFhNGQ3NjZmNWE3MGE2
ODZkM2EyOTJhM2JiY2RiMzdlYmQ2Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNC0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
U3RyaW5nLmNvZGVQb2ludEF0KCkgYXMgZGVmaW5lZCBieSBFUzYuCisgICAgICAgIEkgb3B0ZWQg
Zm9yIGEgQysrIGltcGxlbWVudGF0aW9uIGZvciBub3cuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KToKKwogMjAxNS0wNC0yMCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcHJvdmUg
U3VwcG9ydCBmb3IgV2Vha1NldCBpbiBDb25zb2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA5OWRhYzMxZDYzNGY4ZDRkMWU0
YTU5YjhmNTdlNzA4ZGI4ZDlkZDViLi40ODZiOTU2NmQwYzZkZjAxNzg1MzVjNjFjZDk2M2ZlNGYw
MTMyMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKFN0cmluZ1Byb3RvdHlwZSk7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKik7CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRl
Kik7CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2lu
dEF0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDb25jYXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOwpAQCAtMTA4LDYg
KzEwOSw3IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlNDX05BVElWRV9JTlRSSU5T
SUNfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZiwgc3RyaW5nUHJvdG9GdW5jVG9T
dHJpbmcsIERvbnRFbnVtLCAwLCBTdHJpbmdQcm90b3R5cGVWYWx1ZU9mSW50cmluc2ljKTsKICAg
ICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTigiY2hhckF0Iiwgc3RyaW5nUHJvdG9GdW5j
Q2hhckF0LCBEb250RW51bSwgMSwgQ2hhckF0SW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0lO
VFJJTlNJQ19GVU5DVElPTigiY2hhckNvZGVBdCIsIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQs
IERvbnRFbnVtLCAxLCBDaGFyQ29kZUF0SW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKCJjb2RlUG9pbnRBdCIsIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0LCBEb250RW51bSwg
MSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiY29uY2F0Iiwgc3RyaW5nUHJvdG9GdW5jQ29u
Y2F0LCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiaW5kZXhPZiIsIHN0
cmluZ1Byb3RvRnVuY0luZGV4T2YsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKCJsYXN0SW5kZXhPZiIsIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mLCBEb250RW51bSwg
MSk7CkBAIC04MTEsNiArODEzLDM5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKIH0KIAorc3RhdGljIGlubGluZSBVQ2hhcjMyIGNvZGVQb2lu
dEF0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3NpdGlvbikKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChwb3NpdGlvbiA8IHN0cmluZy5sZW5ndGgoKSk7CisgICAgaWYgKHN0cmluZy5p
czhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHN0cmluZy5jaGFyYWN0ZXJzOCgpW3Bvc2l0aW9uXTsK
KyAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKKyAgICBVMTZfTkVYVChzdHJpbmcuY2hhcmFjdGVyczE2
KCksIHBvc2l0aW9uLCBzdHJpbmcubGVuZ3RoKCksIGNoYXJhY3Rlcik7CisgICAgcmV0dXJuIGNo
YXJhY3RlcjsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworCisgICAgU3Ry
aW5nIHN0cmluZyA9IHRoaXNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICBKU1ZhbHVlIGFyZ3VtZW50MCA9IGV4ZWMt
PmFyZ3VtZW50KDApOworICAgIGlmIChhcmd1bWVudDAuaXNVSW50MzIoKSkgeworICAgICAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IGFyZ3VtZW50MC5hc1VJbnQzMigpOworICAgICAgICBpZiAocG9z
aXRpb24gPCBsZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGNvZGVQb2ludEF0KHN0cmluZywgcG9zaXRpb24pKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisgICAgZG91YmxlIGRvdWJsZVBv
c2l0aW9uID0gYXJndW1lbnQwLnRvSW50ZWdlcihleGVjKTsKKyAgICBpZiAoZG91YmxlUG9zaXRp
b24gPj0gMCAmJiBkb3VibGVQb3NpdGlvbiA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihjb2RlUG9pbnRBdChzdHJpbmcsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkb3VibGVQb3NpdGlvbikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjkwYmY4ZjExODAxODg1NDUyNzg3ZWVlZTFlNGI0
NDQyOGE1YTk3Mi4uNzFiNjkwZDZlNjk2M2RlMjU5NzZmYjhlOWExZmU1MmY5OGU5MjU1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA0LTIwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFt
aW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgU3RyaW5nLmNvZGVQb2ludEF0KCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzkzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvT2Jq
ZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9zdHJpbmctY29kZS1wb2ludC1hdC5qczogQWRkZWQuCisgICAgICAgIChvYmplY3RX
aXRoQ3VzdG9tVG9TdHJpbmcudG9TdHJpbmcpOgorICAgICAgICAob2JqZWN0VGhyb3dpbmdPblRv
U3RyaW5nLnRvU3RyaW5nKToKKyAgICAgICAgKG9iamVjdENvdW50aW5nVG9TdHJpbmcudG9TdHJp
bmcpOgorICAgICAgICAodGVzdExlYWRTdXJyb2dhdGVPdXRPZkJvdW5kcyk6CisgICAgICAgICh0
ZXN0TGVhZFN1cnJvZ2F0ZUFzTGFzdENoYXJhY3Rlcik6CisgICAgICAgICh0ZXN0VHJhaWxTdXJy
b2dhdGVPdXRPZmJvdW5kcyk6CisgICAgICAgICh0ZXN0QWNjZXNzTnVsbEluU3RyaW5nKToKKyAg
ICAgICAgKHRlc3ROb3JtYWxDb21iaW5hdGlvbk9mU3Vycm9nYXRlcyk6CisgICAgICAgICoganMv
c3RyaW5nLWNvZGUtcG9pbnQtYXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9z
dHJpbmctY29kZS1wb2ludC1hdC5odG1sOiBBZGRlZC4KKwogMjAxNS0wNC0yMCAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IElt
cHJvdmUgU3VwcG9ydCBmb3IgV2Vha1NldCBpbiBDb25zb2xlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKaW5kZXggMDc1
MGM4YTQ2ZWM1M2FhYmI2NGEzOTY2ZWQ0ODY5MDVmZjkyZTgwOC4uZDZmMjZiNWE2MGVmODdlMTVm
MzVmM2MwMTBhMjBhZGM5MjUwZGYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0
LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL09i
amVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dApAQCAtNDgsNyArNDgsNyBAQCBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoRnVuY3Rpb24ucHJvdG90eXBlKSBpcyBbJ2Fw
cGx5JywgJ2JpbmQnLCAnY2FsbCcsCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQXJy
YXkpIGlzIFsnZnJvbScsICdpc0FycmF5JywgJ2xlbmd0aCcsICduYW1lJywgJ29mJywgJ3Byb3Rv
dHlwZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQXJyYXkucHJvdG90eXBlKSBp
cyBbJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdlbnRyaWVzJywgJ2V2ZXJ5JywgJ2ZpbGwnLCAn
ZmlsdGVyJywgJ2ZpbmQnLCAnZmluZEluZGV4JywgJ2ZvckVhY2gnLCAnaW5jbHVkZXMnLCAnaW5k
ZXhPZicsICdqb2luJywgJ2tleXMnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ21hcCcsICdw
b3AnLCAncHVzaCcsICdyZWR1Y2UnLCAncmVkdWNlUmlnaHQnLCAncmV2ZXJzZScsICdzaGlmdCcs
ICdzbGljZScsICdzb21lJywgJ3NvcnQnLCAnc3BsaWNlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3Rv
U3RyaW5nJywgJ3Vuc2hpZnQnLCAndmFsdWVzJ10KIFBBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhTdHJpbmcpIGlzIFsnZnJvbUNoYXJDb2RlJywgJ2xlbmd0aCcsICduYW1lJywgJ3Byb3Rv
dHlwZSddCi1QQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoU3RyaW5nLnByb3RvdHlwZSkg
aXMgWydhbmNob3InLCAnYmlnJywgJ2JsaW5rJywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJDb2Rl
QXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2ZvbnRj
b2xvcicsICdmb250c2l6ZScsICdpbmNsdWRlcycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAnbGFz
dEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsnLCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcsICdy
ZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gnLCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQnLCAn
c3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3ViJywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAnc3Vw
JywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3RvTG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJDYXNl
JywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNlJywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJpbVJp
Z2h0JywgJ3ZhbHVlT2YnXQorUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN0cmluZy5w
cm90b3R5cGUpIGlzIFsnYW5jaG9yJywgJ2JpZycsICdibGluaycsICdib2xkJywgJ2NoYXJBdCcs
ICdjaGFyQ29kZUF0JywgJ2NvZGVQb2ludEF0JywgJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdl
bmRzV2l0aCcsICdmaXhlZCcsICdmb250Y29sb3InLCAnZm9udHNpemUnLCAnaW5jbHVkZXMnLCAn
aW5kZXhPZicsICdpdGFsaWNzJywgJ2xhc3RJbmRleE9mJywgJ2xlbmd0aCcsICdsaW5rJywgJ2xv
Y2FsZUNvbXBhcmUnLCAnbWF0Y2gnLCAncmVwZWF0JywgJ3JlcGxhY2UnLCAnc2VhcmNoJywgJ3Ns
aWNlJywgJ3NtYWxsJywgJ3NwbGl0JywgJ3N0YXJ0c1dpdGgnLCAnc3RyaWtlJywgJ3N1YicsICdz
dWJzdHInLCAnc3Vic3RyaW5nJywgJ3N1cCcsICd0b0xvY2FsZUxvd2VyQ2FzZScsICd0b0xvY2Fs
ZVVwcGVyQ2FzZScsICd0b0xvd2VyQ2FzZScsICd0b1N0cmluZycsICd0b1VwcGVyQ2FzZScsICd0
cmltJywgJ3RyaW1MZWZ0JywgJ3RyaW1SaWdodCcsICd2YWx1ZU9mJ10KIFBBU1MgZ2V0U29ydGVk
T3duUHJvcGVydHlOYW1lcyhCb29sZWFuKSBpcyBbJ2xlbmd0aCcsICduYW1lJywgJ3Byb3RvdHlw
ZSddCiBQQVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQm9vbGVhbi5wcm90b3R5cGUpIGlz
IFsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddCiBQQVNTIGdldFNvcnRlZE93
blByb3BlcnR5TmFtZXMoTnVtYmVyKSBpcyBbJ0VQU0lMT04nLCAnTUFYX1NBRkVfSU5URUdFUics
ICdNQVhfVkFMVUUnLCAnTUlOX1NBRkVfSU5URUdFUicsICdNSU5fVkFMVUUnLCAnTkVHQVRJVkVf
SU5GSU5JVFknLCAnTmFOJywgJ1BPU0lUSVZFX0lORklOSVRZJywgJ2lzRmluaXRlJywgJ2lzSW50
ZWdlcicsICdpc05hTicsICdpc1NhZmVJbnRlZ2VyJywgJ2xlbmd0aCcsICduYW1lJywgJ3BhcnNl
RmxvYXQnLCAncGFyc2VJbnQnLCAncHJvdG90eXBlJ10KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5qcwppbmRleCA1
M2Y2YTYxOTlhMGI0YWYxNzNlODRhZDM5NzZhZmNhNzVlNDcwZDgyLi5mMzExM2M3YzUxYmExNjVl
MTgxMjVlY2FlMDhhNzkwOGMyZWVkNDAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMuanMKKysrIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCkBAIC01Nyw3ICs1
Nyw3IEBAIHZhciBleHBlY3RlZFByb3BlcnR5TmFtZXNTZXQgPSB7CiAgICAgIkFycmF5IjogIlsn
ZnJvbScsICdpc0FycmF5JywgJ2xlbmd0aCcsICduYW1lJywgJ29mJywgJ3Byb3RvdHlwZSddIiwK
ICAgICAiQXJyYXkucHJvdG90eXBlIjogIlsnY29uY2F0JywgJ2NvbnN0cnVjdG9yJywgJ2VudHJp
ZXMnLCAnZXZlcnknLCAnZmlsbCcsICdmaWx0ZXInLCAnZmluZCcsICdmaW5kSW5kZXgnLCAnZm9y
RWFjaCcsICdpbmNsdWRlcycsICdpbmRleE9mJywgJ2pvaW4nLCAna2V5cycsICdsYXN0SW5kZXhP
ZicsICdsZW5ndGgnLCAnbWFwJywgJ3BvcCcsICdwdXNoJywgJ3JlZHVjZScsICdyZWR1Y2VSaWdo
dCcsICdyZXZlcnNlJywgJ3NoaWZ0JywgJ3NsaWNlJywgJ3NvbWUnLCAnc29ydCcsICdzcGxpY2Un
LCAndG9Mb2NhbGVTdHJpbmcnLCAndG9TdHJpbmcnLCAndW5zaGlmdCcsICd2YWx1ZXMnXSIsCiAg
ICAgIlN0cmluZyI6ICJbJ2Zyb21DaGFyQ29kZScsICdsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5
cGUnXSIsCi0gICAgIlN0cmluZy5wcm90b3R5cGUiOiAiWydhbmNob3InLCAnYmlnJywgJ2JsaW5r
JywgJ2JvbGQnLCAnY2hhckF0JywgJ2NoYXJDb2RlQXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9y
JywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2ZvbnRjb2xvcicsICdmb250c2l6ZScsICdpbmNsdWRl
cycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsn
LCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcsICdyZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gn
LCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQnLCAnc3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3Vi
JywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAnc3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3Rv
TG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJDYXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNl
JywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJpbVJpZ2h0JywgJ3ZhbHVlT2YnXSIsCisgICAgIlN0
cmluZy5wcm90b3R5cGUiOiAiWydhbmNob3InLCAnYmlnJywgJ2JsaW5rJywgJ2JvbGQnLCAnY2hh
ckF0JywgJ2NoYXJDb2RlQXQnLCAnY29kZVBvaW50QXQnLCAnY29uY2F0JywgJ2NvbnN0cnVjdG9y
JywgJ2VuZHNXaXRoJywgJ2ZpeGVkJywgJ2ZvbnRjb2xvcicsICdmb250c2l6ZScsICdpbmNsdWRl
cycsICdpbmRleE9mJywgJ2l0YWxpY3MnLCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ2xpbmsn
LCAnbG9jYWxlQ29tcGFyZScsICdtYXRjaCcsICdyZXBlYXQnLCAncmVwbGFjZScsICdzZWFyY2gn
LCAnc2xpY2UnLCAnc21hbGwnLCAnc3BsaXQnLCAnc3RhcnRzV2l0aCcsICdzdHJpa2UnLCAnc3Vi
JywgJ3N1YnN0cicsICdzdWJzdHJpbmcnLCAnc3VwJywgJ3RvTG9jYWxlTG93ZXJDYXNlJywgJ3Rv
TG9jYWxlVXBwZXJDYXNlJywgJ3RvTG93ZXJDYXNlJywgJ3RvU3RyaW5nJywgJ3RvVXBwZXJDYXNl
JywgJ3RyaW0nLCAndHJpbUxlZnQnLCAndHJpbVJpZ2h0JywgJ3ZhbHVlT2YnXSIsCiAgICAgIkJv
b2xlYW4iOiAiWydsZW5ndGgnLCAnbmFtZScsICdwcm90b3R5cGUnXSIsCiAgICAgIkJvb2xlYW4u
cHJvdG90eXBlIjogIlsnY29uc3RydWN0b3InLCAndG9TdHJpbmcnLCAndmFsdWVPZiddIiwKICAg
ICAiTnVtYmVyIjogIlsnRVBTSUxPTicsICdNQVhfU0FGRV9JTlRFR0VSJywgJ01BWF9WQUxVRScs
ICdNSU5fU0FGRV9JTlRFR0VSJywgJ01JTl9WQUxVRScsICdORUdBVElWRV9JTkZJTklUWScsICdO
YU4nLCAnUE9TSVRJVkVfSU5GSU5JVFknLCAnaXNGaW5pdGUnLCAnaXNJbnRlZ2VyJywgJ2lzTmFO
JywgJ2lzU2FmZUludGVnZXInLCAnbGVuZ3RoJywgJ25hbWUnLCAncGFyc2VGbG9hdCcsICdwYXJz
ZUludCcsICdwcm90b3R5cGUnXSIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY5ZTAxMzE1Y2I2YWYyYzU0
ZDAxYTkxNGI1YzhiNjQ5N2FkYThlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1wb2ludC1hdC5qcwpAQCAtMCwwICsxLDE0MyBAQAor
ZGVzY3JpcHRpb24oIlRlc3QgdGhlIGJhc2ljIGJlaGF2aW9ycyBvZiBTdHJpbmcuY29kZVBvaW50
QXQiKTsKKworc2hvdWxkQmUoJ1N0cmluZy5jb2RlUG9pbnRBdCcsICd1bmRlZmluZWQnKTsKKwor
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRB
dCcsICdmdW5jdGlvbicpOworCisvLyBGdW5jdGlvbiBwcm9wZXJ0aWVzLgorc2hvdWxkQmUoJ1N0
cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQubGVuZ3RoJywgJzEnKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygnU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdC5uYW1lJywgJ2NvZGVQb2ludEF0
JykKK3Nob3VsZEJlKCdPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90
b3R5cGUsICJjb2RlUG9pbnRBdCIpLmNvbmZpZ3VyYWJsZScsICd0cnVlJyk7CitzaG91bGRCZSgn
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBv
aW50QXQiKS5lbnVtZXJhYmxlJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQiKS53cml0YWJs
ZScsICd0cnVlJyk7CisKKy8vIFRoZSBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBvbiB0aGUgcHJv
dG90eXBlIGNoYWluLCBub3Qgb24gdGhlIG9iamVjdCB0aGVtc2VsdmVzLgorc2hvdWxkQmVGYWxz
ZSgnImZvbyIuaGFzT3duUHJvcGVydHkoImNvZGVQb2ludEF0IiknKTsKK3Nob3VsZEJlRmFsc2Uo
JyhuZXcgU3RyaW5nKCJiYXIiKSkuaGFzT3duUHJvcGVydHkoImNvZGVQb2ludEF0IiknKTsKKwor
Ly8gU29tZSBzaW1wbGUgY2FzZXMuCitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQoMCknLCAndW5k
ZWZpbmVkJyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQoMSknLCAndW5kZWZpbmVkJyk7CisK
K3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2ludEF0KDApJywgJzIwMScpOworc2hvdWxkQmUoJyLD
iXTDqSIuY29kZVBvaW50QXQoMSknLCAnMTE2Jyk7CitzaG91bGRCZSgnIsOJdMOpIi5jb2RlUG9p
bnRBdCgyKScsICcyMzMnKTsKK3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2ludEF0KDMpJywgJ3Vu
ZGVmaW5lZCcpOworCitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBvaW50QXQo
MCknLCAnMTI0NTQnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRB
dCgxKScsICcxMjQ1NScpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQb2lu
dEF0KDIpJywgJzEyNTAyJyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIuY29kZVBv
aW50QXQoMyknLCAnMTI0NjEnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD44OIIi5jb2Rl
UG9pbnRBdCg0KScsICcxMjQ4MycpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pjg4giLmNv
ZGVQb2ludEF0KDUpJywgJzEyNDg4Jyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+ODiCIu
Y29kZVBvaW50QXQoNiknLCAndW5kZWZpbmVkJyk7CisKKy8vIE9iamVjdCBjb2VyY2lvbi4KK3No
b3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKG51bGwsIDApJyk7CitzaG91bGRUaHJvdygn
IiIuY29kZVBvaW50QXQuY2FsbCh1bmRlZmluZWQsIDApJyk7CitzaG91bGRCZSgnIiIuY29kZVBv
aW50QXQuY2FsbCgwLCAwKScsICc0OCcpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwo
TWF0aC5QSSwgMCknLCAnNTEnKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKE1hdGgu
UEksIDEpJywgJzQ2Jyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChNYXRoLlBJLCAz
KScsICc1MicpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwodHJ1ZSwgMyknLCAnMTAx
Jyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChmYWxzZSwgMyknLCAnMTE1Jyk7Citz
aG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChuZXcgT2JqZWN0LCAzKScsICcxMDYnKTsKK3No
b3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKFN5bWJvbCgiV2ViS2l0IiksIDMpJyk7CisK
Ky8vIHRvU3RyaW5nLgordmFyIG9iamVjdFdpdGhDdXN0b21Ub1N0cmluZyA9IHsgdG9TdHJpbmc6
IGZ1bmN0aW9uKCkgeyByZXR1cm4gIsO4IjsgfSB9Oworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0
LmNhbGwob2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nLCAwKScsICcyNDgnKTsKKwordmFyIG9iamVj
dFRocm93aW5nT25Ub1N0cmluZyA9IHsgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgeyB0aHJvdyAiSGVo
ZSI7IH0gfTsKK3Nob3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdFRocm93aW5n
T25Ub1N0cmluZywgMCknKTsKKwordmFyIG9iamVjdENvdW50aW5nVG9TdHJpbmcgPSB7IGNvdW50
ZXI6IDAsIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiB0aGlz
LmNvdW50ZXI7IH0gfTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdENvdW50
aW5nVG9TdHJpbmcsIDApJywgJzQ5Jyk7CitzaG91bGRCZSgnb2JqZWN0Q291bnRpbmdUb1N0cmlu
Zy5jb3VudGVyJywgJzEnKTsKKworLy8gVG9OdW1iZXIuCit2YXIgb2JqZWN0V2l0aEN1c3RvbVZh
bHVlT2YgPSB7IHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICI1IjsgfSwgdmFsdWVPZjog
ZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9IH07CitzaG91bGRCZSgnImFiY2RlIi5jb2RlUG9pbnRB
dChvYmplY3RXaXRoQ3VzdG9tVmFsdWVPZiknLCAnOTgnKTsKKworLy8gVGhlIHNlY29uZCBvYmpl
Y3QgaXMgbmV2ZXIgY29udmVydGVkIHRvIG51bWJlciBpZiB0aGUgZmlyc3Qgb2JqZWN0IGRpZCBu
b3QgY29udmVydCB0byBzdHJpbmcuCit2YXIgb2JqZWN0UmVjb3Jkc1ZhbHVlT2YgPSB7IHZhbHVl
T2ZFdmFsdWF0ZWQ6IGZhbHNlLCB2YWx1ZU9mOiBmdW5jdGlvbigpIHsgdGhpcy52YWx1ZU9mRXZh
bHVhdGVkID0gdHJ1ZTsgcmV0dXJuIDE7IH0gfQorc2hvdWxkVGhyb3coJyIiLmNvZGVQb2ludEF0
LmNhbGwobnVsbCwgb2JqZWN0UmVjb3Jkc1ZhbHVlT2YpJyk7CitzaG91bGRUaHJvdygnIiIuY29k
ZVBvaW50QXQuY2FsbCh1bmRlZmluZWQsIG9iamVjdFJlY29yZHNWYWx1ZU9mKScpOworc2hvdWxk
VGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwoU3ltYm9sKCJXZWJLaXQiKSwgb2JqZWN0UmVjb3Jk
c1ZhbHVlT2YpJyk7CitzaG91bGRUaHJvdygnIiIuY29kZVBvaW50QXQuY2FsbChvYmplY3RUaHJv
d2luZ09uVG9TdHJpbmcsIG9iamVjdFJlY29yZHNWYWx1ZU9mKScpOworc2hvdWxkQmVGYWxzZSgn
b2JqZWN0UmVjb3Jkc1ZhbHVlT2YudmFsdWVPZkV2YWx1YXRlZCcpOworCisvLyBFdmFsdWF0aW9u
IG9yZGVyLgordmFyIGV2YWx1YXRpb25PcmRlclJlY29yZGVyID0geworICAgIG1ldGhvZHNDYWxs
ZWQ6IFtdLAorICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgdGhpcy5tZXRob2RzQ2FsbGVkLnB1
c2goInRvU3RyaW5nIik7IHJldHVybiAiZm9vYmFyIjsgfSwKKyAgICB2YWx1ZU9mOiBmdW5jdGlv
bigpIHsgdGhpcy5tZXRob2RzQ2FsbGVkLnB1c2goInZhbHVlT2YiKTsgcmV0dXJuIDU7IH0KK30K
K3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKGV2YWx1YXRpb25PcmRlclJlY29yZGVyLCBl
dmFsdWF0aW9uT3JkZXJSZWNvcmRlciknLCAnMTE0Jyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2V2YWx1YXRpb25PcmRlclJlY29yZGVyLm1ldGhvZHNDYWxsZWQudG9TdHJpbmcoKScsICd0b1N0
cmluZyx2YWx1ZU9mJyk7CisKKy8vIFdlaXJkIHBvc2l0aW9ucy4KK3Nob3VsZEJlKCciYWJjIi5j
b2RlUG9pbnRBdChOYU4pJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTAp
JywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTAuMCknLCAnOTcnKTsKK3No
b3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCgtMC4wNSknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJj
Ii5jb2RlUG9pbnRBdCgtMC45OTkpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50
QXQoMC40KScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KDAuOSknLCAnOTcn
KTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCgyLjk5OTkpJywgJzk5Jyk7CisKKy8vIE91
dCBvZiBib3VuZCBwb3NpdGlvbnMuCitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTEpJywg
J3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KDQpJywgJ3VuZGVmaW5l
ZCcpOworc2hvdWxkQmUoJ3ZhciBzdHIgPSAiYWJjIjsgc3RyLmNvZGVQb2ludEF0KHN0ci5sZW5n
dGgpJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KDQuMSknLCAn
dW5kZWZpbmVkJyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoTnVtYmVyLlBPU0lUSVZF
X0lORklOSVRZKScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdChO
dW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpJywgJ3VuZGVmaW5lZCcpOworCisvLyBOb24tbnVtYmVy
IGFzIHBvc2l0aW9ucy4KK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdChudWxsKScsICc5Nycp
Oworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KHVuZGVmaW5lZCknLCAnOTcnKTsKK3Nob3Vs
ZEJlKCciYWJjIi5jb2RlUG9pbnRBdCgiIiknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2Rl
UG9pbnRBdCgiV2ViS2l0ISIpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQo
bmV3IE9iamVjdCknLCAnOTcnKTsKK3Nob3VsZFRocm93KCciYWJjIi5jb2RlUG9pbnRBdChTeW1i
b2woIldlYktpdCIpKScpOworCisvLyBUaGUgZm9sbG93aW5nIGFyZSB1c2luZyBzcGVjaWFsIHRl
c3QgZnVuY3Rpb25zIGJlY2F1c2Ugb2YgbGltaXRhdGlvbnMgb2YgV2ViS2l0VGVzdFJ1bm5lciB3
aGVuIGhhbmRsaW5nIHN0cmluZ3Mgd2l0aCBpbnZhbGlkIGNvZGVwb2ludHMuCisvLyBXaGVuIHRy
YW5zZmVyaW5nIHRoZSB0ZXh0IG9mIGEgdGVzdCwgV2ViS2l0VGVzdFJ1bm5lciBjb252ZXJ0cyBp
dCB0byBhIFVURi04IEMgU3RyaW5nLiBOb3QgYWxsIGludmFsaWQgY29kZSBwb2ludCBjYW4gYmUg
cmVwcmVzZW50ZWQuCisKKy8vIElmIGZpcnN0IDwgMHhEODAwIG9yIGZpcnN0ID4gMHhEQkZGIG9y
IHBvc2l0aW9uKzEgPSBzaXplLCByZXR1cm4gZmlyc3QuCitmdW5jdGlvbiB0ZXN0TGVhZFN1cnJv
Z2F0ZU91dE9mQm91bmRzKCkKK3sKKyAgICByZXR1cm4gKCJcdUQ3RkZcdURDMDAiLmNvZGVQb2lu
dEF0KDApID09PSAweGQ3ZmYgJiYgIlx1RDdGRlx1REMwMCIuY29kZVBvaW50QXQoMSkgPT09IDB4
ZGMwMCAmJiAiXHVEN0ZGXHVEQzAwIi5jb2RlUG9pbnRBdCgyKSA9PT0gdW5kZWZpbmVkCisgICAg
ICAgICAgICAmJiAiXHVEQzAwXHVEQzAwIi5jb2RlUG9pbnRBdCgwKSA9PT0gMHhkYzAwICYmICJc
dURDMDBcdURDMDAiLmNvZGVQb2ludEF0KDEpID09PSAweGRjMDAgJiYgIlx1REMwMFx1REMwMCIu
Y29kZVBvaW50QXQoMikgPT09IHVuZGVmaW5lZCkKK30KK3Nob3VsZEJlVHJ1ZSgidGVzdExlYWRT
dXJyb2dhdGVPdXRPZkJvdW5kcygpIik7CisKK2Z1bmN0aW9uIHRlc3RMZWFkU3Vycm9nYXRlQXNM
YXN0Q2hhcmFjdGVyKCkKK3sKKyAgICByZXR1cm4gImFiY1x1RDgwMCIuY29kZVBvaW50QXQoMykg
PT09IDB4ZDgwMDsKK30KK3Nob3VsZEJlVHJ1ZSgidGVzdExlYWRTdXJyb2dhdGVBc0xhc3RDaGFy
YWN0ZXIoKSIpOworCisvLyBJZiBzZWNvbmQgPCAweERDMDAgb3Igc2Vjb25kID4gMHhERkZGLCBy
ZXR1cm4gZmlyc3QuCitmdW5jdGlvbiB0ZXN0VHJhaWxTdXJyb2dhdGVPdXRPZmJvdW5kcygpCit7
CisgICAgcmV0dXJuICgiXHVEODAwXHVEQkZGIi5jb2RlUG9pbnRBdCgwKSA9PT0gMHhkODAwICYm
ICJcdUQ4MDBcdURCRkYiLmNvZGVQb2ludEF0KDEpID09PSAweGRiZmYgJiYgIlx1RDgwMFx1REJG
RiIuY29kZVBvaW50QXQoMikgPT09IHVuZGVmaW5lZAorICAgICAgICAgICAgJiYgIlx1RDgwMFx1
RTAwMCIuY29kZVBvaW50QXQoMCkgPT09IDB4ZDgwMCAmJiAiXHVEODAwXHVFMDAwIi5jb2RlUG9p
bnRBdCgxKSA9PT0gMHhlMDAwICYmICJcdUQ4MDBcdUUwMDAiLmNvZGVQb2ludEF0KDIpID09PSB1
bmRlZmluZWQpCit9CitzaG91bGRCZVRydWUoInRlc3RUcmFpbFN1cnJvZ2F0ZU91dE9mYm91bmRz
KCkiKTsKKworLy8gTnVsbCBpbiBhIHN0cmluZy4KK2Z1bmN0aW9uIHRlc3RBY2Nlc3NOdWxsSW5T
dHJpbmcoKQoreworICAgIHJldHVybiAiYVx1MDAwMGIiLmNvZGVQb2ludEF0KDApID09PSA5NyAm
JiAiYVx1MDAwMGIiLmNvZGVQb2ludEF0KDEpID09PSAwICYmICJhXHUwMDAwYiIuY29kZVBvaW50
QXQoMikgPT09IDk4ICYmICJhXHUwMDAwYiIuY29kZVBvaW50QXQoMykgPT09IHVuZGVmaW5lZDsK
K30KK3Nob3VsZEJlVHJ1ZSgidGVzdEFjY2Vzc051bGxJblN0cmluZygpIik7CisKKworLy8gTm9y
bWFsIGNvbWJpbmF0aW9ucyBvZiBzdXJyb2dhdGVzLgorZnVuY3Rpb24gdGVzdE5vcm1hbENvbWJp
bmF0aW9uT2ZTdXJyb2dhdGVzKCkKK3sKKyAgICByZXR1cm4gIlx1RDgwMFx1REMwMCIuY29kZVBv
aW50QXQoMCkgPT09IDY1NTM2ICYmICJcdUQ4MDBcdURDMDAiLmNvZGVQb2ludEF0KDEpID09PSA1
NjMyMCAmJiAiXHVEODAwXHVEQzAwIi5jb2RlUG9pbnRBdCgyKSA9PT0gdW5kZWZpbmVkOworfQor
c2hvdWxkQmVUcnVlKCJ0ZXN0Tm9ybWFsQ29tYmluYXRpb25PZlN1cnJvZ2F0ZXMoKSIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQtYXQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQtYXQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlmMGI0NTM3YzI3NzdhMWUzMWY5YWY3MjYzOGNhZjg1OGVjYTFlODcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1hdC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3OCBAQAorVGVzdCB0aGUgYmFzaWMgYmVoYXZpb3JzIG9mIFN0cmluZy5j
b2RlUG9pbnRBdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdHJpbmcu
Y29kZVBvaW50QXQgaXMgdW5kZWZpbmVkCitQQVNTIHR5cGVvZiBTdHJpbmcucHJvdG90eXBlLmNv
ZGVQb2ludEF0IGlzICJmdW5jdGlvbiIKK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRB
dC5sZW5ndGggaXMgMQorUEFTUyBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0Lm5hbWUgaXMg
ImNvZGVQb2ludEF0IgorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmlu
Zy5wcm90b3R5cGUsICJjb2RlUG9pbnRBdCIpLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgImNvZGVQb2lu
dEF0IikuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFN0cmluZy5wcm90b3R5cGUsICJjb2RlUG9pbnRBdCIpLndyaXRhYmxlIGlzIHRydWUK
K1BBU1MgImZvbyIuaGFzT3duUHJvcGVydHkoImNvZGVQb2ludEF0IikgaXMgZmFsc2UKK1BBU1Mg
KG5ldyBTdHJpbmcoImJhciIpKS5oYXNPd25Qcm9wZXJ0eSgiY29kZVBvaW50QXQiKSBpcyBmYWxz
ZQorUEFTUyAiIi5jb2RlUG9pbnRBdCgwKSBpcyB1bmRlZmluZWQKK1BBU1MgIiIuY29kZVBvaW50
QXQoMSkgaXMgdW5kZWZpbmVkCitQQVNTICLDiXTDqSIuY29kZVBvaW50QXQoMCkgaXMgMjAxCitQ
QVNTICLDiXTDqSIuY29kZVBvaW50QXQoMSkgaXMgMTE2CitQQVNTICLDiXTDqSIuY29kZVBvaW50
QXQoMikgaXMgMjMzCitQQVNTICLDiXTDqSIuY29kZVBvaW50QXQoMykgaXMgdW5kZWZpbmVkCitQ
QVNTICLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0KDApIGlzIDEyNDU0CitQQVNTICLj
gqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0KDEpIGlzIDEyNDU1CitQQVNTICLjgqbjgqfj
g5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0KDIpIGlzIDEyNTAyCitQQVNTICLjgqbjgqfjg5bjgq3j
g4Pjg4giLmNvZGVQb2ludEF0KDMpIGlzIDEyNDYxCitQQVNTICLjgqbjgqfjg5bjgq3jg4Pjg4gi
LmNvZGVQb2ludEF0KDQpIGlzIDEyNDgzCitQQVNTICLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQ
b2ludEF0KDUpIGlzIDEyNDg4CitQQVNTICLjgqbjgqfjg5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0
KDYpIGlzIHVuZGVmaW5lZAorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG51bGwsIDApIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICIiLmNvZGVQb2ludEF0LmNh
bGwodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgor
UEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKDAsIDApIGlzIDQ4CitQQVNTICIiLmNvZGVQb2ludEF0
LmNhbGwoTWF0aC5QSSwgMCkgaXMgNTEKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChNYXRoLlBJ
LCAxKSBpcyA0NgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKE1hdGguUEksIDMpIGlzIDUyCitQ
QVNTICIiLmNvZGVQb2ludEF0LmNhbGwodHJ1ZSwgMykgaXMgMTAxCitQQVNTICIiLmNvZGVQb2lu
dEF0LmNhbGwoZmFsc2UsIDMpIGlzIDExNQorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG5ldyBP
YmplY3QsIDMpIGlzIDEwNgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKFN5bWJvbCgiV2ViS2l0
IiksIDMpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICIiLmNv
ZGVQb2ludEF0LmNhbGwob2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nLCAwKSBpcyAyNDgKK1BBU1Mg
IiIuY29kZVBvaW50QXQuY2FsbChvYmplY3RUaHJvd2luZ09uVG9TdHJpbmcsIDApIHRocmV3IGV4
Y2VwdGlvbiBIZWhlLgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdENvdW50aW5nVG9T
dHJpbmcsIDApIGlzIDQ5CitQQVNTIG9iamVjdENvdW50aW5nVG9TdHJpbmcuY291bnRlciBpcyAx
CitQQVNTICJhYmNkZSIuY29kZVBvaW50QXQob2JqZWN0V2l0aEN1c3RvbVZhbHVlT2YpIGlzIDk4
CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwobnVsbCwgb2JqZWN0UmVjb3Jkc1ZhbHVlT2YpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICIiLmNvZGVQb2ludEF0
LmNhbGwodW5kZWZpbmVkLCBvYmplY3RSZWNvcmRzVmFsdWVPZikgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChTeW1ib2woIldl
YktpdCIpLCBvYmplY3RSZWNvcmRzVmFsdWVPZikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChvYmplY3RUaHJvd2luZ09uVG9T
dHJpbmcsIG9iamVjdFJlY29yZHNWYWx1ZU9mKSB0aHJldyBleGNlcHRpb24gSGVoZS4KK1BBU1Mg
b2JqZWN0UmVjb3Jkc1ZhbHVlT2YudmFsdWVPZkV2YWx1YXRlZCBpcyBmYWxzZQorUEFTUyAiIi5j
b2RlUG9pbnRBdC5jYWxsKGV2YWx1YXRpb25PcmRlclJlY29yZGVyLCBldmFsdWF0aW9uT3JkZXJS
ZWNvcmRlcikgaXMgMTE0CitQQVNTIGV2YWx1YXRpb25PcmRlclJlY29yZGVyLm1ldGhvZHNDYWxs
ZWQudG9TdHJpbmcoKSBpcyAidG9TdHJpbmcsdmFsdWVPZiIKK1BBU1MgImFiYyIuY29kZVBvaW50
QXQoTmFOKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgtMCkgaXMgOTcKK1BBU1MgImFi
YyIuY29kZVBvaW50QXQoLTAuMCkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoLTAuMDUp
IGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KC0wLjk5OSkgaXMgOTcKK1BBU1MgImFiYyIu
Y29kZVBvaW50QXQoMC40KSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgwLjkpIGlzIDk3
CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDIuOTk5OSkgaXMgOTkKK1BBU1MgImFiYyIuY29kZVBv
aW50QXQoLTEpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCg0KSBpcyB1bmRl
ZmluZWQKK1BBU1MgdmFyIHN0ciA9ICJhYmMiOyBzdHIuY29kZVBvaW50QXQoc3RyLmxlbmd0aCkg
aXMgdW5kZWZpbmVkCitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDQuMSkgaXMgdW5kZWZpbmVkCitQ
QVNTICJhYmMiLmNvZGVQb2ludEF0KE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgaXMgdW5kZWZp
bmVkCitQQVNTICJhYmMiLmNvZGVQb2ludEF0KE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkgaXMg
dW5kZWZpbmVkCitQQVNTICJhYmMiLmNvZGVQb2ludEF0KG51bGwpIGlzIDk3CitQQVNTICJhYmMi
LmNvZGVQb2ludEF0KHVuZGVmaW5lZCkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoIiIp
IGlzIDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KCJXZWJLaXQhIikgaXMgOTcKK1BBU1MgImFi
YyIuY29kZVBvaW50QXQobmV3IE9iamVjdCkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQo
U3ltYm9sKCJXZWJLaXQiKSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4K
K1BBU1MgdGVzdExlYWRTdXJyb2dhdGVPdXRPZkJvdW5kcygpIGlzIHRydWUKK1BBU1MgdGVzdExl
YWRTdXJyb2dhdGVBc0xhc3RDaGFyYWN0ZXIoKSBpcyB0cnVlCitQQVNTIHRlc3RUcmFpbFN1cnJv
Z2F0ZU91dE9mYm91bmRzKCkgaXMgdHJ1ZQorUEFTUyB0ZXN0QWNjZXNzTnVsbEluU3RyaW5nKCkg
aXMgdHJ1ZQorUEFTUyB0ZXN0Tm9ybWFsQ29tYmluYXRpb25PZlN1cnJvZ2F0ZXMoKSBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuaHRtbCBiL0xheW91
dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU2YTQyMjJl
YmUxMjQ2M2ZjY2E4NmZlNmVlN2IzOTE0NTYzZWM1MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251221</attachid>
            <date>2015-04-20 23:52:56 -0700</date>
            <delta_ts>2015-04-21 08:48:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143934-20150420235154.patch</filename>
            <type>text/plain</type>
            <size>21961</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
M2UyNDk1ODc5MjcwNDhjMTI2NTJjZGZlYzgyYWQzZTM3NTU1NGU0Li42Y2E5Y2ExZjBiODEzZjMz
NWM3YjU2ODMzYjcyMmIwZjJmODU4N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNC0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
U3RyaW5nLmNvZGVQb2ludEF0KCkgYXMgZGVmaW5lZCBieSBFUzYuCisgICAgICAgIEkgb3B0ZWQg
Zm9yIGEgQysrIGltcGxlbWVudGF0aW9uIGZvciBub3cuCisKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb2RlUG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KToKKwogMjAxNS0wNC0yMCAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdHlwZWQg
YXJyYXlzIHRvIHRoZSBBcnJheSBwcm9maWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDk5ZGFjMzFkNjM0ZjhkNGQxZTRh
NTliOGY1N2U3MDhkYjhkOWRkNWIuLjdkNDg4MDIyYzFmYjlkYTNkNWFlMWFlMmNkMzJkMzY2ZmNi
MjI1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcApAQCAtNTYsNiArNTYsNyBAQCBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9E
RVNUUlVDVElCTEUoU3RyaW5nUHJvdG90eXBlKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50
QXQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0NvbmNhdChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7CkBAIC0xMDgsNiAr
MTA5LDcgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTdHIKICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJ
Q19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLCBzdHJpbmdQcm90b0Z1bmNUb1N0
cmluZywgRG9udEVudW0sIDAsIFN0cmluZ1Byb3RvdHlwZVZhbHVlT2ZJbnRyaW5zaWMpOwogICAg
IEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJjaGFyQXQiLCBzdHJpbmdQcm90b0Z1bmND
aGFyQXQsIERvbnRFbnVtLCAxLCBDaGFyQXRJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OKCJjaGFyQ29kZUF0Iiwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwg
RG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oImNvZGVQb2ludEF0Iiwgc3RyaW5nUHJvdG9GdW5jQ29kZVBvaW50QXQsIERvbnRFbnVtLCAx
KTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJjb25jYXQiLCBzdHJpbmdQcm90b0Z1bmNDb25j
YXQsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJpbmRleE9mIiwgc3Ry
aW5nUHJvdG9GdW5jSW5kZXhPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oImxhc3RJbmRleE9mIiwgc3RyaW5nUHJvdG9GdW5jTGFzdEluZGV4T2YsIERvbnRFbnVtLCAx
KTsKQEAgLTgxMSw2ICs4MTMsNDIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTmFOKCkpOwogfQogCitzdGF0aWMgaW5saW5lIFVDaGFyMzIgY29kZVBvaW50
QXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKHBvc2l0aW9uIDwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQorICAgICAgICByZXR1cm4gc3RyaW5nLmNoYXJhY3RlcnM4KClbcG9zaXRpb25dOwor
ICAgIFVDaGFyMzIgY2hhcmFjdGVyOworICAgIFUxNl9ORVhUKHN0cmluZy5jaGFyYWN0ZXJzMTYo
KSwgcG9zaXRpb24sIHN0cmluZy5sZW5ndGgoKSwgY2hhcmFjdGVyKTsKKyAgICByZXR1cm4gY2hh
cmFjdGVyOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOworICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisKKyAgICBTdHJp
bmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisgICAgCisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworCisgICAgSlNWYWx1ZSBhcmd1bWVudDAgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBp
ZiAoYXJndW1lbnQwLmlzVUludDMyKCkpIHsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBh
cmd1bWVudDAuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihjb2RlUG9pbnRBdChzdHJp
bmcsIHBvc2l0aW9uKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIH0KKworICAgIGRvdWJsZSBkb3VibGVQb3NpdGlvbiA9IGFyZ3VtZW50MC50
b0ludGVnZXIoZXhlYyk7CisgICAgaWYgKGRvdWJsZVBvc2l0aW9uID49IDAgJiYgZG91YmxlUG9z
aXRpb24gPCBsZW5ndGgpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
Y29kZVBvaW50QXQoc3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZG91YmxlUG9zaXRpb24p
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDc2MjIwODc1ODVlZGNmMzFmNGE1MGE5N2Q0ODkwNzBiZjI4MDQ5M2QuLjJjNWM2ZTM4
YTFiOTgzNDM1NTc3OGE3YmYyNDVhYjMyMThiNDczMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAxNS0wNC0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgSW1wbGVtZW50IFN0cmluZy5jb2RlUG9pbnRBdCgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5MzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5h
bWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUt
cG9pbnQtYXQuanM6IEFkZGVkLgorICAgICAgICAob2JqZWN0V2l0aEN1c3RvbVRvU3RyaW5nLnRv
U3RyaW5nKToKKyAgICAgICAgKG9iamVjdFRocm93aW5nT25Ub1N0cmluZy50b1N0cmluZyk6Cisg
ICAgICAgIChvYmplY3RDb3VudGluZ1RvU3RyaW5nLnRvU3RyaW5nKToKKyAgICAgICAgKHRlc3RM
ZWFkU3Vycm9nYXRlT3V0T2ZCb3VuZHMpOgorICAgICAgICAodGVzdExlYWRTdXJyb2dhdGVBc0xh
c3RDaGFyYWN0ZXIpOgorICAgICAgICAodGVzdFRyYWlsU3Vycm9nYXRlT3V0T2Zib3VuZHMpOgor
ICAgICAgICAodGVzdEFjY2Vzc051bGxJblN0cmluZyk6CisgICAgICAgICh0ZXN0Tm9ybWFsQ29t
YmluYXRpb25PZlN1cnJvZ2F0ZXMpOgorICAgICAgICAqIGpzL3N0cmluZy1jb2RlLXBvaW50LWF0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvc3RyaW5nLWNvZGUtcG9pbnQtYXQu
aHRtbDogQWRkZWQuCisKIDIwMTUtMDQtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdU
cmFuc2Zvcm0oKSBoYXMgdG8gY291bnQgZm9yIHplcm8gcGh5c2ljYWwgd2lkdGggYW5kIGhlaWdo
dCBiZWZvcmUgY2FsbGluZyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvanMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDA3NTBjOGE0NmVjNTNhYWJiNjRhMzk2NmVkNDg2OTA1ZmY5MmU4MDguLmQ2ZjI2
YjVhNjBlZjg3ZTE1ZjM1ZjNjMDEwYTIwYWRjOTI1MGRmMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2pzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9qcy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy1leHBlY3RlZC50eHQKQEAgLTQ4
LDcgKzQ4LDcgQEAgUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3Rv
dHlwZSkgaXMgWydhcHBseScsICdiaW5kJywgJ2NhbGwnLAogUEFTUyBnZXRTb3J0ZWRPd25Qcm9w
ZXJ0eU5hbWVzKEFycmF5KSBpcyBbJ2Zyb20nLCAnaXNBcnJheScsICdsZW5ndGgnLCAnbmFtZScs
ICdvZicsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEFycmF5
LnByb3RvdHlwZSkgaXMgWydjb25jYXQnLCAnY29uc3RydWN0b3InLCAnZW50cmllcycsICdldmVy
eScsICdmaWxsJywgJ2ZpbHRlcicsICdmaW5kJywgJ2ZpbmRJbmRleCcsICdmb3JFYWNoJywgJ2lu
Y2x1ZGVzJywgJ2luZGV4T2YnLCAnam9pbicsICdrZXlzJywgJ2xhc3RJbmRleE9mJywgJ2xlbmd0
aCcsICdtYXAnLCAncG9wJywgJ3B1c2gnLCAncmVkdWNlJywgJ3JlZHVjZVJpZ2h0JywgJ3JldmVy
c2UnLCAnc2hpZnQnLCAnc2xpY2UnLCAnc29tZScsICdzb3J0JywgJ3NwbGljZScsICd0b0xvY2Fs
ZVN0cmluZycsICd0b1N0cmluZycsICd1bnNoaWZ0JywgJ3ZhbHVlcyddCiBQQVNTIGdldFNvcnRl
ZE93blByb3BlcnR5TmFtZXMoU3RyaW5nKSBpcyBbJ2Zyb21DaGFyQ29kZScsICdsZW5ndGgnLCAn
bmFtZScsICdwcm90b3R5cGUnXQotUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKFN0cmlu
Zy5wcm90b3R5cGUpIGlzIFsnYW5jaG9yJywgJ2JpZycsICdibGluaycsICdib2xkJywgJ2NoYXJB
dCcsICdjaGFyQ29kZUF0JywgJ2NvbmNhdCcsICdjb25zdHJ1Y3RvcicsICdlbmRzV2l0aCcsICdm
aXhlZCcsICdmb250Y29sb3InLCAnZm9udHNpemUnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdp
dGFsaWNzJywgJ2xhc3RJbmRleE9mJywgJ2xlbmd0aCcsICdsaW5rJywgJ2xvY2FsZUNvbXBhcmUn
LCAnbWF0Y2gnLCAncmVwZWF0JywgJ3JlcGxhY2UnLCAnc2VhcmNoJywgJ3NsaWNlJywgJ3NtYWxs
JywgJ3NwbGl0JywgJ3N0YXJ0c1dpdGgnLCAnc3RyaWtlJywgJ3N1YicsICdzdWJzdHInLCAnc3Vi
c3RyaW5nJywgJ3N1cCcsICd0b0xvY2FsZUxvd2VyQ2FzZScsICd0b0xvY2FsZVVwcGVyQ2FzZScs
ICd0b0xvd2VyQ2FzZScsICd0b1N0cmluZycsICd0b1VwcGVyQ2FzZScsICd0cmltJywgJ3RyaW1M
ZWZ0JywgJ3RyaW1SaWdodCcsICd2YWx1ZU9mJ10KK1BBU1MgZ2V0U29ydGVkT3duUHJvcGVydHlO
YW1lcyhTdHJpbmcucHJvdG90eXBlKSBpcyBbJ2FuY2hvcicsICdiaWcnLCAnYmxpbmsnLCAnYm9s
ZCcsICdjaGFyQXQnLCAnY2hhckNvZGVBdCcsICdjb2RlUG9pbnRBdCcsICdjb25jYXQnLCAnY29u
c3RydWN0b3InLCAnZW5kc1dpdGgnLCAnZml4ZWQnLCAnZm9udGNvbG9yJywgJ2ZvbnRzaXplJywg
J2luY2x1ZGVzJywgJ2luZGV4T2YnLCAnaXRhbGljcycsICdsYXN0SW5kZXhPZicsICdsZW5ndGgn
LCAnbGluaycsICdsb2NhbGVDb21wYXJlJywgJ21hdGNoJywgJ3JlcGVhdCcsICdyZXBsYWNlJywg
J3NlYXJjaCcsICdzbGljZScsICdzbWFsbCcsICdzcGxpdCcsICdzdGFydHNXaXRoJywgJ3N0cmlr
ZScsICdzdWInLCAnc3Vic3RyJywgJ3N1YnN0cmluZycsICdzdXAnLCAndG9Mb2NhbGVMb3dlckNh
c2UnLCAndG9Mb2NhbGVVcHBlckNhc2UnLCAndG9Mb3dlckNhc2UnLCAndG9TdHJpbmcnLCAndG9V
cHBlckNhc2UnLCAndHJpbScsICd0cmltTGVmdCcsICd0cmltUmlnaHQnLCAndmFsdWVPZiddCiBQ
QVNTIGdldFNvcnRlZE93blByb3BlcnR5TmFtZXMoQm9vbGVhbikgaXMgWydsZW5ndGgnLCAnbmFt
ZScsICdwcm90b3R5cGUnXQogUEFTUyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKEJvb2xlYW4u
cHJvdG90eXBlKSBpcyBbJ2NvbnN0cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXQogUEFT
UyBnZXRTb3J0ZWRPd25Qcm9wZXJ0eU5hbWVzKE51bWJlcikgaXMgWydFUFNJTE9OJywgJ01BWF9T
QUZFX0lOVEVHRVInLCAnTUFYX1ZBTFVFJywgJ01JTl9TQUZFX0lOVEVHRVInLCAnTUlOX1ZBTFVF
JywgJ05FR0FUSVZFX0lORklOSVRZJywgJ05hTicsICdQT1NJVElWRV9JTkZJTklUWScsICdpc0Zp
bml0ZScsICdpc0ludGVnZXInLCAnaXNOYU4nLCAnaXNTYWZlSW50ZWdlcicsICdsZW5ndGgnLCAn
bmFtZScsICdwYXJzZUZsb2F0JywgJ3BhcnNlSW50JywgJ3Byb3RvdHlwZSddCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFtZXMu
anMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvT2JqZWN0LWdldE93blByb3BlcnR5TmFt
ZXMuanMKaW5kZXggNTNmNmE2MTk5YTBiNGFmMTczZTg0YWQzOTc2YWZjYTc1ZTQ3MGQ4Mi4uZjMx
MTNjN2M1MWJhMTY1ZTE4MTI1ZWNhZTA4YTc5MDhjMmVlZDQwMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL09iamVjdC1nZXRPd25Qcm9wZXJ0eU5hbWVzLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9PYmplY3QtZ2V0T3duUHJvcGVydHlOYW1lcy5q
cwpAQCAtNTcsNyArNTcsNyBAQCB2YXIgZXhwZWN0ZWRQcm9wZXJ0eU5hbWVzU2V0ID0gewogICAg
ICJBcnJheSI6ICJbJ2Zyb20nLCAnaXNBcnJheScsICdsZW5ndGgnLCAnbmFtZScsICdvZicsICdw
cm90b3R5cGUnXSIsCiAgICAgIkFycmF5LnByb3RvdHlwZSI6ICJbJ2NvbmNhdCcsICdjb25zdHJ1
Y3RvcicsICdlbnRyaWVzJywgJ2V2ZXJ5JywgJ2ZpbGwnLCAnZmlsdGVyJywgJ2ZpbmQnLCAnZmlu
ZEluZGV4JywgJ2ZvckVhY2gnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdqb2luJywgJ2tleXMn
LCAnbGFzdEluZGV4T2YnLCAnbGVuZ3RoJywgJ21hcCcsICdwb3AnLCAncHVzaCcsICdyZWR1Y2Un
LCAncmVkdWNlUmlnaHQnLCAncmV2ZXJzZScsICdzaGlmdCcsICdzbGljZScsICdzb21lJywgJ3Nv
cnQnLCAnc3BsaWNlJywgJ3RvTG9jYWxlU3RyaW5nJywgJ3RvU3RyaW5nJywgJ3Vuc2hpZnQnLCAn
dmFsdWVzJ10iLAogICAgICJTdHJpbmciOiAiWydmcm9tQ2hhckNvZGUnLCAnbGVuZ3RoJywgJ25h
bWUnLCAncHJvdG90eXBlJ10iLAotICAgICJTdHJpbmcucHJvdG90eXBlIjogIlsnYW5jaG9yJywg
J2JpZycsICdibGluaycsICdib2xkJywgJ2NoYXJBdCcsICdjaGFyQ29kZUF0JywgJ2NvbmNhdCcs
ICdjb25zdHJ1Y3RvcicsICdlbmRzV2l0aCcsICdmaXhlZCcsICdmb250Y29sb3InLCAnZm9udHNp
emUnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdpdGFsaWNzJywgJ2xhc3RJbmRleE9mJywgJ2xl
bmd0aCcsICdsaW5rJywgJ2xvY2FsZUNvbXBhcmUnLCAnbWF0Y2gnLCAncmVwZWF0JywgJ3JlcGxh
Y2UnLCAnc2VhcmNoJywgJ3NsaWNlJywgJ3NtYWxsJywgJ3NwbGl0JywgJ3N0YXJ0c1dpdGgnLCAn
c3RyaWtlJywgJ3N1YicsICdzdWJzdHInLCAnc3Vic3RyaW5nJywgJ3N1cCcsICd0b0xvY2FsZUxv
d2VyQ2FzZScsICd0b0xvY2FsZVVwcGVyQ2FzZScsICd0b0xvd2VyQ2FzZScsICd0b1N0cmluZycs
ICd0b1VwcGVyQ2FzZScsICd0cmltJywgJ3RyaW1MZWZ0JywgJ3RyaW1SaWdodCcsICd2YWx1ZU9m
J10iLAorICAgICJTdHJpbmcucHJvdG90eXBlIjogIlsnYW5jaG9yJywgJ2JpZycsICdibGluaycs
ICdib2xkJywgJ2NoYXJBdCcsICdjaGFyQ29kZUF0JywgJ2NvZGVQb2ludEF0JywgJ2NvbmNhdCcs
ICdjb25zdHJ1Y3RvcicsICdlbmRzV2l0aCcsICdmaXhlZCcsICdmb250Y29sb3InLCAnZm9udHNp
emUnLCAnaW5jbHVkZXMnLCAnaW5kZXhPZicsICdpdGFsaWNzJywgJ2xhc3RJbmRleE9mJywgJ2xl
bmd0aCcsICdsaW5rJywgJ2xvY2FsZUNvbXBhcmUnLCAnbWF0Y2gnLCAncmVwZWF0JywgJ3JlcGxh
Y2UnLCAnc2VhcmNoJywgJ3NsaWNlJywgJ3NtYWxsJywgJ3NwbGl0JywgJ3N0YXJ0c1dpdGgnLCAn
c3RyaWtlJywgJ3N1YicsICdzdWJzdHInLCAnc3Vic3RyaW5nJywgJ3N1cCcsICd0b0xvY2FsZUxv
d2VyQ2FzZScsICd0b0xvY2FsZVVwcGVyQ2FzZScsICd0b0xvd2VyQ2FzZScsICd0b1N0cmluZycs
ICd0b1VwcGVyQ2FzZScsICd0cmltJywgJ3RyaW1MZWZ0JywgJ3RyaW1SaWdodCcsICd2YWx1ZU9m
J10iLAogICAgICJCb29sZWFuIjogIlsnbGVuZ3RoJywgJ25hbWUnLCAncHJvdG90eXBlJ10iLAog
ICAgICJCb29sZWFuLnByb3RvdHlwZSI6ICJbJ2NvbnN0cnVjdG9yJywgJ3RvU3RyaW5nJywgJ3Zh
bHVlT2YnXSIsCiAgICAgIk51bWJlciI6ICJbJ0VQU0lMT04nLCAnTUFYX1NBRkVfSU5URUdFUics
ICdNQVhfVkFMVUUnLCAnTUlOX1NBRkVfSU5URUdFUicsICdNSU5fVkFMVUUnLCAnTkVHQVRJVkVf
SU5GSU5JVFknLCAnTmFOJywgJ1BPU0lUSVZFX0lORklOSVRZJywgJ2lzRmluaXRlJywgJ2lzSW50
ZWdlcicsICdpc05hTicsICdpc1NhZmVJbnRlZ2VyJywgJ2xlbmd0aCcsICduYW1lJywgJ3BhcnNl
RmxvYXQnLCAncGFyc2VJbnQnLCAncHJvdG90eXBlJ10iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzIGIvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL3N0cmluZy1jb2RlLXBvaW50LWF0LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2OWUw
MTMxNWNiNmFmMmM1NGQwMWE5MTRiNWM4YjY0OTdhZGE4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWNvZGUtcG9pbnQtYXQuanMKQEAgLTAs
MCArMSwxNDMgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpYyBiZWhhdmlvcnMgb2YgU3Ry
aW5nLmNvZGVQb2ludEF0Iik7CisKK3Nob3VsZEJlKCdTdHJpbmcuY29kZVBvaW50QXQnLCAndW5k
ZWZpbmVkJyk7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIFN0cmluZy5wcm90b3R5
cGUuY29kZVBvaW50QXQnLCAnZnVuY3Rpb24nKTsKKworLy8gRnVuY3Rpb24gcHJvcGVydGllcy4K
K3Nob3VsZEJlKCdTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0Lmxlbmd0aCcsICcxJyk7Citz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ1N0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQubmFtZScs
ICdjb2RlUG9pbnRBdCcpCitzaG91bGRCZSgnT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQiKS5jb25maWd1cmFibGUnLCAndHJ1ZScp
Oworc2hvdWxkQmUoJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3Rv
dHlwZSwgImNvZGVQb2ludEF0IikuZW51bWVyYWJsZScsICdmYWxzZScpOworc2hvdWxkQmUoJ09i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoU3RyaW5nLnByb3RvdHlwZSwgImNvZGVQb2lu
dEF0Iikud3JpdGFibGUnLCAndHJ1ZScpOworCisvLyBUaGUgZnVuY3Rpb24gc2hvdWxkIG9ubHkg
YmUgb24gdGhlIHByb3RvdHlwZSBjaGFpbiwgbm90IG9uIHRoZSBvYmplY3QgdGhlbXNlbHZlcy4K
K3Nob3VsZEJlRmFsc2UoJyJmb28iLmhhc093blByb3BlcnR5KCJjb2RlUG9pbnRBdCIpJyk7Citz
aG91bGRCZUZhbHNlKCcobmV3IFN0cmluZygiYmFyIikpLmhhc093blByb3BlcnR5KCJjb2RlUG9p
bnRBdCIpJyk7CisKKy8vIFNvbWUgc2ltcGxlIGNhc2VzLgorc2hvdWxkQmUoJyIiLmNvZGVQb2lu
dEF0KDApJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0KDEpJywgJ3Vu
ZGVmaW5lZCcpOworCitzaG91bGRCZSgnIsOJdMOpIi5jb2RlUG9pbnRBdCgwKScsICcyMDEnKTsK
K3Nob3VsZEJlKCciw4l0w6kiLmNvZGVQb2ludEF0KDEpJywgJzExNicpOworc2hvdWxkQmUoJyLD
iXTDqSIuY29kZVBvaW50QXQoMiknLCAnMjMzJyk7CitzaG91bGRCZSgnIsOJdMOpIi5jb2RlUG9p
bnRBdCgzKScsICd1bmRlZmluZWQnKTsKKworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3jg4Pjg4gi
LmNvZGVQb2ludEF0KDApJywgJzEyNDU0Jyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOCreODg+OD
iCIuY29kZVBvaW50QXQoMSknLCAnMTI0NTUnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW44Kt44OD
44OIIi5jb2RlUG9pbnRBdCgyKScsICcxMjUwMicpOworc2hvdWxkQmUoJyLjgqbjgqfjg5bjgq3j
g4Pjg4giLmNvZGVQb2ludEF0KDMpJywgJzEyNDYxJyk7CitzaG91bGRCZSgnIuOCpuOCp+ODluOC
reODg+ODiCIuY29kZVBvaW50QXQoNCknLCAnMTI0ODMnKTsKK3Nob3VsZEJlKCci44Km44Kn44OW
44Kt44OD44OIIi5jb2RlUG9pbnRBdCg1KScsICcxMjQ4OCcpOworc2hvdWxkQmUoJyLjgqbjgqfj
g5bjgq3jg4Pjg4giLmNvZGVQb2ludEF0KDYpJywgJ3VuZGVmaW5lZCcpOworCisvLyBPYmplY3Qg
Y29lcmNpb24uCitzaG91bGRUaHJvdygnIiIuY29kZVBvaW50QXQuY2FsbChudWxsLCAwKScpOwor
c2hvdWxkVGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwodW5kZWZpbmVkLCAwKScpOworc2hvdWxk
QmUoJyIiLmNvZGVQb2ludEF0LmNhbGwoMCwgMCknLCAnNDgnKTsKK3Nob3VsZEJlKCciIi5jb2Rl
UG9pbnRBdC5jYWxsKE1hdGguUEksIDApJywgJzUxJyk7CitzaG91bGRCZSgnIiIuY29kZVBvaW50
QXQuY2FsbChNYXRoLlBJLCAxKScsICc0NicpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNh
bGwoTWF0aC5QSSwgMyknLCAnNTInKTsKK3Nob3VsZEJlKCciIi5jb2RlUG9pbnRBdC5jYWxsKHRy
dWUsIDMpJywgJzEwMScpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwoZmFsc2UsIDMp
JywgJzExNScpOworc2hvdWxkQmUoJyIiLmNvZGVQb2ludEF0LmNhbGwobmV3IE9iamVjdCwgMykn
LCAnMTA2Jyk7CitzaG91bGRUaHJvdygnIiIuY29kZVBvaW50QXQuY2FsbChTeW1ib2woIldlYktp
dCIpLCAzKScpOworCisvLyB0b1N0cmluZy4KK3ZhciBvYmplY3RXaXRoQ3VzdG9tVG9TdHJpbmcg
PSB7IHRvU3RyaW5nOiBmdW5jdGlvbigpIHsgcmV0dXJuICLDuCI7IH0gfTsKK3Nob3VsZEJlKCci
Ii5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdFdpdGhDdXN0b21Ub1N0cmluZywgMCknLCAnMjQ4Jyk7
CisKK3ZhciBvYmplY3RUaHJvd2luZ09uVG9TdHJpbmcgPSB7IHRvU3RyaW5nOiBmdW5jdGlvbigp
IHsgdGhyb3cgIkhlaGUiOyB9IH07CitzaG91bGRUaHJvdygnIiIuY29kZVBvaW50QXQuY2FsbChv
YmplY3RUaHJvd2luZ09uVG9TdHJpbmcsIDApJyk7CisKK3ZhciBvYmplY3RDb3VudGluZ1RvU3Ry
aW5nID0geyBjb3VudGVyOiAwLCB0b1N0cmluZzogZnVuY3Rpb24oKSB7ICsrdGhpcy5jb3VudGVy
OyByZXR1cm4gdGhpcy5jb3VudGVyOyB9IH07CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2Fs
bChvYmplY3RDb3VudGluZ1RvU3RyaW5nLCAwKScsICc0OScpOworc2hvdWxkQmUoJ29iamVjdENv
dW50aW5nVG9TdHJpbmcuY291bnRlcicsICcxJyk7CisKKy8vIFRvTnVtYmVyLgordmFyIG9iamVj
dFdpdGhDdXN0b21WYWx1ZU9mID0geyB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHJldHVybiAiNSI7
IH0sIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfSB9Oworc2hvdWxkQmUoJyJhYmNk
ZSIuY29kZVBvaW50QXQob2JqZWN0V2l0aEN1c3RvbVZhbHVlT2YpJywgJzk4Jyk7CisKKy8vIFRo
ZSBzZWNvbmQgb2JqZWN0IGlzIG5ldmVyIGNvbnZlcnRlZCB0byBudW1iZXIgaWYgdGhlIGZpcnN0
IG9iamVjdCBkaWQgbm90IGNvbnZlcnQgdG8gc3RyaW5nLgordmFyIG9iamVjdFJlY29yZHNWYWx1
ZU9mID0geyB2YWx1ZU9mRXZhbHVhdGVkOiBmYWxzZSwgdmFsdWVPZjogZnVuY3Rpb24oKSB7IHRo
aXMudmFsdWVPZkV2YWx1YXRlZCA9IHRydWU7IHJldHVybiAxOyB9IH0KK3Nob3VsZFRocm93KCci
Ii5jb2RlUG9pbnRBdC5jYWxsKG51bGwsIG9iamVjdFJlY29yZHNWYWx1ZU9mKScpOworc2hvdWxk
VGhyb3coJyIiLmNvZGVQb2ludEF0LmNhbGwodW5kZWZpbmVkLCBvYmplY3RSZWNvcmRzVmFsdWVP
ZiknKTsKK3Nob3VsZFRocm93KCciIi5jb2RlUG9pbnRBdC5jYWxsKFN5bWJvbCgiV2ViS2l0Iiks
IG9iamVjdFJlY29yZHNWYWx1ZU9mKScpOworc2hvdWxkVGhyb3coJyIiLmNvZGVQb2ludEF0LmNh
bGwob2JqZWN0VGhyb3dpbmdPblRvU3RyaW5nLCBvYmplY3RSZWNvcmRzVmFsdWVPZiknKTsKK3No
b3VsZEJlRmFsc2UoJ29iamVjdFJlY29yZHNWYWx1ZU9mLnZhbHVlT2ZFdmFsdWF0ZWQnKTsKKwor
Ly8gRXZhbHVhdGlvbiBvcmRlci4KK3ZhciBldmFsdWF0aW9uT3JkZXJSZWNvcmRlciA9IHsKKyAg
ICBtZXRob2RzQ2FsbGVkOiBbXSwKKyAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7IHRoaXMubWV0
aG9kc0NhbGxlZC5wdXNoKCJ0b1N0cmluZyIpOyByZXR1cm4gImZvb2JhciI7IH0sCisgICAgdmFs
dWVPZjogZnVuY3Rpb24oKSB7IHRoaXMubWV0aG9kc0NhbGxlZC5wdXNoKCJ2YWx1ZU9mIik7IHJl
dHVybiA1OyB9Cit9CitzaG91bGRCZSgnIiIuY29kZVBvaW50QXQuY2FsbChldmFsdWF0aW9uT3Jk
ZXJSZWNvcmRlciwgZXZhbHVhdGlvbk9yZGVyUmVjb3JkZXIpJywgJzExNCcpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmFsdWF0aW9uT3JkZXJSZWNvcmRlci5tZXRob2RzQ2FsbGVkLnRvU3Ry
aW5nKCknLCAndG9TdHJpbmcsdmFsdWVPZicpOworCisvLyBXZWlyZCBwb3NpdGlvbnMuCitzaG91
bGRCZSgnImFiYyIuY29kZVBvaW50QXQoTmFOKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNv
ZGVQb2ludEF0KC0wKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KC0wLjAp
JywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTAuMDUpJywgJzk3Jyk7Citz
aG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoLTAuOTk5KScsICc5NycpOworc2hvdWxkQmUoJyJh
YmMiLmNvZGVQb2ludEF0KDAuNCknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRB
dCgwLjkpJywgJzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoMi45OTk5KScsICc5
OScpOworCisvLyBPdXQgb2YgYm91bmQgcG9zaXRpb25zLgorc2hvdWxkQmUoJyJhYmMiLmNvZGVQ
b2ludEF0KC0xKScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCg0
KScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCd2YXIgc3RyID0gImFiYyI7IHN0ci5jb2RlUG9p
bnRBdChzdHIubGVuZ3RoKScsICd1bmRlZmluZWQnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9p
bnRBdCg0LjEpJywgJ3VuZGVmaW5lZCcpOworc2hvdWxkQmUoJyJhYmMiLmNvZGVQb2ludEF0KE51
bWJlci5QT1NJVElWRV9JTkZJTklUWSknLCAndW5kZWZpbmVkJyk7CitzaG91bGRCZSgnImFiYyIu
Y29kZVBvaW50QXQoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKScsICd1bmRlZmluZWQnKTsKKwor
Ly8gTm9uLW51bWJlciBhcyBwb3NpdGlvbnMuCitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQo
bnVsbCknLCAnOTcnKTsKK3Nob3VsZEJlKCciYWJjIi5jb2RlUG9pbnRBdCh1bmRlZmluZWQpJywg
Jzk3Jyk7CitzaG91bGRCZSgnImFiYyIuY29kZVBvaW50QXQoIiIpJywgJzk3Jyk7CitzaG91bGRC
ZSgnImFiYyIuY29kZVBvaW50QXQoIldlYktpdCEiKScsICc5NycpOworc2hvdWxkQmUoJyJhYmMi
LmNvZGVQb2ludEF0KG5ldyBPYmplY3QpJywgJzk3Jyk7CitzaG91bGRUaHJvdygnImFiYyIuY29k
ZVBvaW50QXQoU3ltYm9sKCJXZWJLaXQiKSknKTsKKworLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNp
bmcgc3BlY2lhbCB0ZXN0IGZ1bmN0aW9ucyBiZWNhdXNlIG9mIGxpbWl0YXRpb25zIG9mIFdlYktp
dFRlc3RSdW5uZXIgd2hlbiBoYW5kbGluZyBzdHJpbmdzIHdpdGggaW52YWxpZCBjb2RlcG9pbnRz
LgorLy8gV2hlbiB0cmFuc2ZlcmluZyB0aGUgdGV4dCBvZiBhIHRlc3QsIFdlYktpdFRlc3RSdW5u
ZXIgY29udmVydHMgaXQgdG8gYSBVVEYtOCBDIFN0cmluZy4gTm90IGFsbCBpbnZhbGlkIGNvZGUg
cG9pbnQgY2FuIGJlIHJlcHJlc2VudGVkLgorCisvLyBJZiBmaXJzdCA8IDB4RDgwMCBvciBmaXJz
dCA+IDB4REJGRiBvciBwb3NpdGlvbisxID0gc2l6ZSwgcmV0dXJuIGZpcnN0LgorZnVuY3Rpb24g
dGVzdExlYWRTdXJyb2dhdGVPdXRPZkJvdW5kcygpCit7CisgICAgcmV0dXJuICgiXHVEN0ZGXHVE
QzAwIi5jb2RlUG9pbnRBdCgwKSA9PT0gMHhkN2ZmICYmICJcdUQ3RkZcdURDMDAiLmNvZGVQb2lu
dEF0KDEpID09PSAweGRjMDAgJiYgIlx1RDdGRlx1REMwMCIuY29kZVBvaW50QXQoMikgPT09IHVu
ZGVmaW5lZAorICAgICAgICAgICAgJiYgIlx1REMwMFx1REMwMCIuY29kZVBvaW50QXQoMCkgPT09
IDB4ZGMwMCAmJiAiXHVEQzAwXHVEQzAwIi5jb2RlUG9pbnRBdCgxKSA9PT0gMHhkYzAwICYmICJc
dURDMDBcdURDMDAiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQpCit9CitzaG91bGRCZVRy
dWUoInRlc3RMZWFkU3Vycm9nYXRlT3V0T2ZCb3VuZHMoKSIpOworCitmdW5jdGlvbiB0ZXN0TGVh
ZFN1cnJvZ2F0ZUFzTGFzdENoYXJhY3RlcigpCit7CisgICAgcmV0dXJuICJhYmNcdUQ4MDAiLmNv
ZGVQb2ludEF0KDMpID09PSAweGQ4MDA7Cit9CitzaG91bGRCZVRydWUoInRlc3RMZWFkU3Vycm9n
YXRlQXNMYXN0Q2hhcmFjdGVyKCkiKTsKKworLy8gSWYgc2Vjb25kIDwgMHhEQzAwIG9yIHNlY29u
ZCA+IDB4REZGRiwgcmV0dXJuIGZpcnN0LgorZnVuY3Rpb24gdGVzdFRyYWlsU3Vycm9nYXRlT3V0
T2Zib3VuZHMoKQoreworICAgIHJldHVybiAoIlx1RDgwMFx1REJGRiIuY29kZVBvaW50QXQoMCkg
PT09IDB4ZDgwMCAmJiAiXHVEODAwXHVEQkZGIi5jb2RlUG9pbnRBdCgxKSA9PT0gMHhkYmZmICYm
ICJcdUQ4MDBcdURCRkYiLmNvZGVQb2ludEF0KDIpID09PSB1bmRlZmluZWQKKyAgICAgICAgICAg
ICYmICJcdUQ4MDBcdUUwMDAiLmNvZGVQb2ludEF0KDApID09PSAweGQ4MDAgJiYgIlx1RDgwMFx1
RTAwMCIuY29kZVBvaW50QXQoMSkgPT09IDB4ZTAwMCAmJiAiXHVEODAwXHVFMDAwIi5jb2RlUG9p
bnRBdCgyKSA9PT0gdW5kZWZpbmVkKQorfQorc2hvdWxkQmVUcnVlKCJ0ZXN0VHJhaWxTdXJyb2dh
dGVPdXRPZmJvdW5kcygpIik7CisKKy8vIE51bGwgaW4gYSBzdHJpbmcuCitmdW5jdGlvbiB0ZXN0
QWNjZXNzTnVsbEluU3RyaW5nKCkKK3sKKyAgICByZXR1cm4gImFcdTAwMDBiIi5jb2RlUG9pbnRB
dCgwKSA9PT0gOTcgJiYgImFcdTAwMDBiIi5jb2RlUG9pbnRBdCgxKSA9PT0gMCAmJiAiYVx1MDAw
MGIiLmNvZGVQb2ludEF0KDIpID09PSA5OCAmJiAiYVx1MDAwMGIiLmNvZGVQb2ludEF0KDMpID09
PSB1bmRlZmluZWQ7Cit9CitzaG91bGRCZVRydWUoInRlc3RBY2Nlc3NOdWxsSW5TdHJpbmcoKSIp
OworCisKKy8vIE5vcm1hbCBjb21iaW5hdGlvbnMgb2Ygc3Vycm9nYXRlcy4KK2Z1bmN0aW9uIHRl
c3ROb3JtYWxDb21iaW5hdGlvbk9mU3Vycm9nYXRlcygpCit7CisgICAgcmV0dXJuICJcdUQ4MDBc
dURDMDAiLmNvZGVQb2ludEF0KDApID09PSA2NTUzNiAmJiAiXHVEODAwXHVEQzAwIi5jb2RlUG9p
bnRBdCgxKSA9PT0gNTYzMjAgJiYgIlx1RDgwMFx1REMwMCIuY29kZVBvaW50QXQoMikgPT09IHVu
ZGVmaW5lZDsKK30KK3Nob3VsZEJlVHJ1ZSgidGVzdE5vcm1hbENvbWJpbmF0aW9uT2ZTdXJyb2dh
dGVzKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ZjBiNDUzN2MyNzc3YTFlMzFmOWFmNzI2MzhjYWY4NThlY2Ex
ZTg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc3RyaW5nLWNvZGUtcG9pbnQt
YXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNzggQEAKK1Rlc3QgdGhlIGJhc2ljIGJlaGF2aW9y
cyBvZiBTdHJpbmcuY29kZVBvaW50QXQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgU3RyaW5nLmNvZGVQb2ludEF0IGlzIHVuZGVmaW5lZAorUEFTUyB0eXBlb2YgU3RyaW5n
LnByb3RvdHlwZS5jb2RlUG9pbnRBdCBpcyAiZnVuY3Rpb24iCitQQVNTIFN0cmluZy5wcm90b3R5
cGUuY29kZVBvaW50QXQubGVuZ3RoIGlzIDEKK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9p
bnRBdC5uYW1lIGlzICJjb2RlUG9pbnRBdCIKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQiKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFN0cmluZy5wcm90b3R5
cGUsICJjb2RlUG9pbnRBdCIpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAiY29kZVBvaW50QXQiKS53cml0
YWJsZSBpcyB0cnVlCitQQVNTICJmb28iLmhhc093blByb3BlcnR5KCJjb2RlUG9pbnRBdCIpIGlz
IGZhbHNlCitQQVNTIChuZXcgU3RyaW5nKCJiYXIiKSkuaGFzT3duUHJvcGVydHkoImNvZGVQb2lu
dEF0IikgaXMgZmFsc2UKK1BBU1MgIiIuY29kZVBvaW50QXQoMCkgaXMgdW5kZWZpbmVkCitQQVNT
ICIiLmNvZGVQb2ludEF0KDEpIGlzIHVuZGVmaW5lZAorUEFTUyAiw4l0w6kiLmNvZGVQb2ludEF0
KDApIGlzIDIwMQorUEFTUyAiw4l0w6kiLmNvZGVQb2ludEF0KDEpIGlzIDExNgorUEFTUyAiw4l0
w6kiLmNvZGVQb2ludEF0KDIpIGlzIDIzMworUEFTUyAiw4l0w6kiLmNvZGVQb2ludEF0KDMpIGlz
IHVuZGVmaW5lZAorUEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgwKSBpcyAx
MjQ1NAorUEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgxKSBpcyAxMjQ1NQor
UEFTUyAi44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgyKSBpcyAxMjUwMgorUEFTUyAi
44Km44Kn44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCgzKSBpcyAxMjQ2MQorUEFTUyAi44Km44Kn
44OW44Kt44OD44OIIi5jb2RlUG9pbnRBdCg0KSBpcyAxMjQ4MworUEFTUyAi44Km44Kn44OW44Kt
44OD44OIIi5jb2RlUG9pbnRBdCg1KSBpcyAxMjQ4OAorUEFTUyAi44Km44Kn44OW44Kt44OD44OI
Ii5jb2RlUG9pbnRBdCg2KSBpcyB1bmRlZmluZWQKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChu
dWxsLCAwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAiIi5j
b2RlUG9pbnRBdC5jYWxsKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbCgwLCAwKSBpcyA0OAorUEFTUyAi
Ii5jb2RlUG9pbnRBdC5jYWxsKE1hdGguUEksIDApIGlzIDUxCitQQVNTICIiLmNvZGVQb2ludEF0
LmNhbGwoTWF0aC5QSSwgMSkgaXMgNDYKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChNYXRoLlBJ
LCAzKSBpcyA1MgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKHRydWUsIDMpIGlzIDEwMQorUEFT
UyAiIi5jb2RlUG9pbnRBdC5jYWxsKGZhbHNlLCAzKSBpcyAxMTUKK1BBU1MgIiIuY29kZVBvaW50
QXQuY2FsbChuZXcgT2JqZWN0LCAzKSBpcyAxMDYKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChT
eW1ib2woIldlYktpdCIpLCAzKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG9iamVjdFdpdGhDdXN0b21Ub1N0cmluZywgMCkg
aXMgMjQ4CitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0VGhyb3dpbmdPblRvU3RyaW5n
LCAwKSB0aHJldyBleGNlcHRpb24gSGVoZS4KK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChvYmpl
Y3RDb3VudGluZ1RvU3RyaW5nLCAwKSBpcyA0OQorUEFTUyBvYmplY3RDb3VudGluZ1RvU3RyaW5n
LmNvdW50ZXIgaXMgMQorUEFTUyAiYWJjZGUiLmNvZGVQb2ludEF0KG9iamVjdFdpdGhDdXN0b21W
YWx1ZU9mKSBpcyA5OAorUEFTUyAiIi5jb2RlUG9pbnRBdC5jYWxsKG51bGwsIG9iamVjdFJlY29y
ZHNWYWx1ZU9mKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAi
Ii5jb2RlUG9pbnRBdC5jYWxsKHVuZGVmaW5lZCwgb2JqZWN0UmVjb3Jkc1ZhbHVlT2YpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICIiLmNvZGVQb2ludEF0LmNh
bGwoU3ltYm9sKCJXZWJLaXQiKSwgb2JqZWN0UmVjb3Jkc1ZhbHVlT2YpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICIiLmNvZGVQb2ludEF0LmNhbGwob2JqZWN0
VGhyb3dpbmdPblRvU3RyaW5nLCBvYmplY3RSZWNvcmRzVmFsdWVPZikgdGhyZXcgZXhjZXB0aW9u
IEhlaGUuCitQQVNTIG9iamVjdFJlY29yZHNWYWx1ZU9mLnZhbHVlT2ZFdmFsdWF0ZWQgaXMgZmFs
c2UKK1BBU1MgIiIuY29kZVBvaW50QXQuY2FsbChldmFsdWF0aW9uT3JkZXJSZWNvcmRlciwgZXZh
bHVhdGlvbk9yZGVyUmVjb3JkZXIpIGlzIDExNAorUEFTUyBldmFsdWF0aW9uT3JkZXJSZWNvcmRl
ci5tZXRob2RzQ2FsbGVkLnRvU3RyaW5nKCkgaXMgInRvU3RyaW5nLHZhbHVlT2YiCitQQVNTICJh
YmMiLmNvZGVQb2ludEF0KE5hTikgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50QXQoLTApIGlz
IDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KC0wLjApIGlzIDk3CitQQVNTICJhYmMiLmNvZGVQ
b2ludEF0KC0wLjA1KSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgtMC45OTkpIGlzIDk3
CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KDAuNCkgaXMgOTcKK1BBU1MgImFiYyIuY29kZVBvaW50
QXQoMC45KSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgyLjk5OTkpIGlzIDk5CitQQVNT
ICJhYmMiLmNvZGVQb2ludEF0KC0xKSBpcyB1bmRlZmluZWQKK1BBU1MgImFiYyIuY29kZVBvaW50
QXQoNCkgaXMgdW5kZWZpbmVkCitQQVNTIHZhciBzdHIgPSAiYWJjIjsgc3RyLmNvZGVQb2ludEF0
KHN0ci5sZW5ndGgpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCg0LjEpIGlz
IHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChOdW1iZXIuUE9TSVRJVkVfSU5GSU5J
VFkpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChOdW1iZXIuTkVHQVRJVkVf
SU5GSU5JVFkpIGlzIHVuZGVmaW5lZAorUEFTUyAiYWJjIi5jb2RlUG9pbnRBdChudWxsKSBpcyA5
NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCh1bmRlZmluZWQpIGlzIDk3CitQQVNTICJhYmMiLmNv
ZGVQb2ludEF0KCIiKSBpcyA5NworUEFTUyAiYWJjIi5jb2RlUG9pbnRBdCgiV2ViS2l0ISIpIGlz
IDk3CitQQVNTICJhYmMiLmNvZGVQb2ludEF0KG5ldyBPYmplY3QpIGlzIDk3CitQQVNTICJhYmMi
LmNvZGVQb2ludEF0KFN5bWJvbCgiV2ViS2l0IikpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IFR5cGUgZXJyb3IuCitQQVNTIHRlc3RMZWFkU3Vycm9nYXRlT3V0T2ZCb3VuZHMoKSBpcyB0cnVl
CitQQVNTIHRlc3RMZWFkU3Vycm9nYXRlQXNMYXN0Q2hhcmFjdGVyKCkgaXMgdHJ1ZQorUEFTUyB0
ZXN0VHJhaWxTdXJyb2dhdGVPdXRPZmJvdW5kcygpIGlzIHRydWUKK1BBU1MgdGVzdEFjY2Vzc051
bGxJblN0cmluZygpIGlzIHRydWUKK1BBU1MgdGVzdE5vcm1hbENvbWJpbmF0aW9uT2ZTdXJyb2dh
dGVzKCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3N0cmluZy1jb2RlLXBvaW50LWF0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1hdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc1NmE0MjIyZWJlMTI0NjNmY2NhODZmZTZlZTdiMzkxNDU2M2VjNTIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9zdHJpbmctY29kZS1wb2ludC1hdC5odG1sCkBAIC0wLDAg
KzEsMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctY29kZS1wb2ludC1hdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="276019"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>