<?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>163930</bug_id>
          
          <creation_ts>2016-10-24 17:45:05 -0700</creation_ts>
          <short_desc>[JSC] forbid lexical redeclaration of generator formal parameters</short_desc>
          <delta_ts>2016-10-28 01:43:19 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1243993</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-24 17:45:05 -0700</bug_when>
    <thetext>[JSC] forbid lexical redeclaration of generator formal parameters</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243994</commentid>
    <comment_count>1</comment_count>
      <attachid>292686</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-24 17:46:05 -0700</bug_when>
    <thetext>Created attachment 292686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243999</commentid>
    <comment_count>2</comment_count>
      <attachid>292687</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-24 17:49:55 -0700</bug_when>
    <thetext>Created attachment 292687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244006</commentid>
    <comment_count>3</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-24 18:02:46 -0700</bug_when>
    <thetext>couple of test262 failures (for both generators and async functions) fixed here, and some new tests added for previously untested things that were actually working correctly. Good to have coverage :&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244909</commentid>
    <comment_count>4</comment_count>
      <attachid>292963</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 14:47:07 -0700</bug_when>
    <thetext>Created attachment 292963
Patch

Add comments describing why things are done in isValidStrictMode() and hasDeclaredParameter()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244915</commentid>
    <comment_count>5</comment_count>
      <attachid>292963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 15:14:50 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Also forbids &quot;arguments&quot; and &quot;eval&quot; as generator argument names in strict mode.

Nice!

&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);

This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
So we never call this function during reparsing. It returns the incorrect result.

It is better to rename this function to the other name that represents this function is not valid during the reparsing.

&gt; Source/JavaScriptCore/parser/Parser.h:1403
&gt; +    }

I think this name is also misleading. Can you rename it like, `isValidStatusForStrictMode()`? (And changing m_validStrictMode to the renamed one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244923</commentid>
    <comment_count>6</comment_count>
      <attachid>292963</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 15:29:19 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);
&gt; 
&gt; This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
&gt; But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
&gt; So we never call this function during reparsing. It returns the incorrect result.
&gt; 
&gt; It is better to rename this function to the other name that represents this function is not valid during the reparsing.

From local testing, during reparsing, there is no outer scope object (which is why it checks if `i` is non-zero). Otherwise there is an OOB problem.

I could add an assertion that the outer scope is an async function wrapper or generator function wrapper and see if it still passes everything, I guess, but it seems that there is no global scope when reparsing closures.

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1403
&gt;&gt; +    }
&gt; 
&gt; I think this name is also misleading. Can you rename it like, `isValidStatusForStrictMode()`? (And changing m_validStrictMode to the renamed one).

&quot;isValidStrictMode&quot; seems ok to me, I read it answering the question &quot;does this pass strict mode static restrictions?&quot;. Maybe Saam has an opinion?

I&apos;ll do it if folks prefer that, but it&apos;s sort of outside of the scope of what this patch is meant to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244924</commentid>
    <comment_count>7</comment_count>
      <attachid>292963</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 15:32:03 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt;&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);
&gt;&gt; 
&gt;&gt; This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
&gt;&gt; But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
&gt;&gt; So we never call this function during reparsing. It returns the incorrect result.
&gt;&gt; 
&gt;&gt; It is better to rename this function to the other name that represents this function is not valid during the reparsing.
&gt; 
&gt; From local testing, during reparsing, there is no outer scope object (which is why it checks if `i` is non-zero). Otherwise there is an OOB problem.
&gt; 
&gt; I could add an assertion that the outer scope is an async function wrapper or generator function wrapper and see if it still passes everything, I guess, but it seems that there is no global scope when reparsing closures.

Also note, even if it is the global scope during reparsing, it doesn&apos;t matter, because `valid-strict-mode-ness` doesn&apos;t matter during reparsing (if it&apos;s invalid during strict mode, it should be a SyntaxError and never get re-parsed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244941</commentid>
    <comment_count>8</comment_count>
      <attachid>292963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 16:13:03 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt;&gt;&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);
&gt;&gt;&gt; 
&gt;&gt;&gt; This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
&gt;&gt;&gt; But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
&gt;&gt;&gt; So we never call this function during reparsing. It returns the incorrect result.
&gt;&gt;&gt; 
&gt;&gt;&gt; It is better to rename this function to the other name that represents this function is not valid during the reparsing.
&gt;&gt; 
&gt;&gt; From local testing, during reparsing, there is no outer scope object (which is why it checks if `i` is non-zero). Otherwise there is an OOB problem.
&gt;&gt; 
&gt;&gt; I could add an assertion that the outer scope is an async function wrapper or generator function wrapper and see if it still passes everything, I guess, but it seems that there is no global scope when reparsing closures.
&gt; 
&gt; Also note, even if it is the global scope during reparsing, it doesn&apos;t matter, because `valid-strict-mode-ness` doesn&apos;t matter during reparsing (if it&apos;s invalid during strict mode, it should be a SyntaxError and never get re-parsed).

Oops, I was considering about generator wrapper function case.

