<?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>157079</bug_id>
          
          <creation_ts>2016-04-27 10:28:15 -0700</creation_ts>
          <short_desc>Assertion failure for super() call in arrow function default parameters</short_desc>
          <delta_ts>2016-05-13 08:54:41 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="André Bargull">andre.bargull</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187791</commentid>
    <comment_count>0</comment_count>
    <who name="André Bargull">andre.bargull</who>
    <bug_when>2016-04-27 10:28:15 -0700</bug_when>
    <thetext>SVN: rev200124
Build with: perl Tools/Scripts/build-jsc --gtk --debug


The following test case triggers this assertion error:
---
ASSERTION FAILED: !newTarget || newTarget.isConstructor()
---


Test case:
---
new class extends Array { constructor() { ((a = super())=&gt;{})() } }
---


Stack trace:
---
#0  0x00007ffff6e289ac in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:322
#1  0x00007ffff6bbf077 in JSC::InternalFunction::createSubclassStructure (exec=0x7fffffffc9f0, newTarget=..., baseClass=0x7fffaedf4380) at ../../Source/JavaScriptCore/runtime/InternalFunction.cpp:100
#2  0x0000000000447887 in JSC::JSGlobalObject::arrayStructureForIndexingTypeDuringAllocation (this=0x7fffaede7900, exec=0x7fffffffc9f0, indexingType=3 &apos;\003&apos;, newTarget=...)
    at ../../Source/JavaScriptCore/runtime/JSGlobalObject.h:506
#3  0x00000000004478c5 in JSC::JSGlobalObject::arrayStructureForProfileDuringAllocation (this=0x7fffaede7900, exec=0x7fffffffc9f0, profile=0x0, newTarget=...)
    at ../../Source/JavaScriptCore/runtime/JSGlobalObject.h:510
#4  0x00007ffff600afb9 in JSC::constructArray (exec=0x7fffffffc9f0, profile=0x0, globalObject=0x7fffaede7900, values=..., newTarget=...) at ../../Source/JavaScriptCore/runtime/JSGlobalObject.h:766
#5  0x00007ffff6b2efd6 in JSC::constructArrayWithSizeQuirk (exec=0x7fffffffc9f0, args=..., newTarget=...) at ../../Source/JavaScriptCore/runtime/ArrayConstructor.cpp:101
#6  0x00007ffff6b2f03c in JSC::constructWithArrayConstructor (exec=0x7fffffffc9f0) at ../../Source/JavaScriptCore/runtime/ArrayConstructor.cpp:107
#7  0x00007ffff6a296aa in JSC::(anonymous namespace)::handleHostCall (execCallee=0x7fffffffc9f0, pc=0x7ffff0dd7530, callee=..., kind=JSC::CodeForConstruct)
    at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
#8  0x00007ffff6a2c930 in JSC::(anonymous namespace)::setUpCall (execCallee=0x7fffffffc9f0, pc=0x7ffff0dd7530, kind=JSC::CodeForConstruct, calleeAsValue=..., callLinkInfo=0x7ffff0dbdcc8)
    at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1178
#9  0x00007ffff6a2cee3 in JSC::(anonymous namespace)::genericCall (exec=0x7fffffffca70, pc=0x7ffff0dd7530, kind=JSC::CodeForConstruct) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1262
#10 0x00007ffff6a298d9 in JSC::(anonymous namespace)::llint_slow_path_construct (exec=0x7fffffffca70, pc=0x7ffff0dd7530) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1274
#11 0x00007ffff6a33b3d in llint_entry () at ../../Source/JavaScriptCore/runtime/Butterfly.h:58
#12 0x00007ffff6a33818 in llint_entry () at ../../Source/JavaScriptCore/runtime/Butterfly.h:58
#13 0x00007ffff6a33b4b in llint_entry () at ../../Source/JavaScriptCore/runtime/Butterfly.h:58
#14 0x00007ffff6a2d895 in vmEntryToJavaScript () at ../../Source/JavaScriptCore/runtime/Butterfly.h:58
#15 0x00007ffff69d46d2 in JSC::JITCode::execute (this=0x7ffff0d9c668, vm=0x7fffb09f1000, protoCallFrame=0x7fffffffcd30) at ../../Source/JavaScriptCore/jit/JITCode.cpp:80
#16 0x00007ffff6997f4f in JSC::Interpreter::execute (this=0x7ffff0def058, program=0x7fffaedfbf70, callFrame=0x7fffaede7940, thisObj=0x7fffaedba360)
    at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:960
#17 0x00007ffff6b849ad in JSC::evaluate (exec=0x7fffaede7940, source=..., thisValue=..., returnedException=...) at ../../Source/JavaScriptCore/runtime/Completion.cpp:106
#18 0x000000000043a120 in runInteractive (globalObject=0x7fffaede7900) at ../../Source/JavaScriptCore/jsc.cpp:2083
#19 0x000000000043abcb in runJSC (vm=0x7fffb09f1000, options=...) at ../../Source/JavaScriptCore/jsc.cpp:2244
#20 0x000000000043b0a1 in jscmain (argc=1, argv=0x7fffffffdbb8) at ../../Source/JavaScriptCore/jsc.cpp:2293
#21 0x000000000043967f in main (argc=1, argv=0x7fffffffdbb8) at ../../Source/JavaScriptCore/jsc.cpp:1947
---</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188631</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-29 09:14:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/26004822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191081</commentid>
    <comment_count>2</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-08 13:13:25 -0700</bug_when>
    <thetext>Good catch!
It seems that we mismatch the scope when we resolve scope for &apos;super()&apos;. There is byte code for arrow function in little bit modified test:
----
new class extends Array { constructor() { var abc = 0;  ((a = super())=&gt;{ debug(abc);})() } }
----

----
[   0] enter             
[   1] get_scope         loc3
[   3] mov               loc4, loc3
[   6] mov               loc6, &lt;JSValue()&gt;(const1)
[   9] mov               loc7, arg1
[  12] is_undefined      loc8, arg1
[  15] jfalse            loc8, 80(-&gt;95)
[  18] resolve_scope     loc9, loc3, PrivateSymbol.derivedConstructor(@id0), &lt;ClosureVar&gt;, 0, 0x1077dbd60
[  25] get_from_scope    loc9, loc9, PrivateSymbol.derivedConstructor(@id0), 2051&lt;ThrowIfNotFound|ClosureVar|NotInitialization&gt;, 3    predicting None
[  33] get_by_id         loc9, loc9, __proto__(@id1)    predicting None
[  42] mov               loc10, loc5
[  45] construct         loc7, loc9, 1, 16 status(Could Take Slow Path)    predicting None
[  54] resolve_scope     loc11, loc3, this(@id2), &lt;ClosureVar&gt;, 0, 0x1077dbd60
[  61] get_from_scope    this, loc11, this(@id2), 1050627&lt;DoNotThrowIfNotFound|ClosureVar|NotInitialization&gt;, 1    predicting None
[  69] is_empty          loc11, this
[  72] jtrue             loc11, 6(-&gt;78)
[  75] throw_static_error String (atomic) (identifier): &apos;super()&apos; can&apos;t be called more than once in a constructor., ID: 4(const2), true
[  78] mov               this, loc7
[  81] resolve_scope     loc11, loc3, this(@id2), &lt;ClosureVar&gt;, 0, 0x1077dbd60
[  88] put_to_scope      loc11, this(@id2), this, 2051&lt;ThrowIfNotFound|ClosureVar|NotInitialization&gt;, &lt;structure&gt;, 1
[  95] mov               loc6, loc7
[  98] resolve_scope     loc7, loc3, PrivateSymbol.newTargetLocal(@id3), &lt;ClosureVar&gt;, 0, 0x1077dbd60
[ 105] get_from_scope    loc5, loc7, PrivateSymbol.newTargetLocal(@id3), 2051&lt;ThrowIfNotFound|ClosureVar|NotInitialization&gt;, 2    predicting None
[ 113] resolve_scope     loc10, loc3, debug(@id4), &lt;GlobalProperty&gt;, 2, 0x1077df900
[ 120] get_from_scope    loc7, loc10, debug(@id4), 2048&lt;ThrowIfNotFound|GlobalProperty|NotInitialization&gt;, 120    predicting None
[ 128] resolve_scope     loc9, loc3, abc(@id5), &lt;ClosureVar&gt;, 0, 0x1077dbd60
[ 135] get_from_scope    loc9, loc9, abc(@id5), 2051&lt;ThrowIfNotFound|ClosureVar|NotInitialization&gt;, 0    predicting None
[ 143] call              loc7, loc7, 2, 16 status(Could Take Slow Path)    Original; predicting None
[ 152] ret               Undefined(const3)
----

line [18]-resolve scope for &apos;super()&apos; and [128] resolve scope for &apos;abc&apos;, do resolve with the same scope 0x1077dbd60, but should with different scopes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191083</commentid>
    <comment_count>3</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-08 13:23:28 -0700</bug_when>
    <thetext>I&apos;ll try to make patch with fix soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191091</commentid>
    <comment_count>4</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-08 14:19:32 -0700</bug_when>
    <thetext>As for now I see that fix will be more complicated, because before idea was that we load all arrow function bound variables just after all function&apos;s arguments are prepared -&gt; after initializeDefaultParameterValuesAndSetupFunctionScopeStack, but to cover current issue we need move initialization of arrow function variable before we trying initialize default parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191255</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-09 12:36:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; As for now I see that fix will be more complicated, because before idea was
&gt; that we load all arrow function bound variables just after all function&apos;s
&gt; arguments are prepared -&gt; after
&gt; initializeDefaultParameterValuesAndSetupFunctionScopeStack, but to cover
&gt; current issue we need move initialization of arrow function variable before
&gt; we trying initialize default parameters.

This seems like the correct solution to me. We should probably write tests
also for &apos;this&apos; and &apos;arguments&apos;. Is there a good reason why
this needs to happen after we initialize default parameter values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191258</commentid>
    <comment_count>6</comment_count>
      <attachid>278425</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-09 12:38:48 -0700</bug_when>
    <thetext>Created attachment 278425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191259</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-09 12:40:17 -0700</bug_when>
    <thetext>I see we have the following comment:

    // Loading |this| inside an arrow function must be done after initializeDefaultParameterValuesAndSetupFunctionScopeStack()
    // because that function sets up the SymbolTable stack and emitLoadThisFromArrowFunctionLexicalEnvironment()
    // consults the SymbolTable stack


Is that comment correct though? I don&apos;t see why we need to consult the local symbol table stack here because we should always be doing non-local resolution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191261</commentid>
    <comment_count>8</comment_count>
      <attachid>278425</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-09 12:41:23 -0700</bug_when>
    <thetext>Comment on attachment 278425
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:574
&gt; +    m_forceLoadThisFromArrowFunctionLexicalEnvironment = false;

Why do we need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191267</commentid>
    <comment_count>9</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-09 12:46:29 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I see we have the following comment:
&gt; 
&gt;     // Loading |this| inside an arrow function must be done after
&gt; initializeDefaultParameterValuesAndSetupFunctionScopeStack()
&gt;     // because that function sets up the SymbolTable stack and
&gt; emitLoadThisFromArrowFunctionLexicalEnvironment()
&gt;     // consults the SymbolTable stack
&gt; 
&gt; 
&gt; Is that comment correct though? I don&apos;t see why we need to consult the local
&gt; symbol table stack here because we should always be doing non-local
&gt; resolution.

Oh, I&apos;ve copy pasted comments with if condition. 
I can be wrong, but if we do emitLoadThisFromArrowFunctionLexicalEnvironment before initializeDefaultParameterValuesAndSetupFunctionScopeStack, we resolved to wrong scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191275</commentid>
    <comment_count>10</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-09 12:54:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 278425 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278425&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:574
&gt; &gt; +    m_forceLoadThisFromArrowFunctionLexicalEnvironment = false;
&gt; 
&gt; Why do we need this?

There is a case: 
var f = function () { return (a=this)=&gt;{ return a; };};
var result = f.call({a:&apos;data&apos;})();

So just moving up loading &apos;this&apos; for arrow function, broke several tests and to cover snipped, we need load &apos;this&apos; twice before initializeDefaultParameterValuesAndSetupFunctionScopeStack and after. To prevent this I added parameter that allow load &apos;this&apos; from arrow function scope instead of thisRegister when we access to &apos;this&apos;. Currently I&apos;m playing with loading &apos;this&apos; to avoid using this m_forceLoadThisFromArrowFunctionLexicalEnvironment flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191585</commentid>
    <comment_count>11</comment_count>
      <attachid>278514</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-10 11:03:16 -0700</bug_when>
    <thetext>Created attachment 278514
Patch

New version of the fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192113</commentid>
    <comment_count>12</comment_count>
      <attachid>278514</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-11 15:02:29 -0700</bug_when>
    <thetext>Comment on attachment 278514
Patch

LGTM.
Can you also add tests for TDZ with super(), &apos;this&apos;, super.getter, super.setter, etc, inside default parameter expressions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192696</commentid>
    <comment_count>13</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-05-13 01:36:34 -0700</bug_when>
    <thetext>New tests added

Patch landed r200824 &lt;https://trac.webkit.org/changeset/200824&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278425</attachid>
            <date>2016-05-09 12:38:48 -0700</date>
            <delta_ts>2016-05-10 11:03:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157079-20160509223933.patch</filename>
            <type>text/plain</type>
            <size>15357</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Njk5ZTVjZjVjMDA5YmQ4ZWY3ODQwMjA2NDA0Mjc5MWVkOGJhMGMzLi5jZTRlODRlZWMzMjc4ZTRm