Yeah, but if you call `hasDeclaredParameter(...)` in the reparsing phase for the other purpose, we have a bad time (this function returns the incorrect answer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244949</commentid>
    <comment_count>9</comment_count>
      <attachid>292963</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 16:28:13 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt;&gt;&gt;&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
&gt;&gt;&gt;&gt; But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
&gt;&gt;&gt;&gt; So we never call this function during reparsing. It returns the incorrect result.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; It is better to rename this function to the other name that represents this function is not valid during the reparsing.
&gt;&gt;&gt; 
&gt;&gt;&gt; From local testing, during reparsing, there is no outer scope object (which is why it checks if `i` is non-zero). Otherwise there is an OOB problem.
&gt;&gt;&gt; 
&gt;&gt;&gt; I could add an assertion that the outer scope is an async function wrapper or generator function wrapper and see if it still passes everything, I guess, but it seems that there is no global scope when reparsing closures.
&gt;&gt; 
&gt;&gt; Also note, even if it is the global scope during reparsing, it doesn&apos;t matter, because `valid-strict-mode-ness` doesn&apos;t matter during reparsing (if it&apos;s invalid during strict mode, it should be a SyntaxError and never get re-parsed).
&gt; 
&gt; Oops, I was considering about generator wrapper function case.
&gt; 
&gt; Yeah, but if you call `hasDeclaredParameter(...)` in the reparsing phase for the other purpose, we have a bad time (this function returns the incorrect answer).

Would you prefer a `gif (not a wrapper function) return false;` after decrementing i?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244971</commentid>
    <comment_count>10</comment_count>
      <attachid>292963</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 17:17:10 -0700</bug_when>
    <thetext>Comment on attachment 292963
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt;&gt;&gt;&gt;&gt;          return m_scopeStack[i].hasDeclaredParameter(ident);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; This `hasDeclaredParameter` function is dangerous I think. When performing the syntax checking onto the code, it is OK.
&gt;&gt;&gt;&gt;&gt; But when actually parsing the generator body function to create the AST, the scope in this line(m_scopeStack[i]) becomes the global scope, right?
&gt;&gt;&gt;&gt;&gt; So we never call this function during reparsing. It returns the incorrect result.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; It is better to rename this function to the other name that represents this function is not valid during the reparsing.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; From local testing, during reparsing, there is no outer scope object (which is why it checks if `i` is non-zero). Otherwise there is an OOB problem.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I could add an assertion that the outer scope is an async function wrapper or generator function wrapper and see if it still passes everything, I guess, but it seems that there is no global scope when reparsing closures.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also note, even if it is the global scope during reparsing, it doesn&apos;t matter, because `valid-strict-mode-ness` doesn&apos;t matter during reparsing (if it&apos;s invalid during strict mode, it should be a SyntaxError and never get re-parsed).
&gt;&gt; 
&gt;&gt; Oops, I was considering about generator wrapper function case.
&gt;&gt; 
&gt;&gt; Yeah, but if you call `hasDeclaredParameter(...)` in the reparsing phase for the other purpose, we have a bad time (this function returns the incorrect answer).
&gt; 
&gt; Would you prefer a `gif (not a wrapper function) return false;` after decrementing i?

Since this function (Parser::hasDeclaredParameter) is only used for this error checking purpose currently, I suggest renaming this function to avoid incorrect use and inserting assertion for isReparsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244989</commentid>
    <comment_count>11</comment_count>
      <attachid>292982</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 18:07:35 -0700</bug_when>
    <thetext>Created attachment 292982
Patch

Rename Parser::hasDeclaredParameter() and Parser::hasDeclaredVariable(), don&apos;t call Parser::hasDeclaredParameter() when reparsing, and assert that not reparsing when it is called</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245309</commentid>
    <comment_count>12</comment_count>
      <attachid>293070</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-27 15:41:19 -0700</bug_when>
    <thetext>Created attachment 293070
Patch

Updated per offline discussions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245312</commentid>
    <comment_count>13</comment_count>
      <attachid>293070</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 15:43:32 -0700</bug_when>
    <thetext>Comment on attachment 293070
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245326</commentid>
    <comment_count>14</comment_count>
      <attachid>293070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 16:23:28 -0700</bug_when>
    <thetext>Comment on attachment 293070
Patch

Clearing flags on attachment: 293070

Committed r208016: &lt;http://trac.webkit.org/changeset/208016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245327</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-27 16:23:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245488</commentid>
    <comment_count>16</comment_count>
      <attachid>293070</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-28 01:43:19 -0700</bug_when>
    <thetext>Comment on attachment 293070
Patch

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

Bugs like these make me think that it&apos;s a bit ineligant that our parser so closely understands the implementation details of generator functions. In some ways, it&apos;d be nicer if the parser didn&apos;t know that we lower generators to an outer and an inner function. It could just be worried with parsing generators at a higher level, and we could take the parser&apos;s output and generate the outer and the inner function at a later stage. I&apos;m not sure if it&apos;s worth doing anything like this now, but the current design makes it harder to reason about properly &quot;syntax checking&quot; generator programs.

&gt; Source/JavaScriptCore/parser/Parser.h:1400
&gt; +        int i = m_scopeStack.size() - 1;

Nit: I&apos;d use size_t here and ASSERT that scopeStack is non-empty</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292686</attachid>
            <date>2016-10-24 17:46:05 -0700</date>
            <delta_ts>2016-10-24 17:47:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163930-20161024204219.patch</filename>
            <type>text/plain</type>
            <size>7733</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OGIxNDI2NTRiYjc1ZTYzNTBlZjU5YTE1MDIzNzhhZWYyYmNkOTAxLi44YjI1NTM1YzFjMGQ0OWRh
MzM4ZDczMGMzMjA0ZmRhNTljYWJmOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0yNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJh
dG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbHNvIGZvcmJpZHMgImFyZ3VtZW50cyIgYW5kICJldmFsIiBhcyBnZW5l
cmF0b3IgYXJndW1lbnQgbmFtZXMgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aGFzRGVjbGFyZWRQYXJhbWV0ZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmlzVmFsaWRTdHJpY3RNb2RlKToKKwogMjAxNi0xMC0yMSAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRyeUdldEJ5SWQgbmVlZHMgdG8gcGFzcyBpbiBOZWVkc1RvU3BpbGwgYWxvbmcg
Ym90aCB0aGUgY2VsbCBzcGVjdWxhdGlvbiBhbmQgdW50eXBlZCBzcGVjdWxhdGlvbiBwYXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA4YzQ0NzRiMDk5MzM3MmU3NDI0
NjAxZGI5YWEwNjQ0NWRmOTM3ZWQ4Li41Y2RhMDNhNmJiNWQ5YWU2Y2RjNTNmZGFlZWExYWFjNjFh
NDAyOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEyMjgsNiAr
MTIyOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgQVNTRVJU
KGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICgobV9z
Y29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNB
c3luY0Z1bmN0aW9uQm91bmRhcnkoKSkgJiYgaSkgeworICAgICAgICAgICAgaS0tOworICAgICAg
ICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbV9zY29wZVN0YWNrW2ldLmhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50KTsKICAg
ICB9CiAgICAgCkBAIC0xMzgyLDcgKzEzODcsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuZFN3
aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CiAgICAgdm9pZCBzZXRTdHJp
Y3RNb2RlKCkgeyBjdXJyZW50U2NvcGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBz
dHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQotICAg
IGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+aXNWYWxp
ZFN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKQorICAgIHsKKyAg
ICAgICAgaW50IGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgaWYgKCFtX3Nj
b3BlU3RhY2tbaV0uaXNWYWxpZFN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGkgJiYgKG1fc2NvcGVTdGFja1tpXS5pc0dlbmVyYXRv
ckJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkp
KSkKKyAgICAgICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2tbaSAtIDFdLmlzVmFsaWRTdHJpY3RN
b2RlKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICBEZWNsYXJhdGlvblJlc3Vs
dE1hc2sgZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkgeyByZXR1cm4g
Y3VycmVudFNjb3BlKCktPmRlY2xhcmVQYXJhbWV0ZXIoaWRlbnQpOyB9CiAgICAgYm9vbCBkZWNs
YXJlUmVzdE9yTm9ybWFsUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlm
aWVyKiopOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDhhOWE4OWQ4NGY0ZjcwMDM3MmExYzI1MTM4ZjVhYmE1ZTBhY2FkMzIuLmQ0NTVj
ZWZmNTc3MWFiMDgyNzEwMzAzNWM3MmViMDg1ZWM1YWYwYWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYt
MTAtMjQgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlND
XSBmb3JiaWQgbGV4aWNhbCByZWRlY2xhcmF0aW9uIG9mIGdlbmVyYXRvciBmb3JtYWwgcGFyYW1l
dGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYz
OTMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
dHJlc3MvYXN5bmMtYXdhaXQtc3ludGF4LmpzOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
c3ludGF4LmpzOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLmdlbik6CisgICAgICAgICh0ZXN0
U3ludGF4RXJyb3IuYXJndW1lbnRzKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5ldmFsKToK
KyAgICAgICAgKiB0ZXN0MjYyLnlhbWw6CisKIDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2Jh
cmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRC
eUlkIG5lZWRzIHRvIHBhc3MgaW4gTmVlZHNUb1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3Bl
Y3VsYXRpb24gYW5kIHVudHlwZWQgc3BlY3VsYXRpb24gcGF0aApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtYXdhaXQtc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtc3ludGF4LmpzCmluZGV4IDIwMGQ1ZWE2MzEzZWEzMWY4NGE0MGRjMTE1NTE0NmNjOGI5NjAx
NTYuLjg4NTNiMzQ3NTg2ZTBjNjcwZWQwZGNjOWJjYjkzMDk0ZDE4ZDg1NjYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1zeW50YXguanMKQEAgLTM1NSwzICszNTUsMzkgQEAgZnVuY3Rpb24gdGVz
dFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewogICAgICAgICB0ZXN0U3ludGF4RXJyb3Io
YCJ1c2Ugc3RyaWN0IjsgJHtuZXN0ZWR9YCk7CiAgICAgfQogfSkoKTsKKwordGVzdFN5bnRheEVy
cm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGZuKGFyZ3VtZW50cykgeworICAgICJ1c2Ugc3RyaWN0IjsK
K30KK2AsIGBTeW50YXhFcnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUg
aW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBm
bihldmFsKSB7CisgICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlk
IHBhcmFtZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5
bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGFyZ3VtZW50cygpIHsKKyAgICAidXNlIHN0cmlj
dCI7Cit9CitgLCBgU3ludGF4RXJyb3I6ICdhcmd1bWVudHMnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0
aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBm
dW5jdGlvbiBldmFsKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjog
J2V2YWwnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisK
K3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBmbihhKSB7CisgICAgbGV0IGEgPSAx
OworfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGxldCB2YXJpYWJsZSB0d2lj
ZTogJ2EnLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gZm4oYikgewor
ICAgIGNvbnN0IGIgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGNv
bnN0IHZhcmlhYmxlIHR3aWNlOiAnYicuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwpp
bmRleCA2ZjYxNDliMWEyZjIzYWExY2I2YTk4NGExOTA1MTQxMzk5ZDc0NzQ4Li44NjJjMmE1OTM2
NGI0MDFhOTg3OTM1YjQxMDUxYjM3ZTE1MGYyZTg5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50
YXguanMKQEAgLTEyOCwzICsxMjgsMzkgQEAgdGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKGcg
PSBmdW5jdGlvbiAqKCkgeyB5aWVsZCAgfSkgewogfQogYCk7CisKK3Rlc3RTeW50YXhFcnJvcihg
CitmdW5jdGlvbiogZ2VuKGFyZ3VtZW50cykgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBT
eW50YXhFcnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGV2YWwpIHsKKyAg
ICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6IEludmFsaWQgcGFyYW1ldGVycyBv
ciBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAor
ZnVuY3Rpb24qIGFyZ3VtZW50cygpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4
RXJyb3I6ICdhcmd1bWVudHMnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZXZhbCgpIHsKKyAgICAi
dXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6ICdldmFsJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorZnVu
Y3Rpb24qIGdlbihhKSB7CisgICAgbGV0IGEgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgZGVjbGFyZSBhIGxldCB2YXJpYWJsZSB0d2ljZTogJ2EnLmApOworCit0ZXN0U3ludGF4RXJy
b3IoYAorZnVuY3Rpb24qIGdlbihiKSB7CisgICAgY29uc3QgYiA9IDE7Cit9CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgY29uc3QgdmFyaWFibGUgdHdpY2U6ICdiJy5gKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKaW5k
ZXggOWE4NjE5M2VjNjU0YWRiYWNiY2M2NTAzMjc1YTg1OWE4ZDhhZmRkOC4uM2U0MTlkOTIwNThj
ZGYxYWYwMzEyNzJhMTc5MGNmNGExNDE4YzU3YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
LnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTY2NDk4LDEzICs2NjQ5OCwxMyBA
QAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhv
ZC1kZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbS1pbml0LXlpZWxkLmpzCiAgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24v
Z2VuZXJhdG9yLXBhcmFtLXJlZGVjbC1jb25zdC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3It
cGFyYW0tcmVkZWNsLWNvbnN0LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJh
dG9yLXBhcmFtLXJlZGVjbC1sZXQuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLXJl
ZGVjbC1sZXQuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW1z
LmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3Qv
bWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtcy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292687</attachid>
            <date>2016-10-24 17:49:55 -0700</date>
            <delta_ts>2016-10-26 14:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163930-20161024204610.patch</filename>
            <type>text/plain</type>
            <size>7594</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NmM2MGU0OWNhNjQzMDQwMGVkOWI3NTYxYTAyM2VmMjE3N2EwNjM2Li4yZGM3ZjYyYjQ4YTVkODg4
MWVjNTk2ZmViNmQzYWQwOWRkMDEwOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0yNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJh
dG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbHNvIGZvcmJpZHMgImFyZ3VtZW50cyIgYW5kICJldmFsIiBhcyBnZW5l
cmF0b3IgYXJndW1lbnQgbmFtZXMgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aGFzRGVjbGFyZWRQYXJhbWV0ZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmlzVmFsaWRTdHJpY3RNb2RlKToKKwogMjAxNi0xMC0yNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBzcGVjaWFs
IGhhbmRsaW5nIGZvciB0eXBlZCBhcnJheXMgaW4gSlNET01Db252ZXJ0LmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDhjNDQ3NGIwOTkzMzcyZTc0MjQ2MDFkYjlhYTA2
NDQ1ZGY5MzdlZDguLjVjZGEwM2E2YmI1ZDlhZTZjZGM1M2ZkYWVlYTFhYWM2MWE0MDI5N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTIyOCw2ICsxMjI4LDExIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2Nv
cGVTdGFjay5zaXplKCkpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKChtX3Njb3BlU3RhY2tb
aV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0FzeW5jRnVuY3Rp
b25Cb3VuZGFyeSgpKSAmJiBpKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBBU1NF
UlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X3Njb3BlU3RhY2tbaV0uaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQpOwogICAgIH0KICAgICAK
QEAgLTEzODIsNyArMTM4NywxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5kU3dpdGNoKCkgeyBj
dXJyZW50U2NvcGUoKS0+ZW5kU3dpdGNoKCk7IH0KICAgICB2b2lkIHNldFN0cmljdE1vZGUoKSB7
IGN1cnJlbnRTY29wZSgpLT5zZXRTdHJpY3RNb2RlKCk7IH0KICAgICBib29sIHN0cmljdE1vZGUo
KSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+c3RyaWN0TW9kZSgpOyB9Ci0gICAgYm9vbCBpc1Zh
bGlkU3RyaWN0TW9kZSgpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5pc1ZhbGlkU3RyaWN0TW9k
ZSgpOyB9CisgICAgYm9vbCBpc1ZhbGlkU3RyaWN0TW9kZSgpCisgICAgeworICAgICAgICBpbnQg
aSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICBpZiAoIW1fc2NvcGVTdGFja1tp
XS5pc1ZhbGlkU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoVU5MSUtFTFkoaSAmJiAobV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnko
KSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpIC0gMV0uaXNWYWxpZFN0cmljdE1vZGUoKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJlUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KSB7IHJldHVybiBjdXJyZW50U2Nv
cGUoKS0+ZGVjbGFyZVBhcmFtZXRlcihpZGVudCk7IH0KICAgICBib29sIGRlY2xhcmVSZXN0T3JO
b3JtYWxQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXIqKik7CiAK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWQ2MDAzMTQ0ZDE2MjEyZjk0ZWQ5NTVjNmJkODUzYzM5NGI3MDgyYi4uZmE4M2M3ZmJjOWIzYjI0
NDgzNzkyMTIwZjZiYzJlMWVkZmVmMTY1MyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0xMC0yNCAgQ2Fp
dGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBs
ZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJhdG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hc3lu
Yy1hd2FpdC1zeW50YXguanM6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanM6
CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IuZ2VuKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJv
ci5hcmd1bWVudHMpOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLmV2YWwpOgorICAgICAgICAq
IHRlc3QyNjIueWFtbDoKKwogMjAxNi0xMC0yNCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBzdXBwb3J0IGZsb2F0aW5nIHBvaW50
IG9wZXJhdGlvbnMuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1zeW50
YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1zeW50YXguanMKaW5kZXggMjAwZDVl
YTYzMTNlYTMxZjg0YTQwZGMxMTU1MTQ2Y2M4Yjk2MDE1Ni4uODg1M2IzNDc1ODZlMGM2NzBlZDBk
Y2M5YmNiOTMwOTRkMThkODU2NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcwpA
QCAtMzU1LDMgKzM1NSwzOSBAQCBmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNz
YWdlKSB7CiAgICAgICAgIHRlc3RTeW50YXhFcnJvcihgInVzZSBzdHJpY3QiOyAke25lc3RlZH1g
KTsKICAgICB9CiB9KSgpOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gZm4o
YXJndW1lbnRzKSB7CisgICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZh
bGlkIHBhcmFtZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVz
dFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGZuKGV2YWwpIHsKKyAgICAidXNlIHN0cmlj
dCI7Cit9CitgLCBgU3ludGF4RXJyb3I6IEludmFsaWQgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBu
YW1lIGluIHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rp
b24gYXJndW1lbnRzKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjog
J2FyZ3VtZW50cycgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5g
KTsKKwordGVzdFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGV2YWwoKSB7CisgICAgInVz
ZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiAnZXZhbCcgaXMgbm90IGEgdmFsaWQgZnVu
Y3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2FzeW5j
IGZ1bmN0aW9uIGZuKGEpIHsKKyAgICBsZXQgYSA9IDE7Cit9CitgLCBgU3ludGF4RXJyb3I6IENh
bm5vdCBkZWNsYXJlIGEgbGV0IHZhcmlhYmxlIHR3aWNlOiAnYScuYCk7CisKK3Rlc3RTeW50YXhF
cnJvcihgCithc3luYyBmdW5jdGlvbiBmbihiKSB7CisgICAgY29uc3QgYiA9IDE7Cit9CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgY29uc3QgdmFyaWFibGUgdHdpY2U6ICdiJy5g
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCmluZGV4IDZmNjE0OWIxYTJmMjNhYTFjYjZh
OTg0YTE5MDUxNDEzOTlkNzQ3NDguLjg2MmMyYTU5MzY0YjQwMWE5ODc5MzViNDEwNTFiMzdlMTUw
ZjJlODkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwpAQCAtMTI4LDMgKzEyOCwzOSBA
QCB0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oZyA9IGZ1bmN0aW9uICooKSB7IHlpZWxkICB9
KSB7CiB9CiBgKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2Z1bmN0aW9uKiBnZW4oYXJndW1lbnRz
KSB7CisgICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlkIHBhcmFt
ZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVy
cm9yKGAKK2Z1bmN0aW9uKiBnZW4oZXZhbCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBT
eW50YXhFcnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogYXJndW1lbnRzKCkgewor
ICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogJ2FyZ3VtZW50cycgaXMgbm90
IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVy
cm9yKGAKK2Z1bmN0aW9uKiBldmFsKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50
YXhFcnJvcjogJ2V2YWwnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1v
ZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGEpIHsKKyAgICBsZXQg
YSA9IDE7Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgbGV0IHZhcmlhYmxl
IHR3aWNlOiAnYScuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGIpIHsK
KyAgICBjb25zdCBiID0gMTsKK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBj
b25zdCB2YXJpYWJsZSB0d2ljZTogJ2InLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYy
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIueWFtbAppbmRleCA5YTg2MTkzZWM2NTRhZGJhY2JjYzY1
MDMyNzVhODU5YThkOGFmZGQ4Li4zZTQxOWQ5MjA1OGNkZjFhZjAzMTI3MmExNzkwY2Y0YTE0MThj
NTdhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3Qy
NjIueWFtbApAQCAtNjY0OTgsMTMgKzY2NDk4LDEzIEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBh
cmFtLWluaXQteWllbGQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWNv
bnN0LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2Jq
ZWN0L21ldGhvZC1kZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbS1yZWRlY2wtY29uc3QuanMKLSAg
Y21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWxldC5qcwot
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10K
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
W10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRo
b2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWxldC5qcwotICBjbWQ6IHJ1blRl
c3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21l
dGhvZC1kZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbXMuanMKICAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0
b3ItcGFyYW1zLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292963</attachid>
            <date>2016-10-26 14:47:07 -0700</date>
            <delta_ts>2016-10-26 18:07:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163930-20161026174318.patch</filename>
            <type>text/plain</type>
            <size>7937</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjhhMTlmYTQzMTFiMjQxNWNhOTdhNmJlNDk1NWZjNmY3NmQ4YTM4Li5lYzk4NGViZWMyZTc5NmM1
NjhjMmFmZDQ4MDdjZmQ1YjFmOWJkNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0xMC0yNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJh
dG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbHNvIGZvcmJpZHMgImFyZ3VtZW50cyIgYW5kICJldmFsIiBhcyBnZW5l
cmF0b3IgYXJndW1lbnQgbmFtZXMgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aGFzRGVjbGFyZWRQYXJhbWV0ZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OmlzVmFsaWRTdHJpY3RNb2RlKToKKwogMjAxNi0xMC0yNiAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc6OnNldCgpIHNob3VsZCBjaGVjayBmb3IgZXhjZXB0aW9ucy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGFkNWQzNmFmYmFjZjNkZWRiYWUwNmNhODYyMjg4
NzBmNjMwMzg1MzguLjFmMTRmM2EwMjViNWVlMTQ0ZDczZjg0NjQzM2IwODdhNzRmMzQwYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTIyOCw2ICsxMjI4LDEzIEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2Nv
cGVTdGFjay5zaXplKCkpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKChtX3Njb3BlU3RhY2tb
aV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0FzeW5jRnVuY3Rp
b25Cb3VuZGFyeSgpKSAmJiBpKSB7CisgICAgICAgICAgICAvLyBUaGUgZm9ybWFsIHBhcmFtZXRl
cnMgd2hpY2ggbmVlZCB0byBiZSB2ZXJpZmllZCBmb3IgR2VuZXJhdG9ycyBhbmQgQXN5bmMgRnVu
Y3Rpb24gYm9kaWVzIG9jY3VyCisgICAgICAgICAgICAvLyBpbiB0aGUgb3V0ZXIgd3JhcHBlciBm
dW5jdGlvbiwgc28gcGljayB0aGUgb3V0ZXIgc2NvcGUgaGVyZS4KKyAgICAgICAgICAgIGktLTsK
KyAgICAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpXS5oYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVu
dCk7CiAgICAgfQogICAgIApAQCAtMTM4Miw3ICsxMzg5LDE4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbmRTd2l0Y2goKSB7IGN1cnJlbnRTY29wZSgpLT5lbmRTd2l0Y2goKTsgfQogICAgIHZvaWQg
c2V0U3RyaWN0TW9kZSgpIHsgY3VycmVudFNjb3BlKCktPnNldFN0cmljdE1vZGUoKTsgfQogICAg
IGJvb2wgc3RyaWN0TW9kZSgpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7
IH0KLSAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCkt
PmlzVmFsaWRTdHJpY3RNb2RlKCk7IH0KKyAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkKKyAg
ICB7CisgICAgICAgIGludCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIGlm
ICghbV9zY29wZVN0YWNrW2ldLmlzVmFsaWRTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgR2VuZXJhdG9yIG9yIEFzeW5j
IGZ1bmN0aW9uIGJvZGllcywgYWxzbyBjaGVjayB0aGUgd3JhcHBlciBmdW5jdGlvbiwgd2hvc2Ug
bmFtZSBvcgorICAgICAgICAvLyBhcmd1bWVudHMgbWF5IGJlIGludmFsaWQuCisgICAgICAgIGlm
IChVTkxJS0VMWSgobV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Nj
b3BlU3RhY2tbaV0uaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkgJiYgaSkpCisgICAgICAgICAg
ICByZXR1cm4gbV9zY29wZVN0YWNrW2kgLSAxXS5pc1ZhbGlkU3RyaWN0TW9kZSgpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQ
YXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciogaWRlbnQpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgp
LT5kZWNsYXJlUGFyYW1ldGVyKGlkZW50KTsgfQogICAgIGJvb2wgZGVjbGFyZVJlc3RPck5vcm1h
bFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllcioqKTsKIApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiNGEz
ODlmOTc5MTQ0YTY3NzZiYzk3ZjQwNWNmNzkxZGViNjgyODMyLi44ZGE2MTg3N2M5ZWQ5M2Y4OGRj
OTRjNDJmMDJjZTMzMzdjOGIzNzMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTI0ICBDYWl0bGlu
IFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gZm9yYmlkIGxleGlj
YWwgcmVkZWNsYXJhdGlvbiBvZiBnZW5lcmF0b3IgZm9ybWFsIHBhcmFtZXRlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzkzMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3
YWl0LXN5bnRheC5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAg
ICAgICAgKHRlc3RTeW50YXhFcnJvci5nZW4pOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLmFy
Z3VtZW50cyk6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IuZXZhbCk6CisgICAgICAgICogdGVz
dDI2Mi55YW1sOgorCiAyMDE2LTEwLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6c2V0KCkgc2hvdWxkIGNoZWNrIGZv
ciBleGNlcHRpb25zLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtc3lu
dGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtc3ludGF4LmpzCmluZGV4IDIwMGQ1
ZWE2MzEzZWEzMWY4NGE0MGRjMTE1NTE0NmNjOGI5NjAxNTYuLjg4NTNiMzQ3NTg2ZTBjNjcwZWQw
ZGNjOWJjYjkzMDk0ZDE4ZDg1NjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3
YWl0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1zeW50YXguanMK
QEAgLTM1NSwzICszNTUsMzkgQEAgZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVz
c2FnZSkgewogICAgICAgICB0ZXN0U3ludGF4RXJyb3IoYCJ1c2Ugc3RyaWN0IjsgJHtuZXN0ZWR9
YCk7CiAgICAgfQogfSkoKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGZu
KGFyZ3VtZW50cykgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogSW52
YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rl
c3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBmbihldmFsKSB7CisgICAgInVzZSBzdHJp
Y3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlkIHBhcmFtZXRlcnMgb3IgZnVuY3Rpb24g
bmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0
aW9uIGFyZ3VtZW50cygpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6
ICdhcmd1bWVudHMnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUu
YCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBldmFsKCkgeworICAgICJ1
c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogJ2V2YWwnIGlzIG5vdCBhIHZhbGlkIGZ1
bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3lu
YyBmdW5jdGlvbiBmbihhKSB7CisgICAgbGV0IGEgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBD
YW5ub3QgZGVjbGFyZSBhIGxldCB2YXJpYWJsZSB0d2ljZTogJ2EnLmApOworCit0ZXN0U3ludGF4
RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gZm4oYikgeworICAgIGNvbnN0IGIgPSAxOworfQorYCwg
YFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGNvbnN0IHZhcmlhYmxlIHR3aWNlOiAnYicu
YCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwppbmRleCA2ZjYxNDliMWEyZjIzYWExY2I2
YTk4NGExOTA1MTQxMzk5ZDc0NzQ4Li44NjJjMmE1OTM2NGI0MDFhOTg3OTM1YjQxMDUxYjM3ZTE1
MGYyZTg5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKQEAgLTEyOCwzICsxMjgsMzkg
QEAgdGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKGcgPSBmdW5jdGlvbiAqKCkgeyB5aWVsZCAg
fSkgewogfQogYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGFyZ3VtZW50
cykgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogSW52YWxpZCBwYXJh
bWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhF
cnJvcihgCitmdW5jdGlvbiogZ2VuKGV2YWwpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBg
U3ludGF4RXJyb3I6IEludmFsaWQgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBuYW1lIGluIHN0cmlj
dCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorZnVuY3Rpb24qIGFyZ3VtZW50cygpIHsK
KyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6ICdhcmd1bWVudHMnIGlzIG5v
dCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhF
cnJvcihgCitmdW5jdGlvbiogZXZhbCgpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3lu
dGF4RXJyb3I6ICdldmFsJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBt
b2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorZnVuY3Rpb24qIGdlbihhKSB7CisgICAgbGV0
IGEgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGxldCB2YXJpYWJs
ZSB0d2ljZTogJ2EnLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorZnVuY3Rpb24qIGdlbihiKSB7
CisgICAgY29uc3QgYiA9IDE7Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEg
Y29uc3QgdmFyaWFibGUgdHdpY2U6ICdiJy5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2
Mi55YW1sIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKaW5kZXggOWE4NjE5M2VjNjU0YWRiYWNiY2M2
NTAzMjc1YTg1OWE4ZDhhZmRkOC4uM2U0MTlkOTIwNThjZGYxYWYwMzEyNzJhMTc5MGNmNGExNDE4
YzU3YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyLnlhbWwKQEAgLTY2NDk4LDEzICs2NjQ5OCwxMyBAQAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL2dlbmVyYXRvci1w
YXJhbS1pbml0LXlpZWxkLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLXJlZGVjbC1j
b25zdC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgW10KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29i
amVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWNvbnN0LmpzCi0g
IGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9u
cy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLXJlZGVjbC1sZXQuanMK
LSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtd
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0
aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLXJlZGVjbC1sZXQuanMKLSAgY21kOiBydW5U
ZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9t
ZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW1zLmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJh
dG9yLXBhcmFtcy5qcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292982</attachid>
            <date>2016-10-26 18:07:35 -0700</date>
            <delta_ts>2016-10-27 15:41:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163930-20161026210346.patch</filename>
            <type>text/plain</type>
            <size>12034</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjhhMTlmYTQzMTFiMjQxNWNhOTdhNmJlNDk1NWZjNmY3NmQ4YTM4Li5lNmVjOTU5MTE3NGIxYTA0
NjE0NGYzOGIyNGY2NDQ0MjUzYzhiMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxNi0xMC0yNiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJh
dG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbHNvIGZvcmJpZHMgImFyZ3VtZW50cyIgYW5kICJldmFsIiBhcyBnZW5l
cmF0b3IgYXJndW1lbnQgbmFtZXMgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNl
RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZGVjbGFyZVJlc3RP
ck5vcm1hbFBhcmFtZXRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpQYXJzZXI6OmRlY2xhcmVWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aGFz
UHJldmlvdXNseURlY2xhcmVkVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omhhc1By
ZXZpb3VzbHlEZWNsYXJlZFBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNWYWxp
ZFN0cmljdE1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omhhc0RlY2xhcmVkVmFyaWFibGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI6Omhhc0RlY2xhcmVkUGFyYW1ldGVyKTog
RGVsZXRlZC4KKwogMjAxNi0xMC0yNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc6OnNldCgpIHNob3VsZCBjaGVjayBmb3Ig
ZXhjZXB0aW9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA4
OTc0YWRiYjFkY2ZkNjNiMTg3MzU5OTlkNjE2N2M5NzJlZTY1NDUzLi41ZTFkNTY0MWEyYWQyNDM3
ZjJmMzNkZWU2NThhZTA2Yzg4OGMyMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC00MjEsOSArNDIxLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU291cmNlRWwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9
PSAqbV9wYXJzZXJTdGF0ZS5sYXN0RnVuY3Rpb25OYW1lKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBuYW1lIGEgZnVuY3Rpb24gJ2V2YWwnIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaGFzRGVjbGFyZWRWYXJpYWJsZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5h
cmd1bWVudHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1ByZXZpb3VzbHlEZWNs
YXJlZFZhcmlhYmxlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjbGFyZSBhIHZhcmlhYmxl
IG5hbWVkICdhcmd1bWVudHMnIGluIHN0cmljdCBtb2RlIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaGFzRGVjbGFyZWRWYXJpYWJsZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQcmV2aW91c2x5RGVjbGFyZWRWYXJpYWJs
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNsYXJlIGEgdmFyaWFibGUgbmFtZWQgJ2V2YWwnIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoY3VycmVudFNjb3BlKCktPmhhc05vblNpbXBsZVBhcmFtZXRlckxpc3QoKSwgIid1c2Ugc3Ry
aWN0JyBkaXJlY3RpdmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgZnVuY3Rpb24gd2l0aCBhIG5vbi1z
aW1wbGUgcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmRmFsc2UoaXNWYWxpZFN0cmljdE1vZGUoKSwgIkludmFsaWQgcGFyYW1ldGVycyBvciBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CkBAIC04NTIsNyArODUyLDcgQEAgYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6ZGVjbGFyZVJlc3RPck5vcm1hbFBhcmFtZXRlcihjb25zdCBJZGVu
dGlmaWVyJiBuYW1lLCBjb24KICAgICAgICAgaWYgKG1fcGFyc2VyU3RhdGUubGFzdEZ1bmN0aW9u
TmFtZSAmJiBuYW1lID09ICptX3BhcnNlclN0YXRlLmxhc3RGdW5jdGlvbk5hbWUpCiAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNsYXJlIGEgcGFyYW1ldGVyIG5hbWVkICciLCBu
YW1lLmltcGwoKSwgIicgYXMgaXQgc2hhZG93cyB0aGUgbmFtZSBvZiBhIHN0cmljdCBtb2RlIGZ1
bmN0aW9uIik7CiAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZCgicGFyYW1ldGVy
IG5hbWUiKTsKLSAgICAgICAgaWYgKGhhc0RlY2xhcmVkUGFyYW1ldGVyKG5hbWUpKQorICAgICAg
ICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSAmJiBoYXNQcmV2aW91c2x5RGVj
bGFyZWRQYXJhbWV0ZXIobmFtZSkpCiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBk
ZWNsYXJlIGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1v
ZGUgYXMgaXQgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOwogICAgICAgICBzZW1hbnRpY0Zh
aWwoIkNhbm5vdCBkZWNsYXJlIGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicg
aW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAppbmRleCBhZDVkMzZhZmJhY2YzZGVkYmFlMDZjYTg2MjI4ODcwZjYzMDM4NTM4Li42MjY3Mzgz
MjQ4MDA0MzQyYjc1YmQzYjM2M2JlYTJmNWY1ZmZjNjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKQEAgLTExNjUsNyArMTE2NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
QVNTRVJUKHR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCB0eXBlID09
IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbik7CiAgICAgICAgIC8vIExleGljYWwg
dmFyaWFibGVzIGRlY2xhcmVkIGF0IGEgdG9wIGxldmVsIHNjb3BlIHRoYXQgc2hhZG93IGFyZ3Vt
ZW50cyBvciB2YXJzIGFyZSBub3QgYWxsb3dlZC4KLSAgICAgICAgaWYgKG1fc3RhdGVtZW50RGVw
dGggPT0gMSAmJiAoaGFzRGVjbGFyZWRQYXJhbWV0ZXIoKmlkZW50KSB8fCBoYXNEZWNsYXJlZFZh
cmlhYmxlKCppZGVudCkpKQorICAgICAgICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rp
b24oKSAmJiBtX3N0YXRlbWVudERlcHRoID09IDEgJiYgKGhhc1ByZXZpb3VzbHlEZWNsYXJlZFBh
cmFtZXRlcigqaWRlbnQpIHx8IGhhc1ByZXZpb3VzbHlEZWNsYXJlZFZhcmlhYmxlKCppZGVudCkp
KQogICAgICAgICAgICAgcmV0dXJuIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb247CiAKICAgICAgICAgcmV0dXJuIGN1cnJlbnRMZXhpY2FsRGVjbGFyYXRpb25T
Y29wZSgpLT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKGlkZW50LCB0eXBlID09IERlY2xhcmF0aW9u
VHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgaW1wb3J0VHlwZSk7CkBAIC0xMjA5LDcgKzEyMDksNyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIobGV4aWNhbFZhcmlhYmxl
U2NvcGUtPmRlY2xhcmVGdW5jdGlvbihpZGVudCwgZGVjbGFyZUFzVmFyLCBpc1Nsb3BweU1vZGVI
b2lzdGluZ0NhbmRpZGF0ZSksIGxleGljYWxWYXJpYWJsZVNjb3BlKTsKICAgICB9CiAKLSAgICBO
RVZFUl9JTkxJTkUgYm9vbCBoYXNEZWNsYXJlZFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQorICAgIE5FVkVSX0lOTElORSBib29sIGhhc1ByZXZpb3VzbHlEZWNsYXJlZFZhcmlhYmxl
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1f
c2NvcGVTdGFjay5zaXplKCkgLSAxOwogICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5z
aXplKCkpOwpAQCAtMTIyMCwxNCArMTIyMCwyMyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
bV9zY29wZVN0YWNrW2ldLmhhc0RlY2xhcmVkVmFyaWFibGUoaWRlbnQpOwogICAgIH0KIAotICAg
IE5FVkVSX0lOTElORSBib29sIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQorICAgIE5FVkVSX0lOTElORSBib29sIGhhc1ByZXZpb3VzbHlEZWNsYXJlZFBhcmFt
ZXRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7CisgICAgICAgIEFTU0VSVCghbV9s
ZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKTsKKwogICAgICAgICB1bnNpZ25lZCBpID0gbV9z
Y29wZVN0YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNp
emUoKSk7CiAgICAgICAgIHdoaWxlICghbV9zY29wZVN0YWNrW2ldLmFsbG93c1ZhckRlY2xhcmF0
aW9ucygpKSB7CiAgICAgICAgICAgICBpLS07CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2Nv
cGVTdGFjay5zaXplKCkpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fc2NvcGVTdGFja1tp
XS5pc0dlbmVyYXRvckJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlv
bkJvdW5kYXJ5KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBmb3JtYWwgcGFyYW1ldGVycyB3aGlj
aCBuZWVkIHRvIGJlIHZlcmlmaWVkIGZvciBHZW5lcmF0b3JzIGFuZCBBc3luYyBGdW5jdGlvbiBi
b2RpZXMgb2NjdXIKKyAgICAgICAgICAgIC8vIGluIHRoZSBvdXRlciB3cmFwcGVyIGZ1bmN0aW9u
LCBzbyBwaWNrIHRoZSBvdXRlciBzY29wZSBoZXJlLgorICAgICAgICAgICAgaS0tOworICAgICAg
ICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbV9zY29wZVN0YWNrW2ldLmhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50KTsKICAg
ICB9CiAgICAgCkBAIC0xMzgyLDcgKzEzOTEsMTggQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuZFN3
aXRjaCgpIHsgY3VycmVudFNjb3BlKCktPmVuZFN3aXRjaCgpOyB9CiAgICAgdm9pZCBzZXRTdHJp
Y3RNb2RlKCkgeyBjdXJyZW50U2NvcGUoKS0+c2V0U3RyaWN0TW9kZSgpOyB9CiAgICAgYm9vbCBz
dHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPnN0cmljdE1vZGUoKTsgfQotICAg
IGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKSB7IHJldHVybiBjdXJyZW50U2NvcGUoKS0+aXNWYWxp
ZFN0cmljdE1vZGUoKTsgfQorICAgIGJvb2wgaXNWYWxpZFN0cmljdE1vZGUoKQorICAgIHsKKyAg
ICAgICAgaW50IGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgaWYgKCFtX3Nj
b3BlU3RhY2tbaV0uaXNWYWxpZFN0cmljdE1vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBHZW5lcmF0b3Igb3IgQXN5bmMgZnVuY3Rp
b24gYm9kaWVzLCBhbHNvIGNoZWNrIHRoZSB3cmFwcGVyIGZ1bmN0aW9uLCB3aG9zZSBuYW1lIG9y
CisgICAgICAgIC8vIGFyZ3VtZW50cyBtYXkgYmUgaW52YWxpZC4KKyAgICAgICAgaWYgKFVOTElL
RUxZKChtX3Njb3BlU3RhY2tbaV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFj
a1tpXS5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpKSAmJiBpKSkKKyAgICAgICAgICAgIHJldHVy
biBtX3Njb3BlU3RhY2tbaSAtIDFdLmlzVmFsaWRTdHJpY3RNb2RlKCk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVBhcmFtZXRl
cihjb25zdCBJZGVudGlmaWVyKiBpZGVudCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmRlY2xh
cmVQYXJhbWV0ZXIoaWRlbnQpOyB9CiAgICAgYm9vbCBkZWNsYXJlUmVzdE9yTm9ybWFsUGFyYW1l
dGVyKGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyKiopOwogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI0YTM4OWY5Nzkx
NDRhNjc3NmJjOTdmNDA1Y2Y3OTFkZWI2ODI4MzIuLjEwOGVmN2MwNmZjMjRjNTliYTgwOWRmNjUw
MThhODlkZTEwMDgxNjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMTAtMjYgIENhaXRsaW4gUG90dGVy
ICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBmb3JiaWQgbGV4aWNhbCByZWRl
Y2xhcmF0aW9uIG9mIGdlbmVyYXRvciBmb3JtYWwgcGFyYW1ldGVycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzOTMwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtc3lu
dGF4LmpzOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzOgorICAgICAgICAo
dGVzdFN5bnRheEVycm9yLmdlbik6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3IuYXJndW1lbnRz
KToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5ldmFsKToKKyAgICAgICAgKiB0ZXN0MjYyLnlh
bWw6CisKIDIwMTYtMTAtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3OjpzZXQoKSBzaG91bGQgY2hlY2sgZm9yIGV4Y2Vw
dGlvbnMuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1zeW50YXguanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1zeW50YXguanMKaW5kZXggMjAwZDVlYTYzMTNl
YTMxZjg0YTQwZGMxMTU1MTQ2Y2M4Yjk2MDE1Ni4uODg1M2IzNDc1ODZlMGM2NzBlZDBkY2M5YmNi
OTMwOTRkMThkODU2NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtc3lu
dGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcwpAQCAtMzU1
LDMgKzM1NSwzOSBAQCBmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7
CiAgICAgICAgIHRlc3RTeW50YXhFcnJvcihgInVzZSBzdHJpY3QiOyAke25lc3RlZH1gKTsKICAg
ICB9CiB9KSgpOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gZm4oYXJndW1l
bnRzKSB7CisgICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlkIHBh
cmFtZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRh
eEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGZuKGV2YWwpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9
CitgLCBgU3ludGF4RXJyb3I6IEludmFsaWQgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBuYW1lIGlu
IHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gYXJn
dW1lbnRzKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogJ2FyZ3Vt
ZW50cycgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwor
dGVzdFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGV2YWwoKSB7CisgICAgInVzZSBzdHJp
Y3QiOworfQorYCwgYFN5bnRheEVycm9yOiAnZXZhbCcgaXMgbm90IGEgdmFsaWQgZnVuY3Rpb24g
bmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0
aW9uIGZuKGEpIHsKKyAgICBsZXQgYSA9IDE7Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBk
ZWNsYXJlIGEgbGV0IHZhcmlhYmxlIHR3aWNlOiAnYScuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihg
Cithc3luYyBmdW5jdGlvbiBmbihiKSB7CisgICAgY29uc3QgYiA9IDE7Cit9CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgY29uc3QgdmFyaWFibGUgdHdpY2U6ICdiJy5gKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMgYi9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCmluZGV4IDZmNjE0OWIxYTJmMjNhYTFjYjZhOTg0YTE5
MDUxNDEzOTlkNzQ3NDguLjg2MmMyYTU5MzY0YjQwMWE5ODc5MzViNDEwNTFiMzdlMTUwZjJlODkg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwpAQCAtMTI4LDMgKzEyOCwzOSBAQCB0ZXN0
U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oZyA9IGZ1bmN0aW9uICooKSB7IHlpZWxkICB9KSB7CiB9
CiBgKTsKKwordGVzdFN5bnRheEVycm9yKGAKK2Z1bmN0aW9uKiBnZW4oYXJndW1lbnRzKSB7Cisg
ICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlkIHBhcmFtZXRlcnMg
b3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVycm9yKGAK
K2Z1bmN0aW9uKiBnZW4oZXZhbCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhF
cnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUu
YCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogYXJndW1lbnRzKCkgeworICAgICJ1
c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjogJ2FyZ3VtZW50cycgaXMgbm90IGEgdmFs
aWQgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5bnRheEVycm9yKGAK
K2Z1bmN0aW9uKiBldmFsKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJv
cjogJ2V2YWwnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7
CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGEpIHsKKyAgICBsZXQgYSA9IDE7
Cit9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgbGV0IHZhcmlhYmxlIHR3aWNl
OiAnYScuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGIpIHsKKyAgICBj
b25zdCBiID0gMTsKK30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBjb25zdCB2
YXJpYWJsZSB0d2ljZTogJ2InLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyLnlhbWwg
Yi9KU1Rlc3RzL3Rlc3QyNjIueWFtbAppbmRleCA5YTg2MTkzZWM2NTRhZGJhY2JjYzY1MDMyNzVh
ODU5YThkOGFmZGQ4Li4zZTQxOWQ5MjA1OGNkZjFhZjAzMTI3MmExNzkwY2Y0YTE0MThjNTdhIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIueWFt
bApAQCAtNjY0OTgsMTMgKzY2NDk4LDEzIEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLWlu
aXQteWllbGQuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWNvbnN0Lmpz
Ci0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21l
dGhvZC1kZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbS1yZWRlY2wtY29uc3QuanMKLSAgY21kOiBy
dW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVj
dC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWxldC5qcwotICBjbWQ6
IHJ1blRlc3QyNjIgOmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVm
aW5pdGlvbi9nZW5lcmF0b3ItcGFyYW0tcmVkZWNsLWxldC5qcwotICBjbWQ6IHJ1blRlc3QyNjIg
OmZhaWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQog
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC1k
ZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbXMuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFy
YW1zLmpzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293070</attachid>
            <date>2016-10-27 15:41:19 -0700</date>
            <delta_ts>2016-10-27 16:23:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163930-20161027183729.patch</filename>
            <type>text/plain</type>
            <size>10469</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YzE0ZGY3OWMwYjA2NWM3N2Y5Njg4OTFkYjk4MWQyYzY1MzBmNTQ0Li4xODcwYzZhYTJmNjc1Njgy
MTg1ODQ4YWFlZjE3NzhmODgxMDI2Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0xMC0yNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVjbGFyYXRpb24gb2YgZ2VuZXJh
dG9yIGZvcm1hbCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM5MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbHNvIGZvcmJpZHMgImFyZ3VtZW50cyIgYW5kICJldmFsIiBhcyBnZW5l
cmF0b3IgYXJndW1lbnQgbmFtZXMgaW4gc3RyaWN0IG1vZGUuCisKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmRlY2xhcmVSZXN0
T3JOb3JtYWxQYXJhbWV0ZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpkZWNsYXJlVmFyaWFibGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omhh
c0RlY2xhcmVkUGFyYW1ldGVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc1ZhbGlkU3RyaWN0
TW9kZSk6CisKIDIwMTYtMTAtMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbmNsdWRlIENvbnNvbGVBZ2VudCBpbiBXb3Jr
ZXJzIC0gcmVhbCBjb25zb2xlLmxvZyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggODk3NGFkYmIxZGNmZDYzYjE4NzM1OTk5ZDYxNjdjOTcyZWU2NTQ1
My4uZDkxMDM3Y2QyM2FhNGViMTQ2ZDJlY2YzZTU0MThiOGFjNmM5YTA1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODUyLDcgKzg1Miw3IEBAIGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OmRlY2xhcmVSZXN0T3JOb3JtYWxQYXJhbWV0ZXIoY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgY29uCiAgICAgICAgIGlmIChtX3BhcnNlclN0YXRlLmxhc3RGdW5jdGlvbk5h
bWUgJiYgbmFtZSA9PSAqbV9wYXJzZXJTdGF0ZS5sYXN0RnVuY3Rpb25OYW1lKQogICAgICAgICAg
ICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjbGFyZSBhIHBhcmFtZXRlciBuYW1lZCAnIiwgbmFt
ZS5pbXBsKCksICInIGFzIGl0IHNoYWRvd3MgdGhlIG5hbWUgb2YgYSBzdHJpY3QgbW9kZSBmdW5j
dGlvbiIpOwogICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoInBhcmFtZXRlciBu
YW1lIik7Ci0gICAgICAgIGlmIChoYXNEZWNsYXJlZFBhcmFtZXRlcihuYW1lKSkKKyAgICAgICAg
aWYgKCFtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkgJiYgaGFzRGVjbGFyZWRQYXJhbWV0
ZXIobmFtZSkpCiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNsYXJlIGEgcGFy
YW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUgYXMgaXQgaGFz
IGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOwogICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBk
ZWNsYXJlIGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1v
ZGUiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhZDVk
MzZhZmJhY2YzZGVkYmFlMDZjYTg2MjI4ODcwZjYzMDM4NTM4Li4xNWE4ZjEyNGZjMWRmOTY1YzQ2
NWIwNjI1NDZjMzk0MGNlN2NlMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTExNjUsNyArMTE2NSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgQVNTRVJUKHR5cGUg
PT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCB0eXBlID09IERlY2xhcmF0aW9u
VHlwZTo6Q29uc3REZWNsYXJhdGlvbik7CiAgICAgICAgIC8vIExleGljYWwgdmFyaWFibGVzIGRl
Y2xhcmVkIGF0IGEgdG9wIGxldmVsIHNjb3BlIHRoYXQgc2hhZG93IGFyZ3VtZW50cyBvciB2YXJz
IGFyZSBub3QgYWxsb3dlZC4KLSAgICAgICAgaWYgKG1fc3RhdGVtZW50RGVwdGggPT0gMSAmJiAo
aGFzRGVjbGFyZWRQYXJhbWV0ZXIoKmlkZW50KSB8fCBoYXNEZWNsYXJlZFZhcmlhYmxlKCppZGVu
dCkpKQorICAgICAgICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSAmJiBtX3N0
YXRlbWVudERlcHRoID09IDEgJiYgKGhhc0RlY2xhcmVkUGFyYW1ldGVyKCppZGVudCkgfHwgaGFz
RGVjbGFyZWRWYXJpYWJsZSgqaWRlbnQpKSkKICAgICAgICAgICAgIHJldHVybiBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogCiAgICAgICAgIHJldHVybiBj
dXJyZW50TGV4aWNhbERlY2xhcmF0aW9uU2NvcGUoKS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZShp
ZGVudCwgdHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24sIGltcG9ydFR5
cGUpOwpAQCAtMTIyMiwxMiArMTIyMiwyNSBAQCBwcml2YXRlOgogCiAgICAgTkVWRVJfSU5MSU5F
IGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAg
eworICAgICAgICAvLyBGSVhNRTogaGFzRGVjbGFyZWRQYXJhbWV0ZXIoKSBpcyBub3QgdmFsaWQg
ZHVyaW5nIHJlcGFyc2luZyBvZiBnZW5lcmF0b3Igb3IgYXN5bmMgZnVuY3Rpb24gYm9kaWVzLCBi
ZWNhdXNlIHRoZWlyIGZvcm1hbAorICAgICAgICAvLyBwYXJhbWV0ZXJzIGFyZSBkZWNsYXJlZCBp
biBhIHNjb3BlIHVuYXZhaWxhYmxlIGR1cmluZyByZXBhcnNpbmcuIE5vdGUgdGhhdCBpdCBpcyBy
ZWR1bmRhbnQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGR1cmluZworICAgICAgICAvLyByZXBhcnNp
bmcgYW55d2F5cywgYXMgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgZ3VhcmFudGVlZCB0byBiZSB2
YWxpZCBieSB0aGUgb3JpZ2luYWwgcGFyc2luZy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDA4NworICAgICAgICBBU1NFUlQoIW1fbGV4ZXIt
PmlzUmVwYXJzaW5nRnVuY3Rpb24oKSk7CisKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVT
dGFjay5zaXplKCkgLSAxOwogICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkp
OwogICAgICAgICB3aGlsZSAoIW1fc2NvcGVTdGFja1tpXS5hbGxvd3NWYXJEZWNsYXJhdGlvbnMo
KSkgewogICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3Rh
Y2suc2l6ZSgpKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChtX3Njb3BlU3RhY2tbaV0uaXNH
ZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0FzeW5jRnVuY3Rpb25Cb3Vu
ZGFyeSgpKSB7CisgICAgICAgICAgICAvLyBUaGUgZm9ybWFsIHBhcmFtZXRlcnMgd2hpY2ggbmVl
ZCB0byBiZSB2ZXJpZmllZCBmb3IgR2VuZXJhdG9ycyBhbmQgQXN5bmMgRnVuY3Rpb24gYm9kaWVz
IG9jY3VyCisgICAgICAgICAgICAvLyBpbiB0aGUgb3V0ZXIgd3JhcHBlciBmdW5jdGlvbiwgc28g
cGljayB0aGUgb3V0ZXIgc2NvcGUgaGVyZS4KKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAg
IEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fc2NvcGVTdGFja1tpXS5oYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudCk7CiAgICAgfQog
ICAgIApAQCAtMTM4Miw3ICsxMzk1LDE4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRTd2l0Y2go
KSB7IGN1cnJlbnRTY29wZSgpLT5lbmRTd2l0Y2goKTsgfQogICAgIHZvaWQgc2V0U3RyaWN0TW9k
ZSgpIHsgY3VycmVudFNjb3BlKCktPnNldFN0cmljdE1vZGUoKTsgfQogICAgIGJvb2wgc3RyaWN0
TW9kZSgpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5zdHJpY3RNb2RlKCk7IH0KLSAgICBib29s
IGlzVmFsaWRTdHJpY3RNb2RlKCkgeyByZXR1cm4gY3VycmVudFNjb3BlKCktPmlzVmFsaWRTdHJp
Y3RNb2RlKCk7IH0KKyAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkKKyAgICB7CisgICAgICAg
IGludCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIGlmICghbV9zY29wZVN0
YWNrW2ldLmlzVmFsaWRTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgR2VuZXJhdG9yIG9yIEFzeW5jIGZ1bmN0aW9uIGJv
ZGllcywgYWxzbyBjaGVjayB0aGUgd3JhcHBlciBmdW5jdGlvbiwgd2hvc2UgbmFtZSBvcgorICAg
ICAgICAvLyBhcmd1bWVudHMgbWF5IGJlIGludmFsaWQuCisgICAgICAgIGlmIChVTkxJS0VMWSgo
bV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0u
aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkgJiYgaSkpCisgICAgICAgICAgICByZXR1cm4gbV9z
Y29wZVN0YWNrW2kgLSAxXS5pc1ZhbGlkU3RyaWN0TW9kZSgpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQYXJhbWV0ZXIoY29u
c3QgSWRlbnRpZmllciogaWRlbnQpIHsgcmV0dXJuIGN1cnJlbnRTY29wZSgpLT5kZWNsYXJlUGFy
YW1ldGVyKGlkZW50KTsgfQogICAgIGJvb2wgZGVjbGFyZVJlc3RPck5vcm1hbFBhcmFtZXRlcihj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllcioqKTsKIApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiOTA1MGM5YTVjZTdmNmZj
ZWYzODMxN2MyMmQwODBkMmY5M2MyNzIxLi43MWI5N2Y3NTNiMGFlYjc4ZjZiY2Y1NGNlODQ1MjNh
NmM1YjMxMjczIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEwLTI3ICBDYWl0bGluIFBvdHRlciAgPGNh
aXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gZm9yYmlkIGxleGljYWwgcmVkZWNsYXJh
dGlvbiBvZiBnZW5lcmF0b3IgZm9ybWFsIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzkzMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5q
czoKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAgICAgICAgKHRlc3RT
eW50YXhFcnJvci5nZW4pOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLmFyZ3VtZW50cyk6Cisg
ICAgICAgICh0ZXN0U3ludGF4RXJyb3IuZXZhbCk6CisgICAgICAgICogdGVzdDI2Mi55YW1sOgor
CiAyMDE2LTEwLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJBc3NlbWJseSBBUEk6IGltcGxlbWVudCBJbnN0YW5jZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtYXdhaXQtc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtc3ludGF4LmpzCmluZGV4IDIwMGQ1ZWE2MzEzZWEzMWY4NGE0MGRjMTE1NTE0NmNjOGI5NjAx
NTYuLjg4NTNiMzQ3NTg2ZTBjNjcwZWQwZGNjOWJjYjkzMDk0ZDE4ZDg1NjYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1zeW50YXguanMKQEAgLTM1NSwzICszNTUsMzkgQEAgZnVuY3Rpb24gdGVz
dFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewogICAgICAgICB0ZXN0U3ludGF4RXJyb3Io
YCJ1c2Ugc3RyaWN0IjsgJHtuZXN0ZWR9YCk7CiAgICAgfQogfSkoKTsKKwordGVzdFN5bnRheEVy
cm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGZuKGFyZ3VtZW50cykgeworICAgICJ1c2Ugc3RyaWN0IjsK
K30KK2AsIGBTeW50YXhFcnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUg
aW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBm
bihldmFsKSB7CisgICAgInVzZSBzdHJpY3QiOworfQorYCwgYFN5bnRheEVycm9yOiBJbnZhbGlk
IHBhcmFtZXRlcnMgb3IgZnVuY3Rpb24gbmFtZSBpbiBzdHJpY3QgbW9kZS5gKTsKKwordGVzdFN5
bnRheEVycm9yKGAKK2FzeW5jIGZ1bmN0aW9uIGFyZ3VtZW50cygpIHsKKyAgICAidXNlIHN0cmlj
dCI7Cit9CitgLCBgU3ludGF4RXJyb3I6ICdhcmd1bWVudHMnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0
aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBm
dW5jdGlvbiBldmFsKCkgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBTeW50YXhFcnJvcjog
J2V2YWwnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUuYCk7CisK
K3Rlc3RTeW50YXhFcnJvcihgCithc3luYyBmdW5jdGlvbiBmbihhKSB7CisgICAgbGV0IGEgPSAx
OworfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGxldCB2YXJpYWJsZSB0d2lj
ZTogJ2EnLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorYXN5bmMgZnVuY3Rpb24gZm4oYikgewor
ICAgIGNvbnN0IGIgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGNv
bnN0IHZhcmlhYmxlIHR3aWNlOiAnYicuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3Itc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwpp
bmRleCA2ZjYxNDliMWEyZjIzYWExY2I2YTk4NGExOTA1MTQxMzk5ZDc0NzQ4Li44NjJjMmE1OTM2
NGI0MDFhOTg3OTM1YjQxMDUxYjM3ZTE1MGYyZTg5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3Itc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50
YXguanMKQEAgLTEyOCwzICsxMjgsMzkgQEAgdGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKGcg
PSBmdW5jdGlvbiAqKCkgeyB5aWVsZCAgfSkgewogfQogYCk7CisKK3Rlc3RTeW50YXhFcnJvcihg
CitmdW5jdGlvbiogZ2VuKGFyZ3VtZW50cykgeworICAgICJ1c2Ugc3RyaWN0IjsKK30KK2AsIGBT
eW50YXhFcnJvcjogSW52YWxpZCBwYXJhbWV0ZXJzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZ2VuKGV2YWwpIHsKKyAg
ICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6IEludmFsaWQgcGFyYW1ldGVycyBv
ciBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAor
ZnVuY3Rpb24qIGFyZ3VtZW50cygpIHsKKyAgICAidXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4
RXJyb3I6ICdhcmd1bWVudHMnIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0
IG1vZGUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihgCitmdW5jdGlvbiogZXZhbCgpIHsKKyAgICAi
dXNlIHN0cmljdCI7Cit9CitgLCBgU3ludGF4RXJyb3I6ICdldmFsJyBpcyBub3QgYSB2YWxpZCBm
dW5jdGlvbiBuYW1lIGluIHN0cmljdCBtb2RlLmApOworCit0ZXN0U3ludGF4RXJyb3IoYAorZnVu
Y3Rpb24qIGdlbihhKSB7CisgICAgbGV0IGEgPSAxOworfQorYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgZGVjbGFyZSBhIGxldCB2YXJpYWJsZSB0d2ljZTogJ2EnLmApOworCit0ZXN0U3ludGF4RXJy
b3IoYAorZnVuY3Rpb24qIGdlbihiKSB7CisgICAgY29uc3QgYiA9IDE7Cit9CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCBkZWNsYXJlIGEgY29uc3QgdmFyaWFibGUgdHdpY2U6ICdiJy5gKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKaW5k
ZXggOWE4NjE5M2VjNjU0YWRiYWNiY2M2NTAzMjc1YTg1OWE4ZDhhZmRkOC4uM2U0MTlkOTIwNThj
ZGYxYWYwMzEyNzJhMTc5MGNmNGExNDE4YzU3YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
LnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTY2NDk4LDEzICs2NjQ5OCwxMyBA
QAogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhv
ZC1kZWZpbml0aW9uL2dlbmVyYXRvci1wYXJhbS1pbml0LXlpZWxkLmpzCiAgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24v
Z2VuZXJhdG9yLXBhcmFtLXJlZGVjbC1jb25zdC5qcwotICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KIC0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3It
cGFyYW0tcmVkZWNsLWNvbnN0LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJh
dG9yLXBhcmFtLXJlZGVjbC1sZXQuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtLXJl
ZGVjbC1sZXQuanMKLSAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9nZW5lcmF0b3ItcGFyYW1z
LmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3Qv
bWV0aG9kLWRlZmluaXRpb24vZ2VuZXJhdG9yLXBhcmFtcy5qcwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>