YjI1NmIzNzkxMWU5MmZmNzNhNzNlZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNi0wNS0wOSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBmb3Igc3VwZXIoKSBjYWxsIGlu
IGFycm93IGZ1bmN0aW9uIGRlZmF1bHQgcGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9vdCBvZiB0aGUgaXNzdWUgdGhhdCBpbiBhcnJv
dyBmdW5jdGlvbiB3ZSBsb2FkIGJvdW5kZWQgdmFyaWFibGVzIHRoaXMvc3VwZXIvbmV3LnRhcmdl
dCBqdXN0IGFmdGVyIAorICAgICAgICBpbnB1dCBwYXJhbWV0ZXJzIHdlcmUgaW5pdGlhbGl6ZWQs
IGFuZCBkaWQgbm90IGNvdmVyZWQgY2FzZSBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgCisgICAgICAg
IGZ1bmN0aW9uIHBhcmFtZXRlcnMuIAorICAgICAgICBDdXJyZW50IHBhdGNoIHRyaWVkIHRvIGZp
eCBpc3N1ZSBhbmQgYWxsb3cgdG8gbG9hZCBib3VuZGVkIHZhcmlhYmxlcyBlYXJsaWVyLCBiZWZv
cmUgdGhlIGlucHV0IAorICAgICAgICBwYXJhbWV0ZXJzIGFyZSBhc3NpZ25lZCBieSBkZWZhdWx0
IHZhbHVlcy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpmb3JjZUxvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy0yLmpzOgorICAgICAgICAoZm9v
RGVmYXVsdC5sZXQuYXJyLmJhcyk6CisgICAgICAgIChmb29EZWZhdWx0KToKKwogMjAxNi0wNS0w
OCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBF
UzY6IENsYXNzZXM6IFNob3VsZCBiZSBhbGxvd2VkIHRvIGNyZWF0ZSBhIHN0YXRpYyBtZXRob2Qg
d2l0aCBuYW1lICJhcmd1bWVudHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDhiM2E2YWE5OGJiYjE2
NjQyYTBlODQyNzY0OWQ5MmQ1ZTY5NjZlOGUuLmRmMjQ2OTY2YjcxY2VjMDZiMDY1NWY3ZTQzNTAw
ZTY3YTBmMzgzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01NTcsMjAgKzU1NywyNSBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KICAgICB9CiAKKyAgICAvLyBMb2FkaW5nIHx0aGlz
fCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lIGFmdGVyIGluaXRpYWxpemVE
ZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKQorICAgIC8v
IGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZSBTeW1ib2xUYWJsZSBzdGFjayBhbmQg
ZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQorICAgIC8v
IGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjaworICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBpZiAobV9zY29wZU5v
ZGUtPnVzZXNOZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+dXNlc1N1cGVyQ2FsbCgpKQorICAg
ICAgICAgICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9u
bWVudCgpOworICAgICAgICBtX2ZvcmNlTG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxF
bnZpcm9ubWVudCA9IHRydWU7CisgICAgfQorCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRz
IHRvIGhhcHBlbiBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0
dXBGdW5jdGlvblNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0
aW9uJ3MgZGVmYXVsdCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFy
eSByZWdpc3RlcnMuCiAgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplKTsKICAgICBpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKHBhcmFtZXRl
cnMsIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25Ob2RlLCBmdW5jdGlvblN5bWJvbFRh
YmxlLCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNhcHR1cmVzKTsKICAgICAKLSAgICAvLyBM
b2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lIGFmdGVy
IGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3Rh
Y2soKQotICAgIC8vIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZSBTeW1ib2xUYWJs
ZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKQotICAgIC8vIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjaworICAgIG1fZm9yY2VM
b2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50ID0gZmFsc2U7CisKICAg
ICBpZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUpIHsK
ICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVz
ZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5j
dGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwotICAgIAotICAgICAgICBpZiAobV9zY29wZU5vZGUt
PnVzZXNOZXdUYXJnZXQoKSB8fCBtX3Njb3BlTm9kZS0+dXNlc1N1cGVyQ2FsbCgpKQotICAgICAg
ICAgICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOwogICAgIH0KICAgICAKICAgICBpZiAobmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250
ZXh0KCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCAwOTYxZTAyNDVmMGYxODcwN2FkZDg5Y2E3YzM1MGQ4ZGY4MmQwZGE4Li4xNzgwMGE2YTA0MTEz
Yjg4ZjYxMzNkNzUzN2M4NzAxOTZlZjc5NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03MTMsNiArNzEz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENvbnRleHRU
eXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0OyB9CiAgICAgICAgIGJvb2wgaXNEZXJpdmVk
Q2xhc3NDb250ZXh0KCkgeyByZXR1cm4gbV9kZXJpdmVkQ29udGV4dFR5cGUgPT0gRGVyaXZlZENv
bnRleHRUeXBlOjpEZXJpdmVkTWV0aG9kQ29udGV4dDsgfQogICAgICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbigpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKTsgfQorICAg
ICAgICBib29sIGZvcmNlTG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpIHsgcmV0dXJuIG1fZm9yY2VMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50OyB9CiAKICAgICAgICAgZW51bSBjbGFzcyBURFpDaGVja09wdGltaXphdGlvbiB7IE9w
dGltaXplLCBEb05vdE9wdGltaXplIH07CiAgICAgICAgIGVudW0gY2xhc3MgTmVzdGVkU2NvcGVU
eXBlIHsgSXNOZXN0ZWQsIElzTm90TmVzdGVkIH07CkBAIC05NTYsNiArOTU3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9pblRhaWxQb3NpdGlvbiB7IGZhbHNlIH07CiAgICAg
ICAgIGJvb2wgbV9uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQ7CiAgICAgICAgIERl
cml2ZWRDb250ZXh0VHlwZSBtX2Rlcml2ZWRDb250ZXh0VHlwZSB7IERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSB9OworICAgICAgICBib29sIG1fZm9yY2VMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9u
TGV4aWNhbEVudmlyb25tZW50IHsgZmFsc2UgfTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZTFm
NWNhMjVjZTYwOTJhNjZlZWZkZmM4ZjQ3OGE3NWM2MjQ5MmQzNS4uYTIwYmMwOTM0MDM1Mzg3NGNh
ZDRjNGE2ZTY0MTM0MTU1OTM3MjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZ2lz
dGVySUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlm
IChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
ICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5l
cmF0b3IuaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKKyAgICBpZiAoKGdl
bmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYg
Z2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdlbmVyYXRv
ci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSB8fCBnZW5lcmF0b3IuZm9y
Y2VMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkpCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOwogCiAgICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5j
b25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9y
LmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLTIu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMtMi5qcwppbmRleCAzNzAxZmZkZmM1MmY3YjZkNDllYjkxZDNiNDk5NGIz
ZTA2OGNiYjRlLi44M2U5MGE4NmMzNGNmNWI5ZmUzOTg4MmUzYWQzZTUwODNlYTdhNjliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24t
bGV4aWNhbC1iaW5kLXRoaXMtMi5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAtNzAsNyArNzAs
MjMgQEAgZnVuY3Rpb24gZm9vKCkgewogCiB2YXIgZm9vT2JqZWN0ID0gbmV3IGZvbygpOwogCitm
dW5jdGlvbiBmb29EZWZhdWx0KCkgeworICAgIGxldCBhcnIgPSAodGhhdCA9IHRoaXMpID0+IHsK
KyAgICAgICAgdmFyIHggPSAxMjM7CisgICAgICAgIGZ1bmN0aW9uIGJhcygpIHsKKyAgICAgICAg
ICAgIHJldHVybiB4OworICAgICAgICB9OworICAgICAgICB0aGF0Ll9pZCA9ICcxMjM0NSc7Cisg
ICAgICAgIHJldHVybiBiYXMoKTsKKyAgICB9OworICAgIHRoaXMuYXJyID0gYXJyOworfTsKKwor
dmFyIGZvb0RlZmF1bHRPYmplY3QgPSBuZXcgZm9vRGVmYXVsdCgpOworCiBmb3IgKHZhciBpPTA7
IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgdGVzdENhc2UoZm9vT2JqZWN0LmFycigpID09PSAxMjMs
IHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhl
IGFycm93IGZ1bmN0aW9uICM3Iik7CiAgICAgdGVzdENhc2UoZm9vT2JqZWN0Ll9pZCA9PT0gJzEy
MzQ1JywgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVkIGluc2lkZSBv
ZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzgiKTsKKyAgICB0ZXN0Q2FzZShmb29EZWZhdWx0T2JqZWN0
LmFycigpID09PSAxMjMsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRl
ZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM3Iik7CisgICAgdGVzdENhc2UoZm9vRGVm
YXVsdE9iamVjdC5faWQgPT09ICcxMjM0NScsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4
aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM4Iik7CiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNDA0YmViOGU0YTM2YWVkZWM1NjNkMmVlN2EzZTJmMGYyZGI2Y2NhNy4uOTc1NTUzNzlhMGQ3
Njg4OTk3M2JkYzBiZjkwYzQzNTlkMzc3YjhhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2
LTA1LTA5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgorCisgICAg
ICAgIEFzc2VydGlvbiBmYWlsdXJlIGZvciBzdXBlcigpIGNhbGwgaW4gYXJyb3cgZnVuY3Rpb24g
ZGVmYXVsdCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50cy1ub24t
c3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC10aGlzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN1cGVy
Y2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3Bl
cnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QuanM6CisgICAgICAgICoganMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6CisgICAgICAgICog
anMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpzOgorICAgICAgICAqIGpz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6CisKIDIwMTYtMDUt
MDggIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAg
RVM2OiBDbGFzc2VzOiBTaG91bGQgYmUgYWxsb3dlZCB0byBjcmVhdGUgYSBzdGF0aWMgbWV0aG9k
IHdpdGggbmFtZSAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dm
dW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1z
dHJpY3QtZXhwZWN0ZWQudHh0CmluZGV4IDcwYjI2ZjY5NjZlMDZjY2RjYTkxOGRjYmY1NDQxMTI4
YmMxNzkxZjguLmI3Nzc5NDRmMmI3OWMwOGNlNjNiMzE3MjAzNDIwZGY5ODBiZmU5MDAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50
cy1ub24tc3RyaWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC1leHBlY3RlZC50eHQKQEAgLTIy
LDYgKzIyLDcgQEAgUEFTUyB0ZXN0KCkgaXMgNDAwMDAKIFBBU1MgZm9vKDEwLCAxMSwgMTIpLm5l
eHQoKS52YWx1ZSgpWzBdIGlzIDEwCiBQQVNTIGZvbygxMCwgMTEsIDEyKS5uZXh0KCkudmFsdWUo
KVsxXSBpcyAxMQogUEFTUyBmb28oMTAsIDExLCAxMikubmV4dCgpLnZhbHVlKClbMl0gaXMgMTIK
K1BBU1MgKGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiAoYSA9IGFyZ3VtZW50cykgPT4ge3Jl
dHVybiBhO307IH0pKCcxLTEnLCAnMi0yJywgJzMtMycpKClbMV0gaXMgJzItMicKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVk
LnR4dAppbmRleCBmNWE3MDM4OTBiODY3MGQ1Y2I5ODJmYjkyZWE0YzU0NjczNjkzMTNjLi5lNzJm
ODQwMTlmM2Y1ZTg3MDBkOWE4ZjE2M2RkNWE0YjUyNjhmMWMzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVk
LnR4dApAQCAtMTksNyArMTksOCBAQCBQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMnKSBpcyAicmln
aHQtdGhpcyIKIFBBU1MgYXJyb3dXaXRoRXZhbC5mdW5jKCkgaXMgIm5ldy12YWx1ZSIKIFBBU1Mg
Zm9vT2JqZWN0LmFycigpIGlzIGludGVybmFsX3ZhbHVlXzEKIFBBU1MgZm9vT2JqZWN0Ll9pZCBp
cyBpbnRlcm5hbF92YWx1ZV8yCi1QQVNTIGJvby5jYWxsKG8xKSBpcyBvMQorUEFTUyBib28uY2Fs
bChleHBlY3RlZCkgaXMgZXhwZWN0ZWQKK1BBU1MgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIChhID0g
dGhpcyk9PntyZXR1cm4gYTt9OyB9KS5jYWxsKGV4cGVjdGVkKSgpIGlzIGV4cGVjdGVkCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4cGVjdGVkLnR4dAppbmRleCA4
YTM5YzM3YTJmYjY2ZjQ2ZGVlYTA1NjU1MzgwOWFmODdkMjlmZjk5Li5iMzRhNzFmMWQ0YjY2NjY4
MGYxMDAwZDc4N2NlMjYwYzU4YTNmNzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJv
d2Z1bmN0aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJy
b3dmdW5jdGlvbi1zdXBlcmNhbGwtZXhwZWN0ZWQudHh0CkBAIC0yMSw2ICsyMSw3IEBAIFBBU1Mg
aW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9m
KCdQYXJlbnRDbGFzcycsIGluCiBQQVNTIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3RhY2tFcnJvciA+
IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnLCBpbmRleE9mbmVzdGVkQXJy
b3dJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEgaXMgdHJ1ZQogUEFTUyBpbmRleE9mYXJyb3dJbkNo
aWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ2Fy
cm93SW5DaGlsZENvbnN0cnVjdG9yJywgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0cnVjdG9ySW5T
dGFja0Vycm9yICsgMSkgPT09IC0xIGlzIHRydWUKIFBBU1MgaW5kZXhPZkNoaWxkQ2xhc3NJblN0
YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xhc3MnLCBpbmRleE9m
Q2hpbGRDbGFzc0luU3RhY2tFcnJvciArIDEpID09PSAtMSBpcyB0cnVlCitQQVNTIChuZXcgY2xh
c3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCkpPT57fSkoKSB9IH0p
LmlkIGlzIHZhbHVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9w
ZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJv
cGVydHktZXhwZWN0ZWQudHh0CmluZGV4IDlhY2I3ZWY2NGNmZjBkZjExMGVmNmI1YTVlN2M5NGUx
M2E1ZWFkZjEuLmY3MmFjMjZkYjFiOTZmYTUxOGZlOTIzN2MwNjY1NmNjYzI4MmRkZDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LWV4
cGVjdGVkLnR4dApAQCAtMTIsNiArMTIsOCBAQCBQQVNTIGYucHJvcCBpcyBleHBlY3RlZFZhbHVl
ICsgIi0iICsgIm5ldy12YWx1ZSIKIFBBU1MgKG5ldyBGKCkpLmdldFBhcmVudFZhbHVlKCkgaXMg
ZXhwZWN0ZWRWYWx1ZQogUEFTUyAobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWUoKS5uZXh0KCku
dmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyAobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWVE
ZWVwQXJyb3coKS5uZXh0KCkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAobmV3IGNsYXNz
IGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlcigpLCBiID0gc3VwZXIuZ2V0
VmFsdWUoKSk9PnsgdGhpcy5pZCA9IGI7IH0pKCkgfSB9KS5pZCBpcyBleHBlY3RlZFZhbHVlCitQ
QVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCks
IGIgPSBuZXcudGFyZ2V0KT0+eyB0aGlzLm5ld1RhcmdldCA9IGI7IH0pKCk7IGV4cGVjdGVkTmV3
VGFyZ2V0ID0gbmV3LnRhcmdldDt9IH0pLm5ld1RhcmdldCBpcyBleHBlY3RlZE5ld1RhcmdldAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtYXJndW1lbnRzLW5vbi1zdHJpY3QuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QuanMKaW5kZXgg
MmE3ZTc2ODI3NjU3MjY1ZTc4NGIxNGMwNDhkMGE5OWRkY2JiNTNiMS4uYTE0NTJkODA4YzNjYTQy
ZWMxZDEzZjJhZmRlZWNiZWNhY2YyMTFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50cy1ub24tc3RyaWN0
LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC5qcwpAQCAtMTQ1LDUgKzE0NSw2IEBAIGZvbygx
MCwgMTEsIDEyKS5uZXh0KCkudmFsdWUoKVswXTsKIHNob3VsZEJlKCJmb28oMTAsIDExLCAxMiku
bmV4dCgpLnZhbHVlKClbMF0iLCAiMTAiKTsKIHNob3VsZEJlKCJmb28oMTAsIDExLCAxMikubmV4
dCgpLnZhbHVlKClbMV0iLCAiMTEiKTsKIHNob3VsZEJlKCJmb28oMTAsIDExLCAxMikubmV4dCgp
LnZhbHVlKClbMl0iLCAiMTIiKTsKK3Nob3VsZEJlKCIoZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0
dXJuIChhID0gYXJndW1lbnRzKSA9PiB7cmV0dXJuIGE7fTsgfSkoJzEtMScsICcyLTInLCAnMy0z
JykoKVsxXSIsICInMi0yJyIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWxleGlj
YWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tbGV4aWNhbC1iaW5kLXRoaXMuanMKaW5kZXggYjY0MzFlNjEzM2ZiMDIzN2Y5NTZmZmE0MDEw
ZmZjODU1NmIyZTg5OS4uMDI1MDc1MWI0NWYyMTI1ZWE4ZjdmYjMxMzJjNzc0Y2I1ZTgxMTY5OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLXRoaXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTEwNyw4ICsxMDcsOSBAQCBmdW5jdGlv
biBib28oKSB7CiAgICAgcmV0dXJuIGFycigpOwogfQogCi1sZXQgbzEgPSB7J3RoaXMnOiAyMH07
CitsZXQgZXhwZWN0ZWQgPSB7J3RoaXMnOiAyMH07CiAKLXNob3VsZEJlKCdib28uY2FsbChvMSkn
LCAnbzEnKTsKK3Nob3VsZEJlKCdib28uY2FsbChleHBlY3RlZCknLCAnZXhwZWN0ZWQnKTsKK3No
b3VsZEJlKCcoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGEgPSB0aGlzKT0+e3JldHVybiBhO307IH0p
LmNhbGwoZXhwZWN0ZWQpKCknLCAnZXhwZWN0ZWQnKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zdXBlcmNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dm
dW5jdGlvbi1zdXBlcmNhbGwuanMKaW5kZXggMmNlZjYwOTdhNGVlYzU1NjcyMTM3OGNkZTMyZDJm
NjY1MjA1YzIwMS4uYTNiMDE0YWUwY2Q0ZjYzOWVmNDAwNDg1YTdiOTlhZDliMzc4ZTVmOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJj
YWxsLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1
cGVyY2FsbC5qcwpAQCAtMTQ4LDQgKzE0OCw1IEBAIHNob3VsZEJlVHJ1ZSgiaW5kZXhPZm5lc3Rl
ZEFycm93SW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCduZXN0ZWRBCiBz
aG91bGRCZVRydWUoImluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3RhY2tFcnJvciA+
IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignYXJyb3dJbkNoaWxkQ29uc3RydWN0b3InLCBpbmRl
eE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEiKTsKIHNo
b3VsZEJlVHJ1ZSgiaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0
YWNrLmluZGV4T2YoJ0NoaWxkQ2xhc3MnLCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciAr
IDEpID09PSAtMSIpOwogCitzaG91bGRCZSgiKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1
Y3RvcigpIHsgKChhID0gc3VwZXIoKSk9Pnt9KSgpIH0gfSkuaWQiLCAidmFsdWUiKTsKIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKaW5kZXggN2U3MmNh
YTdiYmZjYWI2Y2I5YWIyZDE2MGUzYzA1YzI3YmExYWQ1ZC4uMGMzMjAyNjQ1MmRhNjJiOTNlNmY2
YmQwNmNjMmZmMTZmNDkxZjM1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCkBAIC05Miw1ICs5Miw4
IEBAIHNob3VsZEJlKCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBlY3RlZFZhbHVl
Jyk7CiAKIHNob3VsZEJlKCcobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWUoKS5uZXh0KCkudmFs
dWUnLCAnZXhwZWN0ZWRWYWx1ZScpOwogc2hvdWxkQmUoJyhuZXcgRigpKS5nZW5HZXRQYXJlbnRW
YWx1ZURlZXBBcnJvdygpLm5leHQoKS52YWx1ZScsICdleHBlY3RlZFZhbHVlJyk7CitzaG91bGRC
ZSgnKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSwg
YiA9IHN1cGVyLmdldFZhbHVlKCkpPT57IHRoaXMuaWQgPSBiOyB9KSgpIH0gfSkuaWQnLCAnZXhw
ZWN0ZWRWYWx1ZScpOwordmFyIGV4cGVjdGVkTmV3VGFyZ2V0Oworc2hvdWxkQmUoJyhuZXcgY2xh
c3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCksIGIgPSBuZXcudGFy
Z2V0KT0+eyB0aGlzLm5ld1RhcmdldCA9IGI7IH0pKCk7IGV4cGVjdGVkTmV3VGFyZ2V0ID0gbmV3
LnRhcmdldDt9IH0pLm5ld1RhcmdldCcsICdleHBlY3RlZE5ld1RhcmdldCcpOwogCiB2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278514</attachid>
            <date>2016-05-10 11:03:16 -0700</date>
            <delta_ts>2016-05-11 15:02:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157079-20160510210402.patch</filename>
            <type>text/plain</type>
            <size>12858</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
Njk5ZTVjZjVjMDA5YmQ4ZWY3ODQwMjA2NDA0Mjc5MWVkOGJhMGMzLi4zMjJjMWYyZDA2YTI3ZTc2
Yzg5ZmU4ZjRmMjM1NzFjZDU4MGEyMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wNS0wOSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBmb3Igc3VwZXIoKSBjYWxsIGlu
IGFycm93IGZ1bmN0aW9uIGRlZmF1bHQgcGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUm9vdCBvZiB0aGUgaXNzdWUgdGhhdCBpbiBhcnJv
dyBmdW5jdGlvbiB3ZSBsb2FkIGJvdW5kZWQgdmFyaWFibGVzIHRoaXMvc3VwZXIvbmV3LnRhcmdl
dCBqdXN0IGFmdGVyIAorICAgICAgICBpbnB1dCBwYXJhbWV0ZXJzIHdlcmUgaW5pdGlhbGl6ZWQs
IGFuZCBkaWQgbm90IGNvdmVyZWQgY2FzZSBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgCisgICAgICAg
IGZ1bmN0aW9uIHBhcmFtZXRlcnMuIAorICAgICAgICBDdXJyZW50IHBhdGNoIHRyaWVkIHRvIGZp
eCBpc3N1ZSBhbmQgYWxsb3cgdG8gbG9hZCBib3VuZGVkIHZhcmlhYmxlcyBlYXJsaWVyLCBiZWZv
cmUgdGhlIGlucHV0IAorICAgICAgICBwYXJhbWV0ZXJzIGFyZSBhc3NpZ25lZCBieSBkZWZhdWx0
IHZhbHVlcy4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5q
czoKKwogMjAxNi0wNS0wOCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KIAogICAgICAgICBFUzY6IENsYXNzZXM6IFNob3VsZCBiZSBhbGxvd2VkIHRvIGNyZWF0ZSBh
IHN0YXRpYyBtZXRob2Qgd2l0aCBuYW1lICJhcmd1bWVudHMiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDhiM2E2YWE5OGJiYjE2NjQyYTBlODQyNzY0OWQ5MmQ1ZTY5NjZlOGUuLjExYTlmMjExOGU5OTc4
OGNlOWE2NjRmMzFlYzIyZDhjMmI4NjExNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01NTcsMTUg
KzU1NywyNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIH0KICAgICB9CiAKKyAgICAv
LyBXZSBuZWVkIGxvYWQgfHN1cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3Jl
IGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3Rh
Y2sKKyAgICAvLyBpZiB3ZSBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1
c2UgfHN1cGVyfCAmIHx0aGlzfCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKKyAgICBpZiAoU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxl
UGFyYW1ldGVyTGlzdCkgeworICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8
IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSkKKyAgICAgICAgICAgIGVtaXRMb2Fk
VGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CisKKyAgICAgICAgaWYg
KG1fc2NvcGVOb2RlLT51c2VzTmV3VGFyZ2V0KCkgfHwgbV9zY29wZU5vZGUtPnVzZXNTdXBlckNh
bGwoKSkKKyAgICAgICAgICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhp
Y2FsRW52aXJvbm1lbnQoKTsKKyAgICB9CisKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMg
dG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1
cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rp
b24ncyBkZWZhdWx0IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5
IHJlZ2lzdGVycy4KICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxl
cywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUpOwogICAgIGluaXRpYWxpemVE
ZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2socGFyYW1ldGVy
cywgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFi
bGUsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMpOwogICAgIAotICAgIC8vIExv
YWRpbmcgfHRoaXN8IGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUgYWZ0ZXIg
aW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFj
aygpCi0gICAgLy8gYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHNldHMgdXAgdGhlIFN5bWJvbFRhYmxl
IHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpCi0gICAgLy8gY29uc3VsdHMgdGhlIFN5bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgLy8gSWYg
d2UgZG9uJ3QgaGF2ZSAgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbiwgdGhlbiBsb2FkaW5n
IHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lCisgICAgLy8gYWZ0
ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVT
dGFjaygpIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZQorICAgIC8vIFN5bWJvbFRh
YmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9u
bWVudCgpIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjaworICAgIGlmIChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiBpc1NpbXBsZVBhcmFtZXRl
ckxpc3QpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5jdGlv
bk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRoaXNGcm9t
QXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmlu
ZC10aGlzLTIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwppbmRleCAzNzAxZmZkZmM1MmY3YjZkNDllYjkx
ZDNiNDk5NGIzZTA2OGNiYjRlLi44M2U5MGE4NmMzNGNmNWI5ZmUzOTg4MmUzYWQzZTUwODNlYTdh
NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93
ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtMi5qcwpAQCAt
NzAsNyArNzAsMjMgQEAgZnVuY3Rpb24gZm9vKCkgewogCiB2YXIgZm9vT2JqZWN0ID0gbmV3IGZv
bygpOwogCitmdW5jdGlvbiBmb29EZWZhdWx0KCkgeworICAgIGxldCBhcnIgPSAodGhhdCA9IHRo
aXMpID0+IHsKKyAgICAgICAgdmFyIHggPSAxMjM7CisgICAgICAgIGZ1bmN0aW9uIGJhcygpIHsK
KyAgICAgICAgICAgIHJldHVybiB4OworICAgICAgICB9OworICAgICAgICB0aGF0Ll9pZCA9ICcx
MjM0NSc7CisgICAgICAgIHJldHVybiBiYXMoKTsKKyAgICB9OworICAgIHRoaXMuYXJyID0gYXJy
OworfTsKKwordmFyIGZvb0RlZmF1bHRPYmplY3QgPSBuZXcgZm9vRGVmYXVsdCgpOworCiBmb3Ig
KHZhciBpPTA7IGkgPCAxMDAwMDsgaSsrKSB7CiAgICAgdGVzdENhc2UoZm9vT2JqZWN0LmFycigp
ID09PSAxMjMsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNp
ZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM3Iik7CiAgICAgdGVzdENhc2UoZm9vT2JqZWN0Ll9p
ZCA9PT0gJzEyMzQ1JywgdHJ1ZSwgIkVycm9yOiB0aGlzIGlzIG5vdCBsZXhpY2FsbHkgYmluZGVk
IGluc2lkZSBvZiB0aGUgYXJyb3cgZnVuY3Rpb24gIzgiKTsKKyAgICB0ZXN0Q2FzZShmb29EZWZh
dWx0T2JqZWN0LmFycigpID09PSAxMjMsIHRydWUsICJFcnJvcjogdGhpcyBpcyBub3QgbGV4aWNh
bGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM3Iik7CisgICAgdGVzdENh
c2UoZm9vRGVmYXVsdE9iamVjdC5faWQgPT09ICcxMjM0NScsIHRydWUsICJFcnJvcjogdGhpcyBp
cyBub3QgbGV4aWNhbGx5IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM4Iik7
CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNDA0YmViOGU0YTM2YWVkZWM1NjNkMmVlN2EzZTJmMGYyZGI2Y2NhNy4uOTc1
NTUzNzlhMGQ3Njg4OTk3M2JkYzBiZjkwYzQzNTlkMzc3YjhhNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE2LTA1LTA5ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29t
PgorCisgICAgICAgIEFzc2VydGlvbiBmYWlsdXJlIGZvciBzdXBlcigpIGNhbGwgaW4gYXJyb3cg
ZnVuY3Rpb24gZGVmYXVsdCBwYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3Vt
ZW50cy1ub24tc3RyaWN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9u
LWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0
aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvYXJyb3dmdW5jdGlvbi1z
dXBlcnByb3BlcnR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJy
b3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QuanM6CisgICAgICAg
ICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanM6Cisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLmpzOgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanM6CisK
IDIwMTYtMDUtMDggIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAK
ICAgICAgICAgRVM2OiBDbGFzc2VzOiBTaG91bGQgYmUgYWxsb3dlZCB0byBjcmVhdGUgYSBzdGF0
aWMgbWV0aG9kIHdpdGggbmFtZSAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1l
bnRzLW5vbi1zdHJpY3QtZXhwZWN0ZWQudHh0CmluZGV4IDcwYjI2ZjY5NjZlMDZjY2RjYTkxOGRj
YmY1NDQxMTI4YmMxNzkxZjguLmI3Nzc5NDRmMmI3OWMwOGNlNjNiMzE3MjAzNDIwZGY5ODBiZmU5
MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5k
LWFyZ3VtZW50cy1ub24tc3RyaWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9h
cnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC1leHBlY3RlZC50
eHQKQEAgLTIyLDYgKzIyLDcgQEAgUEFTUyB0ZXN0KCkgaXMgNDAwMDAKIFBBU1MgZm9vKDEwLCAx
MSwgMTIpLm5leHQoKS52YWx1ZSgpWzBdIGlzIDEwCiBQQVNTIGZvbygxMCwgMTEsIDEyKS5uZXh0
KCkudmFsdWUoKVsxXSBpcyAxMQogUEFTUyBmb28oMTAsIDExLCAxMikubmV4dCgpLnZhbHVlKClb
Ml0gaXMgMTIKK1BBU1MgKGZ1bmN0aW9uIChhLCBiLCBjKSB7IHJldHVybiAoYSA9IGFyZ3VtZW50
cykgPT4ge3JldHVybiBhO307IH0pKCcxLTEnLCAnMi0yJywgJzMtMycpKClbMV0gaXMgJzItMicK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtdGhpcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LWV4cGVjdGVkLnR4dAppbmRleCBmNWE3MDM4OTBiODY3MGQ1Y2I5ODJmYjkyZWE0YzU0NjczNjkz
MTNjLi5lNzJmODQwMTlmM2Y1ZTg3MDBkOWE4ZjE2M2RkNWE0YjUyNjhmMWMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC10aGlz
LWV4cGVjdGVkLnR4dApAQCAtMTksNyArMTksOCBAQCBQQVNTIGhvc3RPYmouZnVuYygnLXRoaXMn
KSBpcyAicmlnaHQtdGhpcyIKIFBBU1MgYXJyb3dXaXRoRXZhbC5mdW5jKCkgaXMgIm5ldy12YWx1
ZSIKIFBBU1MgZm9vT2JqZWN0LmFycigpIGlzIGludGVybmFsX3ZhbHVlXzEKIFBBU1MgZm9vT2Jq
ZWN0Ll9pZCBpcyBpbnRlcm5hbF92YWx1ZV8yCi1QQVNTIGJvby5jYWxsKG8xKSBpcyBvMQorUEFT
UyBib28uY2FsbChleHBlY3RlZCkgaXMgZXhwZWN0ZWQKK1BBU1MgKGZ1bmN0aW9uICgpIHsgcmV0
dXJuIChhID0gdGhpcyk9PntyZXR1cm4gYTt9OyB9KS5jYWxsKGV4cGVjdGVkKSgpIGlzIGV4cGVj
dGVkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJjYWxsLWV4cGVjdGVkLnR4
dAppbmRleCA4YTM5YzM3YTJmYjY2ZjQ2ZGVlYTA1NjU1MzgwOWFmODdkMjlmZjk5Li5iMzRhNzFm
MWQ0YjY2NjY4MGYxMDAwZDc4N2NlMjYwYzU4YTNmNzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9hcnJvd2Z1bmN0aW9uLXN1cGVyY2FsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwtZXhwZWN0ZWQudHh0CkBAIC0yMSw2ICsyMSw3
IEBAIFBBU1MgaW5kZXhPZlBhcmVudENsYXNzSW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFj
ay5pbmRleE9mKCdQYXJlbnRDbGFzcycsIGluCiBQQVNTIGluZGV4T2ZuZXN0ZWRBcnJvd0luU3Rh
Y2tFcnJvciA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignbmVzdGVkQXJyb3cnLCBpbmRleE9m
bmVzdGVkQXJyb3dJblN0YWNrRXJyb3IgKyAxKSA9PT0gLTEgaXMgdHJ1ZQogUEFTUyBpbmRleE9m
YXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmlu
ZGV4T2YoJ2Fycm93SW5DaGlsZENvbnN0cnVjdG9yJywgaW5kZXhPZmFycm93SW5DaGlsZENvbnN0
cnVjdG9ySW5TdGFja0Vycm9yICsgMSkgPT09IC0xIGlzIHRydWUKIFBBU1MgaW5kZXhPZkNoaWxk
Q2xhc3NJblN0YWNrRXJyb3IgPiAtMSAmJiBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xhc3Mn
LCBpbmRleE9mQ2hpbGRDbGFzc0luU3RhY2tFcnJvciArIDEpID09PSAtMSBpcyB0cnVlCitQQVNT
IChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCkpPT57
fSkoKSB9IH0pLmlkIGlzIHZhbHVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3VwZXJwcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXN1cGVycHJvcGVydHktZXhwZWN0ZWQudHh0CmluZGV4IDlhY2I3ZWY2NGNmZjBkZjExMGVmNmI1
YTVlN2M5NGUxM2E1ZWFkZjEuLmY3MmFjMjZkYjFiOTZmYTUxOGZlOTIzN2MwNjY1NmNjYzI4MmRk
ZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zdXBlcnBy
b3BlcnR5LWV4cGVjdGVkLnR4dApAQCAtMTIsNiArMTIsOCBAQCBQQVNTIGYucHJvcCBpcyBleHBl
Y3RlZFZhbHVlICsgIi0iICsgIm5ldy12YWx1ZSIKIFBBU1MgKG5ldyBGKCkpLmdldFBhcmVudFZh
bHVlKCkgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyAobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWUo
KS5uZXh0KCkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQogUEFTUyAobmV3IEYoKSkuZ2VuR2V0UGFy
ZW50VmFsdWVEZWVwQXJyb3coKS5uZXh0KCkudmFsdWUgaXMgZXhwZWN0ZWRWYWx1ZQorUEFTUyAo
bmV3IGNsYXNzIGV4dGVuZHMgQSB7IGNvbnN0cnVjdG9yKCkgeyAoKGEgPSBzdXBlcigpLCBiID0g
c3VwZXIuZ2V0VmFsdWUoKSk9PnsgdGhpcy5pZCA9IGI7IH0pKCkgfSB9KS5pZCBpcyBleHBlY3Rl
ZFZhbHVlCitQQVNTIChuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9
IHN1cGVyKCksIGIgPSBuZXcudGFyZ2V0KT0+eyB0aGlzLm5ld1RhcmdldCA9IGI7IH0pKCk7IGV4
cGVjdGVkTmV3VGFyZ2V0ID0gbmV3LnRhcmdldDt9IH0pLm5ld1RhcmdldCBpcyBleHBlY3RlZE5l
d1RhcmdldAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3Qu
anMKaW5kZXggMmE3ZTc2ODI3NjU3MjY1ZTc4NGIxNGMwNDhkMGE5OWRkY2JiNTNiMS4uYTE0NTJk
ODA4YzNjYTQyZWMxZDEzZjJhZmRlZWNiZWNhY2YyMTFmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50cy1u
b24tc3RyaWN0LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC5qcwpAQCAtMTQ1LDUgKzE0NSw2
IEBAIGZvbygxMCwgMTEsIDEyKS5uZXh0KCkudmFsdWUoKVswXTsKIHNob3VsZEJlKCJmb28oMTAs
IDExLCAxMikubmV4dCgpLnZhbHVlKClbMF0iLCAiMTAiKTsKIHNob3VsZEJlKCJmb28oMTAsIDEx
LCAxMikubmV4dCgpLnZhbHVlKClbMV0iLCAiMTEiKTsKIHNob3VsZEJlKCJmb28oMTAsIDExLCAx
MikubmV4dCgpLnZhbHVlKClbMl0iLCAiMTIiKTsKK3Nob3VsZEJlKCIoZnVuY3Rpb24gKGEsIGIs
IGMpIHsgcmV0dXJuIChhID0gYXJndW1lbnRzKSA9PiB7cmV0dXJuIGE7fTsgfSkoJzEtMScsICcy
LTInLCAnMy0zJykoKVsxXSIsICInMi0yJyIpOwogCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLWxleGljYWwtYmluZC10aGlzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKaW5kZXggYjY0MzFlNjEzM2ZiMDIzN2Y5
NTZmZmE0MDEwZmZjODU1NmIyZTg5OS4uMDI1MDc1MWI0NWYyMTI1ZWE4ZjdmYjMxMzJjNzc0Y2I1
ZTgxMTY5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMuanMKQEAgLTEwNyw4ICsxMDcsOSBA
QCBmdW5jdGlvbiBib28oKSB7CiAgICAgcmV0dXJuIGFycigpOwogfQogCi1sZXQgbzEgPSB7J3Ro
aXMnOiAyMH07CitsZXQgZXhwZWN0ZWQgPSB7J3RoaXMnOiAyMH07CiAKLXNob3VsZEJlKCdib28u
Y2FsbChvMSknLCAnbzEnKTsKK3Nob3VsZEJlKCdib28uY2FsbChleHBlY3RlZCknLCAnZXhwZWN0
ZWQnKTsKK3Nob3VsZEJlKCcoZnVuY3Rpb24gKCkgeyByZXR1cm4gKGEgPSB0aGlzKT0+e3JldHVy
biBhO307IH0pLmNhbGwoZXhwZWN0ZWQpKCknLCAnZXhwZWN0ZWQnKTsKIAogdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvYXJyb3dmdW5jdGlvbi1zdXBlcmNhbGwuanMKaW5kZXggMmNlZjYwOTdhNGVlYzU1NjcyMTM3
OGNkZTMyZDJmNjY1MjA1YzIwMS4uYTNiMDE0YWUwY2Q0ZjYzOWVmNDAwNDg1YTdiOTlhZDliMzc4
ZTVmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rp
b24tc3VwZXJjYWxsLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN1cGVyY2FsbC5qcwpAQCAtMTQ4LDQgKzE0OCw1IEBAIHNob3VsZEJlVHJ1ZSgiaW5k
ZXhPZm5lc3RlZEFycm93SW5TdGFja0Vycm9yID4gLTEgJiYgZXJyb3JTdGFjay5pbmRleE9mKCdu
ZXN0ZWRBCiBzaG91bGRCZVRydWUoImluZGV4T2ZhcnJvd0luQ2hpbGRDb25zdHJ1Y3RvckluU3Rh
Y2tFcnJvciA+IC0xICYmIGVycm9yU3RhY2suaW5kZXhPZignYXJyb3dJbkNoaWxkQ29uc3RydWN0
b3InLCBpbmRleE9mYXJyb3dJbkNoaWxkQ29uc3RydWN0b3JJblN0YWNrRXJyb3IgKyAxKSA9PT0g
LTEiKTsKIHNob3VsZEJlVHJ1ZSgiaW5kZXhPZkNoaWxkQ2xhc3NJblN0YWNrRXJyb3IgPiAtMSAm
JiBlcnJvclN0YWNrLmluZGV4T2YoJ0NoaWxkQ2xhc3MnLCBpbmRleE9mQ2hpbGRDbGFzc0luU3Rh
Y2tFcnJvciArIDEpID09PSAtMSIpOwogCitzaG91bGRCZSgiKG5ldyBjbGFzcyBleHRlbmRzIEEg
eyBjb25zdHJ1Y3RvcigpIHsgKChhID0gc3VwZXIoKSk9Pnt9KSgpIH0gfSkuaWQiLCAidmFsdWUi
KTsKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN1cGVycHJvcGVydHkuanMKaW5k
ZXggN2U3MmNhYTdiYmZjYWI2Y2I5YWIyZDE2MGUzYzA1YzI3YmExYWQ1ZC4uMGMzMjAyNjQ1MmRh
NjJiOTNlNmY2YmQwNmNjMmZmMTZmNDkxZjM1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3VwZXJwcm9wZXJ0eS5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zdXBlcnByb3BlcnR5LmpzCkBAIC05
Miw1ICs5Miw4IEBAIHNob3VsZEJlKCcobmV3IEYoKSkuZ2V0UGFyZW50VmFsdWUoKScsICdleHBl
Y3RlZFZhbHVlJyk7CiAKIHNob3VsZEJlKCcobmV3IEYoKSkuZ2VuR2V0UGFyZW50VmFsdWUoKS5u
ZXh0KCkudmFsdWUnLCAnZXhwZWN0ZWRWYWx1ZScpOwogc2hvdWxkQmUoJyhuZXcgRigpKS5nZW5H
ZXRQYXJlbnRWYWx1ZURlZXBBcnJvdygpLm5leHQoKS52YWx1ZScsICdleHBlY3RlZFZhbHVlJyk7
CitzaG91bGRCZSgnKG5ldyBjbGFzcyBleHRlbmRzIEEgeyBjb25zdHJ1Y3RvcigpIHsgKChhID0g
c3VwZXIoKSwgYiA9IHN1cGVyLmdldFZhbHVlKCkpPT57IHRoaXMuaWQgPSBiOyB9KSgpIH0gfSku
aWQnLCAnZXhwZWN0ZWRWYWx1ZScpOwordmFyIGV4cGVjdGVkTmV3VGFyZ2V0Oworc2hvdWxkQmUo
JyhuZXcgY2xhc3MgZXh0ZW5kcyBBIHsgY29uc3RydWN0b3IoKSB7ICgoYSA9IHN1cGVyKCksIGIg
PSBuZXcudGFyZ2V0KT0+eyB0aGlzLm5ld1RhcmdldCA9IGI7IH0pKCk7IGV4cGVjdGVkTmV3VGFy
Z2V0ID0gbmV3LnRhcmdldDt9IH0pLm5ld1RhcmdldCcsICdleHBlY3RlZE5ld1RhcmdldCcpOwog
CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="302605"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>