<?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>153065</bug_id>
          
          <creation_ts>2016-01-13 09:06:18 -0800</creation_ts>
          <short_desc>[JSC] Legalize Memory Offsets for ARM64 before lowering to Air</short_desc>
          <delta_ts>2016-01-19 06:08:50 -0800</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>
          <dependson>153075</dependson>
    
    <dependson>153232</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1155086</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 09:06:18 -0800</bug_when>
    <thetext>[JSC] Legalize Memory Offsets for ARM64 before lowering to Air</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155091</commentid>
    <comment_count>1</comment_count>
      <attachid>268870</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 09:10:24 -0800</bug_when>
    <thetext>Created attachment 268870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155093</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 09:12:00 -0800</bug_when>
    <thetext>Attachment 268870 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:154:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:169:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155097</commentid>
    <comment_count>3</comment_count>
      <attachid>268870</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-01-13 09:30:25 -0800</bug_when>
    <thetext>Comment on attachment 268870
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        There are two available addressing: signed 9bits and unsigne scaled 12bits.

typo: &quot;unsigne&quot; ==&gt; &quot;unsigned&quot;.

&gt; Source/JavaScriptCore/b3/B3LegalizeMemoryOffsets.h:36
&gt; +// compute it explicitely.

typo: &quot;explicitely&quot; ==&gt; &quot;explicitly&quot;.

&gt; Source/JavaScriptCore/b3/testb3.cpp:171
&gt; +void testLoadWithOffsetImpl(int32_t offset64, int32_t offset32)
&gt; +{
&gt; +    {
&gt; +        Procedure proc;
&gt; +        BasicBlock* root = proc.addBlock();
&gt; +        int64_t x = -42;
&gt; +        Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), GPRInfo::argumentGPR0);
&gt; +        root-&gt;appendNew&lt;ControlValue&gt;(
&gt; +            proc, Return, Origin(),
&gt; +            root-&gt;appendNew&lt;MemoryValue&gt;(
&gt; +                proc, Load, Int64, Origin(),
&gt; +                base,
&gt; +                offset64));
&gt; +
&gt; +        char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset64;
&gt; +        CHECK(compileAndRun&lt;int64_t&gt;(proc, address) == -42);
&gt; +    }
&gt; +    {
&gt; +        Procedure proc;
&gt; +        BasicBlock* root = proc.addBlock();
&gt; +        int32_t x = -42;
&gt; +        Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), GPRInfo::argumentGPR0);
&gt; +        root-&gt;appendNew&lt;ControlValue&gt;(
&gt; +            proc, Return, Origin(),
&gt; +            root-&gt;appendNew&lt;MemoryValue&gt;(
&gt; +                proc, Load, Int32, Origin(),
&gt; +                base,
&gt; +                offset32));
&gt; +
&gt; +        char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset32;
&gt; +        CHECK(compileAndRun&lt;int32_t&gt;(proc, address) == -42);
&gt; +    }
&gt; +}

nit: the 64-bit and 32-bit sections are almost identical except for some type and variable differences.  Would it be better to templatize the common form and express these 2 sections as 2 instantiations of the template?  Something like:

template &lt;typename T, B3::Type b3Type&gt;
void testLoadWithOffsetImpl(int32_t offset)
{
       Procedure proc;
       BasicBlock* root = proc.addBlock();
       T x = -42;
       Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), GPRInfo::argumentGPR0);
       root-&gt;appendNew&lt;ControlValue&gt;(
           proc, Return, Origin(),
           root-&gt;appendNew&lt;MemoryValue&gt;(
               proc, Load, b3Type, Origin(),
               base,
               offset));

       char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset;
       CHECK(compileAndRun&lt;T&gt;(proc, address) == -42);
}

void testLoadWithOffsetImpl(int32_t offset64, int32_t offset32)
{
    testLoadWithOffsetImpl&lt;int64_t, Int64&gt;(offset64);
    testLoadWithOffsetImpl&lt;int32_t, Int32&gt;(offset32);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155098</commentid>
    <comment_count>4</comment_count>
      <attachid>268870</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-13 09:30:34 -0800</bug_when>
    <thetext>Comment on attachment 268870
Patch

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155099</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-13 09:31:09 -0800</bug_when>
    <thetext>R=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155100</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-13 09:34:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 268870 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268870&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        There are two available addressing: signed 9bits and unsigne scaled 12bits.
&gt; 
&gt; typo: &quot;unsigne&quot; ==&gt; &quot;unsigned&quot;.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3LegalizeMemoryOffsets.h:36
&gt; &gt; +// compute it explicitely.
&gt; 
&gt; typo: &quot;explicitely&quot; ==&gt; &quot;explicitly&quot;.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/testb3.cpp:171
&gt; &gt; +void testLoadWithOffsetImpl(int32_t offset64, int32_t offset32)
&gt; &gt; +{
&gt; &gt; +    {
&gt; &gt; +        Procedure proc;
&gt; &gt; +        BasicBlock* root = proc.addBlock();
&gt; &gt; +        int64_t x = -42;
&gt; &gt; +        Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), GPRInfo::argumentGPR0);
&gt; &gt; +        root-&gt;appendNew&lt;ControlValue&gt;(
&gt; &gt; +            proc, Return, Origin(),
&gt; &gt; +            root-&gt;appendNew&lt;MemoryValue&gt;(
&gt; &gt; +                proc, Load, Int64, Origin(),
&gt; &gt; +                base,
&gt; &gt; +                offset64));
&gt; &gt; +
&gt; &gt; +        char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset64;
&gt; &gt; +        CHECK(compileAndRun&lt;int64_t&gt;(proc, address) == -42);
&gt; &gt; +    }
&gt; &gt; +    {
&gt; &gt; +        Procedure proc;
&gt; &gt; +        BasicBlock* root = proc.addBlock();
&gt; &gt; +        int32_t x = -42;
&gt; &gt; +        Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(), GPRInfo::argumentGPR0);
&gt; &gt; +        root-&gt;appendNew&lt;ControlValue&gt;(
&gt; &gt; +            proc, Return, Origin(),
&gt; &gt; +            root-&gt;appendNew&lt;MemoryValue&gt;(
&gt; &gt; +                proc, Load, Int32, Origin(),
&gt; &gt; +                base,
&gt; &gt; +                offset32));
&gt; &gt; +
&gt; &gt; +        char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset32;
&gt; &gt; +        CHECK(compileAndRun&lt;int32_t&gt;(proc, address) == -42);
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; nit: the 64-bit and 32-bit sections are almost identical except for some
&gt; type and variable differences.  Would it be better to templatize the common
&gt; form and express these 2 sections as 2 instantiations of the template? 
&gt; Something like:
&gt; 
&gt; template &lt;typename T, B3::Type b3Type&gt;
&gt; void testLoadWithOffsetImpl(int32_t offset)
&gt; {
&gt;        Procedure proc;
&gt;        BasicBlock* root = proc.addBlock();
&gt;        T x = -42;
&gt;        Value* base = root-&gt;appendNew&lt;ArgumentRegValue&gt;(proc, Origin(),
&gt; GPRInfo::argumentGPR0);
&gt;        root-&gt;appendNew&lt;ControlValue&gt;(
&gt;            proc, Return, Origin(),
&gt;            root-&gt;appendNew&lt;MemoryValue&gt;(
&gt;                proc, Load, b3Type, Origin(),
&gt;                base,
&gt;                offset));
&gt; 
&gt;        char* address = reinterpret_cast&lt;char*&gt;(&amp;x) - offset;
&gt;        CHECK(compileAndRun&lt;T&gt;(proc, address) == -42);
&gt; }
&gt; 
&gt; void testLoadWithOffsetImpl(int32_t offset64, int32_t offset32)
&gt; {
&gt;     testLoadWithOffsetImpl&lt;int64_t, Int64&gt;(offset64);
&gt;     testLoadWithOffsetImpl&lt;int32_t, Int32&gt;(offset32);
&gt; }

For what it&apos;s worth we haven&apos;t been trying too hard to reduce code duplication in the tests. Reducing code duplication takes work, and it is most profitable when you intend to somehow evolve the code later - so you don&apos;t have to change the code in more than one place. But we don&apos;t really change test code after its written. Even if we made a B3 change that somehow made a test not relevant, we would probably write a new test and keep the old one for regression coverage. It&apos;s conceivable that we would change IR in a way that makes tests break or not compile, but then we would probably have to search-replace all of testb3 anyway. 

TL:DR; I&apos;m not opposed to deduplicating code but it&apos;s not a priority for tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155113</commentid>
    <comment_count>7</comment_count>
      <attachid>268875</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 10:25:59 -0800</bug_when>
    <thetext>Created attachment 268875
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155114</commentid>
    <comment_count>8</comment_count>
      <attachid>268875</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-01-13 10:27:16 -0800</bug_when>
    <thetext>Comment on attachment 268875
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGCommon.h:41
&gt; -#define FTL_USES_B3 0
&gt; +#define FTL_USES_B3 1

Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155117</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 10:31:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 268875 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268875&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCommon.h:41
&gt; &gt; -#define FTL_USES_B3 0
&gt; &gt; +#define FTL_USES_B3 1
&gt; 
&gt; Is this intentional?

Shit! Good catch. I forgot the -g.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155119</commentid>
    <comment_count>10</comment_count>
      <attachid>268876</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 10:33:09 -0800</bug_when>
    <thetext>Created attachment 268876
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155124</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-13 10:38:50 -0800</bug_when>
    <thetext>I kept the duplicated code. I find it easier to debug on device since the only thing we get at first is the faulty line number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155147</commentid>
    <comment_count>12</comment_count>
      <attachid>268876</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 11:33:16 -0800</bug_when>
    <thetext>Comment on attachment 268876
Patch for landing

Clearing flags on attachment: 268876

Committed r194969: &lt;http://trac.webkit.org/changeset/194969&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155148</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 11:33:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155152</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-01-13 11:51:08 -0800</bug_when>
    <thetext>This change appears to have broken the iOS build:
&lt;https://build.webkit.org/builders/Apple%20iOS%209%20Release%20%28Build%29/builds/1947&gt;

Undefined symbols for architecture arm64:
  &quot;__ZN3JSC2B35Value2asINS0_11MemoryValueEEEPT_v&quot;, referenced from:
      __ZN3JSC2B321legalizeMemoryOffsetsERNS0_9ProcedureE in B3LegalizeMemoryOffsets.o</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155180</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-01-13 12:47:39 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; This change appears to have broken the iOS build:
&gt; &lt;https://build.webkit.org/builders/Apple%20iOS%209%20Release%20%28Build%29/
&gt; builds/1947&gt;
&gt; 
&gt; Undefined symbols for architecture arm64:
&gt;   &quot;__ZN3JSC2B35Value2asINS0_11MemoryValueEEEPT_v&quot;, referenced from:
&gt;       __ZN3JSC2B321legalizeMemoryOffsetsERNS0_9ProcedureE in
&gt; B3LegalizeMemoryOffsets.o

Same here :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155184</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-13 12:51:56 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 153075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155996</commentid>
    <comment_count>17</comment_count>
      <attachid>269111</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-01-15 15:40:37 -0800</bug_when>
    <thetext>Created attachment 269111
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156031</commentid>
    <comment_count>18</comment_count>
      <attachid>269111</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-15 16:37:42 -0800</bug_when>
    <thetext>Comment on attachment 269111
Patch for landing

Clearing flags on attachment: 269111

Committed r195159: &lt;http://trac.webkit.org/changeset/195159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156032</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-15 16:37:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268870</attachid>
            <date>2016-01-13 09:10:24 -0800</date>
            <delta_ts>2016-01-13 10:25:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153065-20160113180951.patch</filename>
            <type>text/plain</type>
            <size>18831</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmU3ZjQ1M2IyOTIzMjVkZjQzNGVhZGI5ZjM2NzczNWRkN2IxZTA5Li5iMWRhYmJjZmJiMGNmYTFj
ZTljNTQzMmM3OTMwNzg4OTUzZWRmNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNi0wMS0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBMZWdhbGl6ZSBNZW1vcnkgT2Zmc2V0cyBmb3IgQVJNNjQg
YmVmb3JlIGxvd2VyaW5nIHRvIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gQVJNNjQsIHdlIGNhbm5vdCB1c2Ugc2lnbmVkIDMyYml0cyBvZmZz
ZXQgZm9yIG1lbW9yeSBhZGRyZXNzaW5nLgorICAgICAgICBUaGVyZSBhcmUgdHdvIGF2YWlsYWJs
ZSBhZGRyZXNzaW5nOiBzaWduZWQgOWJpdHMgYW5kIHVuc2lnbmUgc2NhbGVkIDEyYml0cy4KKyAg
ICAgICAgQWlyIGFscmVhZHkga25vd3MgYWJvdXQgaXQuCisKKyAgICAgICAgSW4gdGhpcyBwYXRj
aCwgdGhlIG9mZnNldHMgYXJlIGNoYW5nZWQgdG8gc29tZXRoaW5nIHZhbGlkIGZvciBBUk02NAor
ICAgICAgICBwcmlvciB0byBsb3dlcmluZy4gV2hlbiBhbiBvZmZzZXQgaXMgaW52YWxpZCwgaXQg
aXMganVzdCBjb21wdXRlZAorICAgICAgICBiZWZvcmUgdGhlIGluc3RydWN0aW9uIGFuZCB1c2Vk
IGFzIHRoZSBiYXNlIGZvciBhZGRyZXNzaW5nLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM0dlbmVyYXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OmdlbmVyYXRlVG9BaXIpOgorICAgICAgICAqIGIzL0IzTGVnYWxp
emVNZW1vcnlPZmZzZXRzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpsZWdhbGl6ZU1l
bW9yeU9mZnNldHMpOgorICAgICAgICAqIGIzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmg6IEFk
ZGVkLgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6Okxvd2VyVG9BaXI6OmVmZmVjdGl2ZUFkZHIpOiBEZWxldGVkLgorICAgICAgICAqIGIzL3Rl
c3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0SW1tOU1heCk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RM
b2FkT2Zmc2V0SW1tOU1heFBsdXNUd28pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZz
ZXRJbW05TWluKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVz
T25lKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0x
Mk1heCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkT3Zl
ckltbTEyTWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKIDIwMTYtMDEtMTIgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtGVExdW1dpbjY0XSBD
b21waWxlIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzVmMzhiODk0
MTA5MGI5NmM3MTRmYjU0YTdhZmM3MTBlMDQxMTA0Li4zN2EzODI2YmUxNzI3YjVhZDBhZjQyNGY3
ODRhYzkyYjVhOThkNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE1Miw2
ICsxMTUyLDggQEAKIAkJNDM0MjJBNjMxQzE1OEU2RDAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQy
MkE2MTFDMTU4NzFCMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCAqLzsgfTsKIAkJNDM0
MjJBNjYxQzE2MjY3NTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzQyMkE2NDFDMTYyMjFF
MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLzsgfTsKIAkJNDM0MjJBNjcx
QzE2MjY3ODAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4
IC8qIEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oICovOyB9OworCQk0MzZFNTQ1MzFDNDY4RTc0MDBC
NUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNkU1NDUyMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xl
Z2FsaXplTWVtb3J5T2Zmc2V0cy5oICovOyB9OworCQk0MzZFNTQ1NDFDNDY4RTc3MDBCNUFGNzMg
LyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2RTU0NTExQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxp
emVNZW1vcnlPZmZzZXRzLmNwcCAqLzsgfTsKIAkJNDNBQjI2QzYxQzFBNTM1OTAwRDgyQUU2IC8q
IEIzTWF0aEV4dHJhcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5oICovOyB9Owog
CQk0M0FCMjZDNzFDMUE1MzVDMDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQUIyNkM0MUMxQTUyRjcwMEQ4
MkFFNiAvKiBCM01hdGhFeHRyYXMuY3BwICovOyB9OwogCQk0M0MzOTJBQjFDM0JFQjA1MDAyNDFG
NTMgLyogQXNzZW1ibGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0M0MzOTJBQTFDM0JFQjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMy
NjAsNiArMzI2Miw4IEBACiAJCTQzNDIyQTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0NvbnN0Rmxv
YXRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0RmxvYXRW
YWx1ZS5oOyBwYXRoID0gYjMvQjNDb25zdEZsb2F0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwOyBwYXRoID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM0MjJBNjUxQzE2MjIxRTAwRTJFQjk4IC8qIEIz
UmVkdWNlRG91YmxlVG9GbG9hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M1JlZHVjZURvdWJsZVRvRmxvYXQuaDsgcGF0aCA9IGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzZFNTQ1MTFDNDY4RTVGMDBCNUFGNzMg
LyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOyBwYXRoID0gYjMvQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzZF
NTQ1MjFDNDY4RTVGMDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaDsgcGF0
aCA9IGIzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzQUIyNkM0MUMxQTUyRjcwMEQ4MkFFNiAvKiBCM01hdGhFeHRyYXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNNYXRoRXh0cmFzLmNwcDsgcGF0aCA9
IGIzL0IzTWF0aEV4dHJhcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQUIy
NkM1MUMxQTUyRjcwMEQ4MkFFNiAvKiBCM01hdGhFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNNYXRoRXh0cmFzLmg7IHBhdGggPSBiMy9CM01hdGhFeHRyYXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNDMzkyQUExQzNCRUIwMDAwMjQxRjUzIC8q
IEFzc2VtYmxlckNvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
bWJsZXJDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzNzIsOCArMzM3
Niw4IEBACiAJCTcwMTNDQThBMUI0OTFBOTQwMENBRTYxMyAvKiBKU0pvYi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0pvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MDM1NTg3QzFDNDE4NDE5MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gTWFwUHJvdG90eXBlLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MDM1NTg3RDFDNDE4NDE5MDA0QkQ3QkYgLyogU2V0UHJv
dG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gU2V0UHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MDM1NTg3RTFDNDE4NDU4
MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBNYXBQcm90b3R5cGUubHV0Lmg7IHBhdGggPSBNYXBQcm90b3R5cGUubHV0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwMzU1ODdGMUM0MTg0NTgwMDRCRDdCRiAvKiBT
ZXRQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNldFBy
b3RvdHlwZS5sdXQuaDsgcGF0aCA9IFNldFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzAzNTU4N0UxQzQxODQ1ODAwNEJEN0JGIC8qIE1hcFByb3RvdHlwZS5s
dXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFwUHJvdG90eXBlLmx1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDM1NTg3RjFDNDE4NDU4MDA0QkQ3QkYg
LyogU2V0UHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNEZEMzUz
MDU2OTdFNkQwMDNEQkVEOSAvKiBCb29sZWFuT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJvb2xlYW5PYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3MDVCNDFBMzFBNkU1MDFFMDA3MTY3
NTcgLyogU3ltYm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5
bWJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUE0MUE2RTUwMUUw
MDcxNjc1NyAvKiBTeW1ib2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lt
Ym9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzEwLDYgKzQ3MTQsOCBAQAog
CQkJCTBGRUM4NUI0MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5jcHAgKi8sCiAJ
CQkJMEZFQzg1QjUxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJ
MEZFQzg1QjYxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovLAor
CQkJCTQzNkU1NDUxMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgKi8sCisJCQkJNDM2RTU0NTIxQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlP
ZmZzZXRzLmggKi8sCiAJCQkJMEYzMzhFMTkxQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNy
b3MuY3BwICovLAogCQkJCTBGMzM4RTFBMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9z
LmggKi8sCiAJCQkJNDMxOURBMDExQzFCRTNDMTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMuY3BwICovLApAQCAtNzkzNyw2ICs3OTQzLDcgQEAKIAkJCQlCQ0RFM0FC
ODBFNkM4MkY1MDAxNDUzQTcgLyogU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRF
RTcwOTBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQzNkU1NDUzMUM0NjhFNzQwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5
T2Zmc2V0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0MTZEMDFFRTkw
MEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZFMThB
NDE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLApA
QCAtODYxNCw2ICs4NjIxLDcgQEAKIAkJCQkwRkVDODUwOTFCREFDREFDMDA4MEZGNzQgLyogQjND
b21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MEIxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzQ29tbXV0YXRpdml0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUwRDFCREFDREFD
MDA4MEZGNzQgLyogQjNDb25zdDMyVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDM2RTU0
NTQxQzQ2OEU3NzAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUM4NTBGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0NjRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUxMTFCREFDREFDMDA4MEZGNzQgLyogQjNDb25z
dERvdWJsZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTEzMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0NvbnRyb2xWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAppbmRleCAwODZkNTY1NTQ5MGI4YzJkNmVmYjVhYThmMTZi
MDUzMzk0OWIwMmJmLi5kNjkxZDEwYTM0OGY4NDM5M2ZmNDJkZTBhYWYzNWNjZmU0MjY5ZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQWlyR2VuZXJhdGUuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzQ29tbW9uLmgiCisjaW5jbHVkZSAiQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMu
aCIKICNpbmNsdWRlICJCM0xvd2VyTWFjcm9zLmgiCiAjaW5jbHVkZSAiQjNMb3dlck1hY3Jvc0Fm
dGVyT3B0aW1pemF0aW9ucy5oIgogI2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgpAQCAtODUsNiAr
ODYsOCBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVk
IG9wdExldmVsKQogCiAgICAgbG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMocHJvY2VkdXJl
KTsKIAorICAgIGxlZ2FsaXplTWVtb3J5T2Zmc2V0cyhwcm9jZWR1cmUpOworCiAgICAgbW92ZUNv
bnN0YW50cyhwcm9jZWR1cmUpOwogCiAgICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmU3NzhmZmI2NDRkNDI1MDE4ZTkyNmE3NWFmZjIxNGZlMTkzNjM4OTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9y
eU9mZnNldHMuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJB
aXJBcmcuaCIKKyNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKKyNpbmNsdWRlICJC
M01lbW9yeVZhbHVlLmgiCisjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCisjaW5jbHVkZSAiQjNQ
cm9jZWR1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitu
YW1lc3BhY2UgeworCitjbGFzcyBMZWdhbGl6ZU1lbW9yeU9mZnNldHMgeworcHVibGljOgorICAg
IExlZ2FsaXplTWVtb3J5T2Zmc2V0cyhQcm9jZWR1cmUmIHByb2MpCisgICAgICAgIDogbV9wcm9j
KHByb2MpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQocHJvYykKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FSTTY0KCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fcHJvYykgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUo
KTsgKytpbmRleCkgeworICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnlWYWx1ZSA9
IGJsb2NrLT5hdChpbmRleCktPmFzPE1lbW9yeVZhbHVlPigpOworICAgICAgICAgICAgICAgIGlm
ICghbWVtb3J5VmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgaW50MzJfdCBvZmZzZXQgPSBtZW1vcnlWYWx1ZS0+b2Zmc2V0KCk7CisgICAgICAg
ICAgICAgICAgQWlyOjpBcmc6OldpZHRoIHdpZHRoID0gQWlyOjpBcmc6OndpZHRoRm9yQnl0ZXMo
bWVtb3J5VmFsdWUtPmFjY2Vzc0J5dGVTaXplKCkpOworICAgICAgICAgICAgICAgIGlmICghQWly
OjpBcmc6OmlzVmFsaWRBZGRyRm9ybShvZmZzZXQsIHdpZHRoKSkgeworICAgICAgICAgICAgICAg
ICAgICBWYWx1ZSogYmFzZSA9IG1lbW9yeVZhbHVlLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgVmFsdWUqIG9mZnNldFZhbHVlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0SW50Q29u
c3RhbnQoaW5kZXgsIG1lbW9yeVZhbHVlLT5vcmlnaW4oKSwgcG9pbnRlclR5cGUoKSwgb2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgVmFsdWUqIHJlc29sdmVkQWRkcmVzcyA9IG1fcHJvYy5h
ZGQ8VmFsdWU+KEFkZCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBiYXNlLCBvZmZzZXRWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKGluZGV4LCBy
ZXNvbHZlZEFkZHJlc3MpOworCisgICAgICAgICAgICAgICAgICAgIG1lbW9yeVZhbHVlLT5sYXN0
Q2hpbGQoKSA9IHJlc29sdmVkQWRkcmVzczsKKyAgICAgICAgICAgICAgICAgICAgbWVtb3J5VmFs
dWUtPnNldE9mZnNldCgwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFByb2NlZHVyZSYgbV9wcm9jOworICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNl
dDsKK307CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIGxlZ2FsaXplTWVtb3J5
T2Zmc2V0cyhQcm9jZWR1cmUmIHByb2MpCit7CisgICAgUGhhc2VTY29wZSBwaGFzZVNjb3BlKHBy
b2MsICJsZWdhbGl6ZU1lbW9yeU9mZnNldHMiKTsKKyAgICBMZWdhbGl6ZU1lbW9yeU9mZnNldHMg
bGVnYWxpemVNZW1vcnlPZmZzZXRzKHByb2MpOworICAgIGxlZ2FsaXplTWVtb3J5T2Zmc2V0cy5y
dW4oKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUo
QjNfSklUKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6
ZU1lbW9yeU9mZnNldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVt
b3J5T2Zmc2V0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNDgwNjhmZjcyMmQwZjU4NmMyNjY4NGMyZThmZDQ4
N2Q0M2JlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
ZWdhbGl6ZU1lbW9yeU9mZnNldHMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCM0xlZ2FsaXplTWVtb3J5T2Zm
c2V0c19oCisjZGVmaW5lIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzX2gKKworI2lmIEVOQUJMRShC
M19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeworCitjbGFzcyBQcm9jZWR1
cmU7CisKKy8vIElmIHRoZSBvZmZzZXRzIG9mIGEgTWVtb3J5VmFsdWUgY2Fubm90IGJlIHJlcHJl
c2VudGVkIGluIHRoZSB0YXJnZXQgaW5zdHJ1Y3Rpb24gc2V0LAorLy8gY29tcHV0ZSBpdCBleHBs
aWNpdGVseS4KK3ZvaWQgbGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2NlZHVyZSYpOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKKyNlbmRp
ZiAvLyBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0c19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggY2VlNGM0ZmQxYWEzMjQ3OTgyMDZjYTI0ZWRkYWRjOTg4
OTM5ZWY3MS4uN2I2NWNhMzQ3MDVmZTZlMTAyY2E0ZGU2MmZmNDM3NjZlNGVkZWNiNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTM1NywxMCArMzU3LDYg
QEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIHR1cm5zIHRoZSBnaXZlbiBvcGVyYW5kIGludG8gYW4g
YWRkcmVzcy4KICAgICBBcmcgZWZmZWN0aXZlQWRkcihWYWx1ZSogYWRkcmVzcywgaW50MzJfdCBv
ZmZzZXQsIEFyZzo6V2lkdGggd2lkdGgpCiAgICAgewotICAgICAgICAvLyBCMyBhbGxvd3MgYW55
IG1lbW9yeSBvcGVyYXRpb24gdG8gaGF2ZSBhIDMyLWJpdCBvZmZzZXQuIFRoYXQncyBub3QgaG93
IHNvbWUgYXJjaGl0ZWN0dXJlcwotICAgICAgICAvLyB3b3JrLiBXZSBzb2x2ZSB0aGlzIGJ5IHJl
cXVpcmluZyBhIGp1c3QtYmVmb3JlLWxvd2VyaW5nIHBoYXNlIHRoYXQgbGVnYWxpemVzIG9mZnNl
dHMuCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VjaCBhIGxlZ2FsaXphdGlvbiBwaGFz
ZS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjUzMAogICAgICAgICBBU1NFUlQoQXJnOjppc1ZhbGlkQWRkckZvcm0ob2Zmc2V0LCB3aWR0aCkp
OwogCiAgICAgICAgIGF1dG8gZmFsbGJhY2sgPSBbJl0gKCkgLT4gQXJnIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggMjZmOGE3NjU4NDY5YjkxNTIwOWJkN2JiNWViOTQwZWIy
NWUxOWEzZC4uMTc2Njg5NDZlNTY0YTYzN2JlM2UwNGNkZDBkMzU3Mjk4YWE4ZjU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTEzNiw2ICsxMzYsNzcgQEAgdm9pZCB0ZXN0
TG9hZDQyKCkKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gNDIpOwogfQog
Cit2b2lkIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoaW50MzJfdCBvZmZzZXQ2NCwgaW50MzJfdCBv
ZmZzZXQzMikKK3sKKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBpbnQ2NF90IHggPSAtNDI7
CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAg
ICAgICAgIHByb2MsIExvYWQsIEludDY0LCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBiYXNl
LAorICAgICAgICAgICAgICAgIG9mZnNldDY0KSk7CisKKyAgICAgICAgY2hhciogYWRkcmVzcyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDY0OworICAgICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7CisgICAgfQorICAg
IHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgICAgIGludDMyX3QgeCA9IC00MjsKKyAgICAgICAgVmFsdWUq
IGJhc2UgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgTG9h
ZCwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIGJhc2UsCisgICAgICAgICAgICAg
ICAgb2Zmc2V0MzIpKTsKKworICAgICAgICBjaGFyKiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oJngpIC0gb2Zmc2V0MzI7CisgICAgICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
MzJfdD4ocHJvYywgYWRkcmVzcykgPT0gLTQyKTsKKyAgICB9Cit9CisKK3ZvaWQgdGVzdExvYWRP
ZmZzZXRJbW05TWF4KCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NSwgMjU1KTsK
K30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDI1NiwgMjU2KTsKK30KKwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlN
YXhQbHVzVHdvKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDI1NywgMjU3KTsKK30K
Kwordm9pZCB0ZXN0TG9hZE9mZnNldEltbTlNaW4oKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNl
dEltcGwoLTI1NiwgLTI1Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluTWludXNP
bmUoKQoreworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoLTI1NywgLTI1Nyk7Cit9CisKK3Zv
aWQgdGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KCkKK3sKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDMyNzYwLCAxNjM4MCk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRT
Y2FsZWRVbnNpZ25lZE92ZXJJbW0xMk1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgzMjc2MCwgMzI3NjApOworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoMzI3NjEsIDE2Mzgx
KTsKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDMyNzY4LCAxNjM4NCk7Cit9CisKIHZvaWQg
dGVzdEFyZyhpbnQgYXJndW1lbnQpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC05Mjg4LDYg
KzkzNTksMTMgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogCiAgICAgUlVOKHRlc3Q0
MigpKTsKICAgICBSVU4odGVzdExvYWQ0MigpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05
TWF4KCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzT25lKCkpOworICAgIFJV
Tih0ZXN0TG9hZE9mZnNldEltbTlNYXhQbHVzVHdvKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNl
dEltbTlNaW4oKSk7CisgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkpOwor
ICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkSW1tMTJNYXgoKSk7CisgICAgUlVO
KHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKSk7CiAgICAgUlVOKHRl
c3RBcmcoNDMpKTsKICAgICBSVU4odGVzdFJldHVybkNvbnN0NjQoNSkpOwogICAgIFJVTih0ZXN0
UmV0dXJuQ29uc3Q2NCgtNDIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268875</attachid>
            <date>2016-01-13 10:25:59 -0800</date>
            <delta_ts>2016-01-13 10:32:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153065-20160113192526.patch</filename>
            <type>text/plain</type>
            <size>19493</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmU3ZjQ1M2IyOTIzMjVkZjQzNGVhZGI5ZjM2NzczNWRkN2IxZTA5Li4yMDk0Mzc3N2ZkYTYzNDg3
ZmQyNjc2OTg5NzNmMDQ2ZjZhNGMyYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wMS0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBMZWdhbGl6ZSBNZW1vcnkgT2Zmc2V0cyBmb3IgQVJNNjQg
YmVmb3JlIGxvd2VyaW5nIHRvIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisg
ICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIE9uIEFSTTY0LCB3ZSBj
YW5ub3QgdXNlIHNpZ25lZCAzMmJpdHMgb2Zmc2V0IGZvciBtZW1vcnkgYWRkcmVzc2luZy4KKyAg
ICAgICAgVGhlcmUgYXJlIHR3byBhdmFpbGFibGUgYWRkcmVzc2luZzogc2lnbmVkIDliaXRzIGFu
ZCB1bnNpZ25lZCBzY2FsZWQgMTJiaXRzLgorICAgICAgICBBaXIgYWxyZWFkeSBrbm93cyBhYm91
dCBpdC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgb2Zmc2V0cyBhcmUgY2hhbmdlZCB0
byBzb21ldGhpbmcgdmFsaWQgZm9yIEFSTTY0CisgICAgICAgIHByaW9yIHRvIGxvd2VyaW5nLiBX
aGVuIGFuIG9mZnNldCBpcyBpbnZhbGlkLCBpdCBpcyBqdXN0IGNvbXB1dGVkCisgICAgICAgIGJl
Zm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYW5kIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGFkZHJlc3Npbmcu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVU
b0Fpcik6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OmxlZ2FsaXplTWVtb3J5T2Zmc2V0cyk6CisgICAgICAgICogYjMv
QjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaDogQWRkZWQuCisgICAgICAgICogYjMvQjNMb3dlclRv
QWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRk
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RMb2FkV2l0aE9mZnNldEltcGwpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZz
ZXRJbW05TWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNP
bmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3byk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldEltbTlNaW4pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdExvYWRPZmZzZXRJbW05TWluTWludXNPbmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKwogMjAxNi0wMS0xMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5j
b20+CiAKICAgICAgICAgW0ZUTF1bV2luNjRdIENvbXBpbGUgZXJyb3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDJjNWYzOGI4OTQxMDkwYjk2YzcxNGZiNTRhN2FmYzcxMGUwNDEx
MDQuLjM3YTM4MjZiZTE3MjdiNWFkMGFmNDI0Zjc4NGFjOTJiNWE5OGQ1NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTUyLDYgKzExNTIsOCBAQAogCQk0MzQyMkE2MzFDMTU4
RTZEMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDIyQTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0Nv
bnN0RmxvYXRWYWx1ZS5oICovOyB9OwogCQk0MzQyMkE2NjFDMTYyNjc1MDBFMkVCOTggLyogQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNDIyQTY0MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRv
RmxvYXQuY3BwICovOyB9OwogCQk0MzQyMkE2NzFDMTYyNjc4MDBFMkVCOTggLyogQjNSZWR1Y2VE
b3VibGVUb0Zsb2F0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmgg
Ki87IH07CisJCTQzNkU1NDUzMUM0NjhFNzQwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zm
c2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2
RTU0NTIxQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggKi87IH07
CisJCTQzNkU1NDU0MUM0NjhFNzcwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzZFNTQ1
MTFDNDY4RTVGMDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwICovOyB9Owog
CQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0FCMjZDNTFDMUE1MkY3MDBEODJB
RTYgLyogQjNNYXRoRXh0cmFzLmggKi87IH07CiAJCTQzQUIyNkM3MUMxQTUzNUMwMEQ4MkFFNiAv
KiBCM01hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNBQjI2QzQxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi87
IH07CiAJCTQzQzM5MkFCMUMzQkVCMDUwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzM5MkFBMUMzQkVC
MDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzI2MCw2ICszMjYyLDggQEAKIAkJNDM0MjJBNjEx
QzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0Rmxv
YXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQyMkE2NDFDMTYyMjFF
MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7IHBhdGggPSBiMy9C
M1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oOyBwYXRo
ID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQzNkU1NDUxMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0xlZ2FsaXplTWVtb3J5
T2Zmc2V0cy5jcHA7IHBhdGggPSBiMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNkU1NDUyMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xl
Z2FsaXplTWVtb3J5T2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oOyBwYXRoID0gYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNl
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNBQjI2QzQxQzFBNTJGNzAwRDgy
QUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBCM01hdGhFeHRyYXMuY3BwOyBwYXRoID0gYjMvQjNNYXRoRXh0cmFzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0
aEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM01hdGhFeHRyYXMu
aDsgcGF0aCA9IGIzL0IzTWF0aEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0M0MzOTJBQTFDM0JFQjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzM3Miw4ICszMzc2LDggQEAKIAkJNzAxM0NBOEExQjQ5MUE5NDAw
Q0FFNjEzIC8qIEpTSm9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSm9i
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMzU1ODdDMUM0MTg0MTkwMDRCRDdC
RiAvKiBNYXBQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBNYXBQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMzU1
ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTZXRQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcwMzU1ODdFMUM0MTg0NTgwMDRCRDdCRiAvKiBNYXBQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hcFByb3RvdHlwZS5sdXQuaDsg
cGF0aCA9IE1hcFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NzAzNTU4N0YxQzQxODQ1ODAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2V0UHJvdG90eXBlLmx1dC5oOyBwYXRoID0gU2V0UHJv
dG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDM1NTg3RTFDNDE4
NDU4MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXBQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwMzU1ODdGMUM0MTg0NTgwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5P
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IH07CiAJCTcwNUI0MUEzMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzA1QjQxQTQxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ3MTAsNiArNDcxNCw4IEBACiAJCQkJMEZFQzg1QjQxQkUxNDYyRjAwODBGRjc0
IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkVDODVCNTFCRTE0NjJGMDA4MEZGNzQg
LyogQjNJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODVCNjFCRTE0NjJGMDA4MEZGNzQgLyog
QjNJbnNlcnRpb25TZXRJbmxpbmVzLmggKi8sCisJCQkJNDM2RTU0NTExQzQ2OEU1RjAwQjVBRjcz
IC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCAqLywKKwkJCQk0MzZFNTQ1MjFDNDY4RTVG
MDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCAqLywKIAkJCQkwRjMzOEUxOTFC
RjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5jcHAgKi8sCiAJCQkJMEYzMzhFMUExQkYy
ODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNyb3MuaCAqLywKIAkJCQk0MzE5REEwMTFDMUJFM0Mx
MDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi8sCkBAIC03
OTM3LDYgKzc5NDMsNyBAQAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1
Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4
IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM2RTU0NTMxQzQ2OEU3
NDAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEMkM5MjQxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkUxOEE0MTZCQUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1
cmVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjE0LDYgKzg2MjEsNyBAQAogCQkJCTBG
RUM4NTA5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVDODUwQjFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2aXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUM4NTBEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0MzJWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzZFNTQ1NDFDNDY4RTc3MDBCNUFGNzMgLyogQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MEYxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTExMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91YmxlVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQzg1MTMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29udHJvbFZhbHVlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2Vu
ZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4
IDA4NmQ1NjU1NDkwYjhjMmQ2ZWZiNWFhOGYxNmIwNTMzOTQ5YjAyYmYuLmQ2OTFkMTBhMzQ4Zjg0
MzkzZmY0MmRlMGFhZjM1Y2NmZTQyNjllZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmF0ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBaXJHZW5lcmF0ZS5oIgog
I2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIKKyNpbmNs
dWRlICJCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIgogI2luY2x1ZGUgIkIzTG93ZXJNYWNyb3Mu
aCIKICNpbmNsdWRlICJCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmgiCiAjaW5jbHVk
ZSAiQjNMb3dlclRvQWlyLmgiCkBAIC04NSw2ICs4Niw4IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQ
cm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwpCiAKICAgICBsb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucyhwcm9jZWR1cmUpOwogCisgICAgbGVnYWxpemVNZW1vcnlPZmZz
ZXRzKHByb2NlZHVyZSk7CisKICAgICBtb3ZlQ29uc3RhbnRzKHByb2NlZHVyZSk7CiAKICAgICBp
ZiAoc2hvdWxkVmFsaWRhdGVJUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc3OGZmYjY0NGQ0MjUw
MThlOTI2YTc1YWZmMjE0ZmUxOTM2Mzg5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAKQEAgLTAsMCArMSw5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIzSW5zZXJ0
aW9uU2V0SW5saW5lcy5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJC
M1BoYXNlU2NvcGUuaCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExlZ2FsaXpl
TWVtb3J5T2Zmc2V0cyB7CitwdWJsaWM6CisgICAgTGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2Nl
ZHVyZSYgcHJvYykKKyAgICAgICAgOiBtX3Byb2MocHJvYykKKyAgICAgICAgLCBtX2luc2VydGlv
blNldChwcm9jKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAg
ICBpZiAoIWlzQVJNNjQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeVZhbHVlID0gYmxvY2stPmF0KGluZGV4KS0+YXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IG9mZnNldCA9IG1l
bW9yeVZhbHVlLT5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBBaXI6OkFyZzo6V2lkdGggd2lk
dGggPSBBaXI6OkFyZzo6d2lkdGhGb3JCeXRlcyhtZW1vcnlWYWx1ZS0+YWNjZXNzQnl0ZVNpemUo
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNl
dCwgd2lkdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlID0gbWVtb3J5VmFs
dWUtPmxhc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUg
PSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9y
aWdpbigpLCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogcmVzb2x2ZWRBZGRyZXNzID0gbV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+
b3JpZ2luKCksIGJhc2UsIG9mZnNldFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0VmFsdWUoaW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpID0gcmVzb2x2ZWRBZGRyZXNzOwor
ICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1ZS0+c2V0T2Zmc2V0KDApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOworICAgICAgICB9CisgICAgfQorCisgICAgUHJvY2VkdXJlJiBtX3Byb2M7Cisg
ICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKK3ZvaWQgbGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2NlZHVyZSYgcHJvYykKK3sK
KyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxlZ2FsaXplTWVtb3J5T2Zmc2V0cyIp
OworICAgIExlZ2FsaXplTWVtb3J5T2Zmc2V0cyBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJvYyk7
CisgICAgbGVnYWxpemVNZW1vcnlPZmZzZXRzLnJ1bigpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ0
NDBjNmYxNjkwMjY5YjdiZGIxZGE4NWJjNjAyMjViM2NlOGQ2YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzX2gKKyNkZWZpbmUgQjNMZWdhbGl6ZU1l
bW9yeU9mZnNldHNfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK2NsYXNzIFByb2NlZHVyZTsKKworLy8gSWYgdGhlIG9mZnNldHMgb2Yg
YSBNZW1vcnlWYWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHRhcmdldCBpbnN0cnVj
dGlvbiBzZXQsCisvLyBjb21wdXRlIGl0IGV4cGxpY2l0bHkuCit2b2lkIGxlZ2FsaXplTWVtb3J5
T2Zmc2V0cyhQcm9jZWR1cmUmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHNf
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGNlZTRj
NGZkMWFhMzI0Nzk4MjA2Y2EyNGVkZGFkYzk4ODkzOWVmNzEuLjdiNjVjYTM0NzA1ZmU2ZTEwMmNh
NGRlNjJmZjQzNzY2ZTRlZGVjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCkBAIC0zNTcsMTAgKzM1Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyB0dXJu
cyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3MuCiAgICAgQXJnIGVmZmVjdGl2ZUFk
ZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBBcmc6OldpZHRoIHdpZHRoKQogICAg
IHsKLSAgICAgICAgLy8gQjMgYWxsb3dzIGFueSBtZW1vcnkgb3BlcmF0aW9uIHRvIGhhdmUgYSAz
Mi1iaXQgb2Zmc2V0LiBUaGF0J3Mgbm90IGhvdyBzb21lIGFyY2hpdGVjdHVyZXMKLSAgICAgICAg
Ly8gd29yay4gV2Ugc29sdmUgdGhpcyBieSByZXF1aXJpbmcgYSBqdXN0LWJlZm9yZS1sb3dlcmlu
ZyBwaGFzZSB0aGF0IGxlZ2FsaXplcyBvZmZzZXRzLgotICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHN1Y2ggYSBsZWdhbGl6YXRpb24gcGhhc2UuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1MzAKICAgICAgICAgQVNTRVJUKEFyZzo6aXNW
YWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKIAogICAgICAgICBhdXRvIGZhbGxiYWNrID0g
WyZdICgpIC0+IEFyZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDI2Zjhh
NzY1ODQ2OWI5MTUyMDliZDdiYjVlYjk0MGViMjVlMTlhM2QuLjE3NjY4OTQ2ZTU2NGE2MzdiZTNl
MDRjZGQwZDM1NzI5OGFhOGY1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBA
IC0xMzYsNiArMTM2LDc3IEBAIHZvaWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IDQyKTsKIH0KIAordm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBs
KGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpCit7CisgICAgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgaW50NjRfdCB4ID0gLTQyOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgYmFzZSwKKyAgICAgICAgICAgICAgICBvZmZzZXQ2NCkp
OworCisgICAgICAgIGNoYXIqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigmeCkg
LSBvZmZzZXQ2NDsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBh
ZGRyZXNzKSA9PSAtNDIpOworICAgIH0KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBpbnQz
Ml90IHggPSAtNDI7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICBiYXNlLAorICAgICAgICAgICAgICAgIG9mZnNldDMyKSk7CisKKyAgICAgICAgY2hh
ciogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDMyOworICAg
ICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7
CisgICAgfQorfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpCit7CisgICAgdGVzdExv
YWRXaXRoT2Zmc2V0SW1wbCgyNTUsIDI1NSk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05
TWF4UGx1c09uZSgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTYsIDI1Nik7Cit9
CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpCit7CisgICAgdGVzdExvYWRX
aXRoT2Zmc2V0SW1wbCgyNTcsIDI1Nyk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWlu
KCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTYsIC0yNTYpOworfQorCit2b2lk
IHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZz
ZXRJbXBsKC0yNTcsIC0yNTcpOworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWdu
ZWRJbW0xMk1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2MCwgMTYzODAp
OworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKQor
eworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoMzI3NjAsIDMyNzYwKTsKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDMyNzYxLCAxNjM4MSk7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgzMjc2OCwgMTYzODQpOworfQorCiB2b2lkIHRlc3RBcmcoaW50IGFyZ3VtZW50KQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtOTI4OCw2ICs5MzU5LDEzIEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7
CisgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZz
ZXRJbW05TWF4UGx1c09uZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3
bygpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWluKCkpOworICAgIFJVTih0ZXN0TG9h
ZE9mZnNldEltbTlNaW5NaW51c09uZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRTY2FsZWRV
bnNpZ25lZEltbTEyTWF4KCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVk
T3ZlckltbTEyTWF4KCkpOwogICAgIFJVTih0ZXN0QXJnKDQzKSk7CiAgICAgUlVOKHRlc3RSZXR1
cm5Db25zdDY0KDUpKTsKICAgICBSVU4odGVzdFJldHVybkNvbnN0NjQoLTQyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAppbmRleCBiMDE0M2Q2NzM4OTRiNjVmNGZkNmNkOTA4
ZjI0OGJmMTkzMmQwODYyLi4xMDkwY2RjNjFhMWQ4YzA3NjQxY2E2NGU2M2QzYWYyMThiMjZiNjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogLy8gV2UgYXJlIGluIHRoZSBtaWRkbGUg
b2YgYW4gZXhwZXJpbWVudGFsIHRyYW5zaXRpb24gZnJvbSBMTFZNIHRvIEIzIGFzIHRoZSBiYWNr
ZW5kIGZvciB0aGUgRlRMLiBXZSBkb24ndAogLy8geWV0IGtub3cgaG93IGl0IHdpbGwgdHVybiBv
dXQuIEZvciBub3csIHRoaXMgZmxhZyB3aWxsIGNvbnRyb2wgd2hldGhlciBGVEwgdXNlcyBCMy4g
UmVtZW1iZXIgdG8gc2V0IHRoaXMKIC8vIHRvIDAgYmVmb3JlIGNvbW1pdHRpbmchCi0jZGVmaW5l
IEZUTF9VU0VTX0IzIDAKKyNkZWZpbmUgRlRMX1VTRVNfQjMgMQogCiBzdHJ1Y3QgTm9kZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268876</attachid>
            <date>2016-01-13 10:33:09 -0800</date>
            <delta_ts>2016-01-15 15:40:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153065-20160113193236.patch</filename>
            <type>text/plain</type>
            <size>18859</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YmU3ZjQ1M2IyOTIzMjVkZjQzNGVhZGI5ZjM2NzczNWRkN2IxZTA5Li4yMDk0Mzc3N2ZkYTYzNDg3
ZmQyNjc2OTg5NzNmMDQ2ZjZhNGMyYWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wMS0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBMZWdhbGl6ZSBNZW1vcnkgT2Zmc2V0cyBmb3IgQVJNNjQg
YmVmb3JlIGxvd2VyaW5nIHRvIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisg
ICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIE9uIEFSTTY0LCB3ZSBj
YW5ub3QgdXNlIHNpZ25lZCAzMmJpdHMgb2Zmc2V0IGZvciBtZW1vcnkgYWRkcmVzc2luZy4KKyAg
ICAgICAgVGhlcmUgYXJlIHR3byBhdmFpbGFibGUgYWRkcmVzc2luZzogc2lnbmVkIDliaXRzIGFu
ZCB1bnNpZ25lZCBzY2FsZWQgMTJiaXRzLgorICAgICAgICBBaXIgYWxyZWFkeSBrbm93cyBhYm91
dCBpdC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgb2Zmc2V0cyBhcmUgY2hhbmdlZCB0
byBzb21ldGhpbmcgdmFsaWQgZm9yIEFSTTY0CisgICAgICAgIHByaW9yIHRvIGxvd2VyaW5nLiBX
aGVuIGFuIG9mZnNldCBpcyBpbnZhbGlkLCBpdCBpcyBqdXN0IGNvbXB1dGVkCisgICAgICAgIGJl
Zm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYW5kIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGFkZHJlc3Npbmcu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVU
b0Fpcik6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OmxlZ2FsaXplTWVtb3J5T2Zmc2V0cyk6CisgICAgICAgICogYjMv
QjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaDogQWRkZWQuCisgICAgICAgICogYjMvQjNMb3dlclRv
QWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRk
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RMb2FkV2l0aE9mZnNldEltcGwpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZz
ZXRJbW05TWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNP
bmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3byk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldEltbTlNaW4pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdExvYWRPZmZzZXRJbW05TWluTWludXNPbmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKwogMjAxNi0wMS0xMiAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5j
b20+CiAKICAgICAgICAgW0ZUTF1bV2luNjRdIENvbXBpbGUgZXJyb3IuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDJjNWYzOGI4OTQxMDkwYjk2YzcxNGZiNTRhN2FmYzcxMGUwNDEx
MDQuLjM3YTM4MjZiZTE3MjdiNWFkMGFmNDI0Zjc4NGFjOTJiNWE5OGQ1NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTUyLDYgKzExNTIsOCBAQAogCQk0MzQyMkE2MzFDMTU4
RTZEMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNDIyQTYxMUMxNTg3MUIwMEUyRUI5OCAvKiBCM0Nv
bnN0RmxvYXRWYWx1ZS5oICovOyB9OwogCQk0MzQyMkE2NjFDMTYyNjc1MDBFMkVCOTggLyogQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQzNDIyQTY0MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRv
RmxvYXQuY3BwICovOyB9OwogCQk0MzQyMkE2NzFDMTYyNjc4MDBFMkVCOTggLyogQjNSZWR1Y2VE
b3VibGVUb0Zsb2F0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmgg
Ki87IH07CisJCTQzNkU1NDUzMUM0NjhFNzQwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zm
c2V0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2
RTU0NTIxQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggKi87IH07
CisJCTQzNkU1NDU0MUM0NjhFNzcwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzZFNTQ1
MTFDNDY4RTVGMDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwICovOyB9Owog
CQk0M0FCMjZDNjFDMUE1MzU5MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0FCMjZDNTFDMUE1MkY3MDBEODJB
RTYgLyogQjNNYXRoRXh0cmFzLmggKi87IH07CiAJCTQzQUIyNkM3MUMxQTUzNUMwMEQ4MkFFNiAv
KiBCM01hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNBQjI2QzQxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi87
IH07CiAJCTQzQzM5MkFCMUMzQkVCMDUwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzM5MkFBMUMzQkVC
MDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzI2MCw2ICszMjYyLDggQEAKIAkJNDM0MjJBNjEx
QzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzQ29uc3RGbG9hdFZhbHVlLmg7IHBhdGggPSBiMy9CM0NvbnN0Rmxv
YXRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzQyMkE2NDFDMTYyMjFF
MDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7IHBhdGggPSBiMy9C
M1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MzQyMkE2NTFDMTYyMjFFMDBFMkVCOTggLyogQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUmVkdWNlRG91YmxlVG9GbG9hdC5oOyBwYXRo
ID0gYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQzNkU1NDUxMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0xlZ2FsaXplTWVtb3J5
T2Zmc2V0cy5jcHA7IHBhdGggPSBiMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzNkU1NDUyMUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xl
Z2FsaXplTWVtb3J5T2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
M0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oOyBwYXRoID0gYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNl
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNBQjI2QzQxQzFBNTJGNzAwRDgy
QUU2IC8qIEIzTWF0aEV4dHJhcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBCM01hdGhFeHRyYXMuY3BwOyBwYXRoID0gYjMvQjNNYXRoRXh0cmFzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNBQjI2QzUxQzFBNTJGNzAwRDgyQUU2IC8qIEIzTWF0
aEV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM01hdGhFeHRyYXMu
aDsgcGF0aCA9IGIzL0IzTWF0aEV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0M0MzOTJBQTFDM0JFQjAwMDAyNDFGNTMgLyogQXNzZW1ibGVyQ29tbW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VtYmxlckNvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzM3Miw4ICszMzc2LDggQEAKIAkJNzAxM0NBOEExQjQ5MUE5NDAw
Q0FFNjEzIC8qIEpTSm9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSm9i
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMzU1ODdDMUM0MTg0MTkwMDRCRDdC
RiAvKiBNYXBQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSBNYXBQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwMzU1
ODdEMUM0MTg0MTkwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTZXRQcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcwMzU1ODdFMUM0MTg0NTgwMDRCRDdCRiAvKiBNYXBQcm90b3R5cGUubHV0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1hcFByb3RvdHlwZS5sdXQuaDsg
cGF0aCA9IE1hcFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NzAzNTU4N0YxQzQxODQ1ODAwNEJEN0JGIC8qIFNldFByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2V0UHJvdG90eXBlLmx1dC5oOyBwYXRoID0gU2V0UHJv
dG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDM1NTg3RTFDNDE4
NDU4MDA0QkQ3QkYgLyogTWFwUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNYXBQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTcwMzU1ODdGMUM0MTg0NTgwMDRCRDdCRiAvKiBTZXRQcm90b3R5cGUubHV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldFByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA0RkQzNTMwNTY5N0U2RDAwM0RCRUQ5IC8qIEJvb2xlYW5P
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQm9vbGVhbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IH07CiAJCTcwNUI0MUEzMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzA1QjQxQTQxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ3MTAsNiArNDcxNCw4IEBACiAJCQkJMEZFQzg1QjQxQkUxNDYyRjAwODBGRjc0
IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkVDODVCNTFCRTE0NjJGMDA4MEZGNzQg
LyogQjNJbnNlcnRpb25TZXQuaCAqLywKIAkJCQkwRkVDODVCNjFCRTE0NjJGMDA4MEZGNzQgLyog
QjNJbnNlcnRpb25TZXRJbmxpbmVzLmggKi8sCisJCQkJNDM2RTU0NTExQzQ2OEU1RjAwQjVBRjcz
IC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCAqLywKKwkJCQk0MzZFNTQ1MjFDNDY4RTVG
MDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCAqLywKIAkJCQkwRjMzOEUxOTFC
RjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5jcHAgKi8sCiAJCQkJMEYzMzhFMUExQkYy
ODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNyb3MuaCAqLywKIAkJCQk0MzE5REEwMTFDMUJFM0Mx
MDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgKi8sCkBAIC03
OTM3LDYgKzc5NDMsNyBAQAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNEVFNzA5MEVCQjc5NjMwMDU5MzRBQSAvKiBTdHJ1
Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4
IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDM2RTU0NTMxQzQ2OEU3
NDAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyQUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZEMkM5MjQxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyRkUxOEE0MTZCQUVDNDAwMEFGMzA2MSAvKiBTdHJ1Y3R1
cmVSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjE0LDYgKzg2MjEsNyBAQAogCQkJCTBG
RUM4NTA5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbW1vbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVDODUwQjFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tdXRhdGl2aXR5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUM4NTBEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0MzJWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzZFNTQ1NDFDNDY4RTc3MDBCNUFGNzMgLyogQjNMZWdh
bGl6ZU1lbW9yeU9mZnNldHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MEYxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzQ29uc3Q2NFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4
NTExMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0RG91YmxlVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQzg1MTMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29udHJvbFZhbHVlLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2Vu
ZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4
IDA4NmQ1NjU1NDkwYjhjMmQ2ZWZiNWFhOGYxNmIwNTMzOTQ5YjAyYmYuLmQ2OTFkMTBhMzQ4Zjg0
MzkzZmY0MmRlMGFhZjM1Y2NmZTQyNjllZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmF0ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBaXJHZW5lcmF0ZS5oIgog
I2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIKKyNpbmNs
dWRlICJCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIgogI2luY2x1ZGUgIkIzTG93ZXJNYWNyb3Mu
aCIKICNpbmNsdWRlICJCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmgiCiAjaW5jbHVk
ZSAiQjNMb3dlclRvQWlyLmgiCkBAIC04NSw2ICs4Niw4IEBAIHZvaWQgZ2VuZXJhdGVUb0FpcihQ
cm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgb3B0TGV2ZWwpCiAKICAgICBsb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucyhwcm9jZWR1cmUpOwogCisgICAgbGVnYWxpemVNZW1vcnlPZmZz
ZXRzKHByb2NlZHVyZSk7CisKICAgICBtb3ZlQ29uc3RhbnRzKHByb2NlZHVyZSk7CiAKICAgICBp
ZiAoc2hvdWxkVmFsaWRhdGVJUigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTc3OGZmYjY0NGQ0MjUw
MThlOTI2YTc1YWZmMjE0ZmUxOTM2Mzg5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAKQEAgLTAsMCArMSw5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIgorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkFpckFyZy5oIgorI2luY2x1ZGUgIkIzSW5zZXJ0
aW9uU2V0SW5saW5lcy5oIgorI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUuaCIKKyNpbmNsdWRlICJC
M1BoYXNlU2NvcGUuaCIKKyNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExlZ2FsaXpl
TWVtb3J5T2Zmc2V0cyB7CitwdWJsaWM6CisgICAgTGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2Nl
ZHVyZSYgcHJvYykKKyAgICAgICAgOiBtX3Byb2MocHJvYykKKyAgICAgICAgLCBtX2luc2VydGlv
blNldChwcm9jKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAg
ICBpZiAoIWlzQVJNNjQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeVZhbHVlID0gYmxvY2stPmF0KGluZGV4KS0+YXM8TWVtb3J5
VmFsdWU+KCk7CisgICAgICAgICAgICAgICAgaWYgKCFtZW1vcnlWYWx1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpbnQzMl90IG9mZnNldCA9IG1l
bW9yeVZhbHVlLT5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBBaXI6OkFyZzo6V2lkdGggd2lk
dGggPSBBaXI6OkFyZzo6d2lkdGhGb3JCeXRlcyhtZW1vcnlWYWx1ZS0+YWNjZXNzQnl0ZVNpemUo
KSk7CisgICAgICAgICAgICAgICAgaWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNl
dCwgd2lkdGgpKSB7CisgICAgICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlID0gbWVtb3J5VmFs
dWUtPmxhc3RDaGlsZCgpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUg
PSBtX2luc2VydGlvblNldC5pbnNlcnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9y
aWdpbigpLCBwb2ludGVyVHlwZSgpLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBWYWx1
ZSogcmVzb2x2ZWRBZGRyZXNzID0gbV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+
b3JpZ2luKCksIGJhc2UsIG9mZnNldFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0VmFsdWUoaW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpID0gcmVzb2x2ZWRBZGRyZXNzOwor
ICAgICAgICAgICAgICAgICAgICBtZW1vcnlWYWx1ZS0+c2V0T2Zmc2V0KDApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOworICAgICAgICB9CisgICAgfQorCisgICAgUHJvY2VkdXJlJiBtX3Byb2M7Cisg
ICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKK3ZvaWQgbGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2NlZHVyZSYgcHJvYykKK3sK
KyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUocHJvYywgImxlZ2FsaXplTWVtb3J5T2Zmc2V0cyIp
OworICAgIExlZ2FsaXplTWVtb3J5T2Zmc2V0cyBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJvYyk7
CisgICAgbGVnYWxpemVNZW1vcnlPZmZzZXRzLnJ1bigpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6QjMKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ0
NDBjNmYxNjkwMjY5YjdiZGIxZGE4NWJjNjAyMjViM2NlOGQ2YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzX2gKKyNkZWZpbmUgQjNMZWdhbGl6ZU1l
bW9yeU9mZnNldHNfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CisKK2NsYXNzIFByb2NlZHVyZTsKKworLy8gSWYgdGhlIG9mZnNldHMgb2Yg
YSBNZW1vcnlWYWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHRhcmdldCBpbnN0cnVj
dGlvbiBzZXQsCisvLyBjb21wdXRlIGl0IGV4cGxpY2l0bHkuCit2b2lkIGxlZ2FsaXplTWVtb3J5
T2Zmc2V0cyhQcm9jZWR1cmUmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHNf
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGNlZTRj
NGZkMWFhMzI0Nzk4MjA2Y2EyNGVkZGFkYzk4ODkzOWVmNzEuLjdiNjVjYTM0NzA1ZmU2ZTEwMmNh
NGRlNjJmZjQzNzY2ZTRlZGVjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCkBAIC0zNTcsMTAgKzM1Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyB0dXJu
cyB0aGUgZ2l2ZW4gb3BlcmFuZCBpbnRvIGFuIGFkZHJlc3MuCiAgICAgQXJnIGVmZmVjdGl2ZUFk
ZHIoVmFsdWUqIGFkZHJlc3MsIGludDMyX3Qgb2Zmc2V0LCBBcmc6OldpZHRoIHdpZHRoKQogICAg
IHsKLSAgICAgICAgLy8gQjMgYWxsb3dzIGFueSBtZW1vcnkgb3BlcmF0aW9uIHRvIGhhdmUgYSAz
Mi1iaXQgb2Zmc2V0LiBUaGF0J3Mgbm90IGhvdyBzb21lIGFyY2hpdGVjdHVyZXMKLSAgICAgICAg
Ly8gd29yay4gV2Ugc29sdmUgdGhpcyBieSByZXF1aXJpbmcgYSBqdXN0LWJlZm9yZS1sb3dlcmlu
ZyBwaGFzZSB0aGF0IGxlZ2FsaXplcyBvZmZzZXRzLgotICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHN1Y2ggYSBsZWdhbGl6YXRpb24gcGhhc2UuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI1MzAKICAgICAgICAgQVNTRVJUKEFyZzo6aXNW
YWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKTsKIAogICAgICAgICBhdXRvIGZhbGxiYWNrID0g
WyZdICgpIC0+IEFyZyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IDI2Zjhh
NzY1ODQ2OWI5MTUyMDliZDdiYjVlYjk0MGViMjVlMTlhM2QuLjE3NjY4OTQ2ZTU2NGE2MzdiZTNl
MDRjZGQwZDM1NzI5OGFhOGY1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBA
IC0xMzYsNiArMTM2LDc3IEBAIHZvaWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ+KHByb2MpID09IDQyKTsKIH0KIAordm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBs
KGludDMyX3Qgb2Zmc2V0NjQsIGludDMyX3Qgb2Zmc2V0MzIpCit7CisgICAgeworICAgICAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgaW50NjRfdCB4ID0gLTQyOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3Jp
Z2luKCksCisgICAgICAgICAgICAgICAgYmFzZSwKKyAgICAgICAgICAgICAgICBvZmZzZXQ2NCkp
OworCisgICAgICAgIGNoYXIqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigmeCkg
LSBvZmZzZXQ2NDsKKyAgICAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBh
ZGRyZXNzKSA9PSAtNDIpOworICAgIH0KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBpbnQz
Ml90IHggPSAtNDI7CisgICAgICAgIFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICBiYXNlLAorICAgICAgICAgICAgICAgIG9mZnNldDMyKSk7CisKKyAgICAgICAgY2hh
ciogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDMyOworICAg
ICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7
CisgICAgfQorfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpCit7CisgICAgdGVzdExv
YWRXaXRoT2Zmc2V0SW1wbCgyNTUsIDI1NSk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05
TWF4UGx1c09uZSgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTYsIDI1Nik7Cit9
CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpCit7CisgICAgdGVzdExvYWRX
aXRoT2Zmc2V0SW1wbCgyNTcsIDI1Nyk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWlu
KCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTYsIC0yNTYpOworfQorCit2b2lk
IHRlc3RMb2FkT2Zmc2V0SW1tOU1pbk1pbnVzT25lKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZz
ZXRJbXBsKC0yNTcsIC0yNTcpOworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWdu
ZWRJbW0xMk1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2MCwgMTYzODAp
OworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKQor
eworICAgIHRlc3RMb2FkV2l0aE9mZnNldEltcGwoMzI3NjAsIDMyNzYwKTsKKyAgICB0ZXN0TG9h
ZFdpdGhPZmZzZXRJbXBsKDMyNzYxLCAxNjM4MSk7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1w
bCgzMjc2OCwgMTYzODQpOworfQorCiB2b2lkIHRlc3RBcmcoaW50IGFyZ3VtZW50KQogewogICAg
IFByb2NlZHVyZSBwcm9jOwpAQCAtOTI4OCw2ICs5MzU5LDEzIEBAIHZvaWQgcnVuKGNvbnN0IGNo
YXIqIGZpbHRlcikKIAogICAgIFJVTih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7
CisgICAgUlVOKHRlc3RMb2FkT2Zmc2V0SW1tOU1heCgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZz
ZXRJbW05TWF4UGx1c09uZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3
bygpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWluKCkpOworICAgIFJVTih0ZXN0TG9h
ZE9mZnNldEltbTlNaW5NaW51c09uZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRTY2FsZWRV
bnNpZ25lZEltbTEyTWF4KCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVk
T3ZlckltbTEyTWF4KCkpOwogICAgIFJVTih0ZXN0QXJnKDQzKSk7CiAgICAgUlVOKHRlc3RSZXR1
cm5Db25zdDY0KDUpKTsKICAgICBSVU4odGVzdFJldHVybkNvbnN0NjQoLTQyKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269111</attachid>
            <date>2016-01-15 15:40:37 -0800</date>
            <delta_ts>2016-01-15 16:37:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-153065-20160115154007.patch</filename>
            <type>text/plain</type>
            <size>16957</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OTBhMTUzYmQ0NTRiNDgwMWFiODViYjQ1OTU0NzIzY2Q1MzBlOTBhLi44NjE3ZDczNjIzZDI0Mjky
OWY5MzE2Y2ZkYmI0OWI5NjBiNTQzN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAxNi0wMS0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBMZWdhbGl6ZSBNZW1vcnkgT2Zmc2V0cyBmb3IgQVJNNjQg
YmVmb3JlIGxvd2VyaW5nIHRvIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzMDY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisg
ICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIE9uIEFSTTY0LCB3ZSBj
YW5ub3QgdXNlIHNpZ25lZCAzMmJpdHMgb2Zmc2V0IGZvciBtZW1vcnkgYWRkcmVzc2luZy4KKyAg
ICAgICAgVGhlcmUgYXJlIHR3byBhdmFpbGFibGUgYWRkcmVzc2luZzogc2lnbmVkIDliaXRzIGFu
ZCB1bnNpZ25lZCBzY2FsZWQgMTJiaXRzLgorICAgICAgICBBaXIgYWxyZWFkeSBrbm93cyBhYm91
dCBpdC4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB0aGUgb2Zmc2V0cyBhcmUgY2hhbmdlZCB0
byBzb21ldGhpbmcgdmFsaWQgZm9yIEFSTTY0CisgICAgICAgIHByaW9yIHRvIGxvd2VyaW5nLiBX
aGVuIGFuIG9mZnNldCBpcyBpbnZhbGlkLCBpdCBpcyBqdXN0IGNvbXB1dGVkCisgICAgICAgIGJl
Zm9yZSB0aGUgaW5zdHJ1Y3Rpb24gYW5kIHVzZWQgYXMgdGhlIGJhc2UgZm9yIGFkZHJlc3Npbmcu
CisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGIzL0IzR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Z2VuZXJhdGVU
b0Fpcik6CisgICAgICAgICogYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6QjM6OmxlZ2FsaXplTWVtb3J5T2Zmc2V0cyk6CisgICAgICAgICogYjMv
QjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaDogQWRkZWQuCisgICAgICAgICogYjMvQjNMb3dlclRv
QWlyLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6ZWZmZWN0aXZlQWRk
cik6IERlbGV0ZWQuCisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RMb2FkV2l0aE9mZnNldEltcGwpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZz
ZXRJbW05TWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RMb2FkT2Zmc2V0SW1tOU1heFBsdXNP
bmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3byk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0TG9hZE9mZnNldEltbTlNaW4pOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdExvYWRPZmZzZXRJbW05TWluTWludXNPbmUpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgpOgorICAgICAgICAoSlNDOjpC
Mzo6cnVuKToKKwogMjAxNi0wMS0xNSAgUGVyIEFybmUgVm9sbGFuICA8cGVhdm9Ab3V0bG9vay5j
b20+CiAKICAgICAgICAgW0IzXVtXaW42NF0gQ29tcGlsZSBmaXhlcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjcxODc1YWZlNGQ5NTkxNDNlN2YyODRjYjRjMTBkOGE3OTc5ZjMx
ZS4uYTkzYTZhYTFjYWE5YTgyNTRjZDE2YzQ1YWIyM2RhYWZjOTAzZjRhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExNjgsNiArMTE2OCw4IEBACiAJCTQzNDIyQTYzMUMxNThF
NkQwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM0MjJBNjExQzE1ODcxQjAwRTJFQjk4IC8qIEIzQ29u
c3RGbG9hdFZhbHVlLmggKi87IH07CiAJCTQzNDIyQTY2MUMxNjI2NzUwMEUyRUI5OCAvKiBCM1Jl
ZHVjZURvdWJsZVRvRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDM0MjJBNjQxQzE2MjIxRTAwRTJFQjk4IC8qIEIzUmVkdWNlRG91YmxlVG9G
bG9hdC5jcHAgKi87IH07CiAJCTQzNDIyQTY3MUMxNjI2NzgwMEUyRUI5OCAvKiBCM1JlZHVjZURv
dWJsZVRvRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzNDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCAq
LzsgfTsKKwkJNDM2RTU0NTMxQzQ2OEU3NDAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZz
ZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzZF
NTQ1MjFDNDY4RTVGMDBCNUFGNzMgLyogQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCAqLzsgfTsK
KwkJNDM2RTU0NTQxQzQ2OEU3NzAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNkU1NDUx
MUM0NjhFNUYwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAgKi87IH07CiAJ
CTQzQUIyNkM2MUMxQTUzNTkwMEQ4MkFFNiAvKiBCM01hdGhFeHRyYXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQUIyNkM1MUMxQTUyRjcwMEQ4MkFF
NiAvKiBCM01hdGhFeHRyYXMuaCAqLzsgfTsKIAkJNDNBQjI2QzcxQzFBNTM1QzAwRDgyQUU2IC8q
IEIzTWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0M0FCMjZDNDFDMUE1MkY3MDBEODJBRTYgLyogQjNNYXRoRXh0cmFzLmNwcCAqLzsg
fTsKIAkJNDNDMzkyQUIxQzNCRUIwNTAwMjQxRjUzIC8qIEFzc2VtYmxlckNvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMzkyQUExQzNCRUIw
MDAwMjQxRjUzIC8qIEFzc2VtYmxlckNvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMjk3LDYgKzMyOTksOCBAQAogCQk0MzQyMkE2MTFD
MTU4NzFCMDBFMkVCOTggLyogQjNDb25zdEZsb2F0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQjNDb25zdEZsb2F0VmFsdWUuaDsgcGF0aCA9IGIzL0IzQ29uc3RGbG9h
dFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNDIyQTY0MUMxNjIyMUUw
MEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDsgcGF0aCA9IGIzL0Iz
UmVkdWNlRG91YmxlVG9GbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
NDIyQTY1MUMxNjIyMUUwMEUyRUI5OCAvKiBCM1JlZHVjZURvdWJsZVRvRmxvYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNSZWR1Y2VEb3VibGVUb0Zsb2F0Lmg7IHBhdGgg
PSBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDM2RTU0NTExQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTGVnYWxpemVNZW1vcnlP
ZmZzZXRzLmNwcDsgcGF0aCA9IGIzL0IzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM2RTU0NTIxQzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVn
YWxpemVNZW1vcnlPZmZzZXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIz
TGVnYWxpemVNZW1vcnlPZmZzZXRzLmg7IHBhdGggPSBiMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0FCMjZDNDFDMUE1MkY3MDBEODJB
RTYgLyogQjNNYXRoRXh0cmFzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEIzTWF0aEV4dHJhcy5jcHA7IHBhdGggPSBiMy9CM01hdGhFeHRyYXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0M0FCMjZDNTFDMUE1MkY3MDBEODJBRTYgLyogQjNNYXRo
RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTWF0aEV4dHJhcy5o
OyBwYXRoID0gYjMvQjNNYXRoRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzQzM5MkFBMUMzQkVCMDAwMDI0MUY1MyAvKiBBc3NlbWJsZXJDb21tb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZW1ibGVyQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00NzU4LDYgKzQ3NjIsOCBAQAogCQkJCTBGRUM4NUI0MUJFMTQ2MkYw
MDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5jcHAgKi8sCiAJCQkJMEZFQzg1QjUxQkUxNDYyRjAw
ODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggKi8sCiAJCQkJMEZFQzg1QjYxQkUxNDYyRjAwODBG
Rjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oICovLAorCQkJCTQzNkU1NDUxMUM0NjhFNUYw
MEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAgKi8sCisJCQkJNDM2RTU0NTIx
QzQ2OEU1RjAwQjVBRjczIC8qIEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmggKi8sCiAJCQkJMEYz
MzhFMTkxQkYyODZFQTAwMTNDODhGIC8qIEIzTG93ZXJNYWNyb3MuY3BwICovLAogCQkJCTBGMzM4
RTFBMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmggKi8sCiAJCQkJNDMxOURBMDEx
QzFCRTNDMTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwICov
LApAQCAtODAwNiw2ICs4MDEyLDcgQEAKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyog
U3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUFBMzEyMThCRDQ5RDEw
MDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQzNkU1NDUz
MUM0NjhFNzQwMEI1QUY3MyAvKiBCM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRDJDOTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZFMThBNDE2QkFFQzQwMDBBRjMwNjEgLyog
U3RydWN0dXJlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtODcwOCw2ICs4NzE1LDcgQEAK
IAkJCQkwRkVDODUwOTFCREFDREFDMDA4MEZGNzQgLyogQjNDb21tb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZFQzg1MEIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzQ29tbXV0YXRpdml0eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUwRDFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdDMy
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDM2RTU0NTQxQzQ2OEU3NzAwQjVBRjczIC8q
IEIzTGVnYWxpemVNZW1vcnlPZmZzZXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTBG
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnN0NjRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkVDODUxMTFCREFDREFDMDA4MEZGNzQgLyogQjNDb25zdERvdWJsZVZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUM4NTEzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0NvbnRyb2xWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0dlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cAppbmRleCAwODZkNTY1NTQ5MGI4YzJkNmVmYjVhYThmMTZiMDUzMzk0OWIwMmJmLi5kNjkxZDEw
YTM0OGY4NDM5M2ZmNDJkZTBhYWYzNWNjZmU0MjY5ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzR2VuZXJhdGUuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQWlyR2VuZXJh
dGUuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgi
CisjaW5jbHVkZSAiQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCIKICNpbmNsdWRlICJCM0xvd2Vy
TWFjcm9zLmgiCiAjaW5jbHVkZSAiQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5oIgog
I2luY2x1ZGUgIkIzTG93ZXJUb0Fpci5oIgpAQCAtODUsNiArODYsOCBAQCB2b2lkIGdlbmVyYXRl
VG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIG9wdExldmVsKQogCiAgICAgbG93
ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMocHJvY2VkdXJlKTsKIAorICAgIGxlZ2FsaXplTWVt
b3J5T2Zmc2V0cyhwcm9jZWR1cmUpOworCiAgICAgbW92ZUNvbnN0YW50cyhwcm9jZWR1cmUpOwog
CiAgICAgaWYgKHNob3VsZFZhbGlkYXRlSVIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMTdmZjU4
ZWExOWUxODIyYTNkMDg0ZmU0MjA2Yjc0MjEwMmIyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuY3BwCkBAIC0wLDAg
KzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHMuaCIK
KworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJBcmcuaCIKKyNpbmNsdWRlICJC
M0luc2VydGlvblNldElubGluZXMuaCIKKyNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCisjaW5j
bHVkZSAiQjNQaGFzZVNjb3BlLmgiCisjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIExlZ2FsaXplTWVtb3J5T2Zmc2V0cyB7CitwdWJs
aWM6CisgICAgTGVnYWxpemVNZW1vcnlPZmZzZXRzKFByb2NlZHVyZSYgcHJvYykKKyAgICAgICAg
OiBtX3Byb2MocHJvYykKKyAgICAgICAgLCBtX2luc2VydGlvblNldChwcm9jKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICBpZiAoIWlzQVJNNjQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9w
cm9jKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBibG9j
ay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eVZhbHVlID0gYmxvY2stPmF0KGluZGV4KS0+YXM8TWVtb3J5VmFsdWU+KCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFtZW1vcnlWYWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgICAgICBpbnQzMl90IG9mZnNldCA9IG1lbW9yeVZhbHVlLT5vZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICBBaXI6OkFyZzo6V2lkdGggd2lkdGggPSBBaXI6OkFyZzo6d2lkdGhG
b3JCeXRlcyhtZW1vcnlWYWx1ZS0+YWNjZXNzQnl0ZVNpemUoKSk7CisgICAgICAgICAgICAgICAg
aWYgKCFBaXI6OkFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwgd2lkdGgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIFZhbHVlKiBiYXNlID0gbWVtb3J5VmFsdWUtPmxhc3RDaGlsZCgpOworICAg
ICAgICAgICAgICAgICAgICBWYWx1ZSogb2Zmc2V0VmFsdWUgPSBtX2luc2VydGlvblNldC5pbnNl
cnRJbnRDb25zdGFudChpbmRleCwgbWVtb3J5VmFsdWUtPm9yaWdpbigpLCBwb2ludGVyVHlwZSgp
LCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBWYWx1ZSogcmVzb2x2ZWRBZGRyZXNzID0g
bV9wcm9jLmFkZDxWYWx1ZT4oQWRkLCBtZW1vcnlWYWx1ZS0+b3JpZ2luKCksIGJhc2UsIG9mZnNl
dFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0VmFsdWUo
aW5kZXgsIHJlc29sdmVkQWRkcmVzcyk7CisKKyAgICAgICAgICAgICAgICAgICAgbWVtb3J5VmFs
dWUtPmxhc3RDaGlsZCgpID0gcmVzb2x2ZWRBZGRyZXNzOworICAgICAgICAgICAgICAgICAgICBt
ZW1vcnlWYWx1ZS0+c2V0T2Zmc2V0KDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgICAgICB9
CisgICAgfQorCisgICAgUHJvY2VkdXJlJiBtX3Byb2M7CisgICAgSW5zZXJ0aW9uU2V0IG1faW5z
ZXJ0aW9uU2V0OworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3ZvaWQgbGVnYWxp
emVNZW1vcnlPZmZzZXRzKFByb2NlZHVyZSYgcHJvYykKK3sKKyAgICBQaGFzZVNjb3BlIHBoYXNl
U2NvcGUocHJvYywgImxlZ2FsaXplTWVtb3J5T2Zmc2V0cyIpOworICAgIExlZ2FsaXplTWVtb3J5
T2Zmc2V0cyBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJvYyk7CisgICAgbGVnYWxpemVNZW1vcnlP
ZmZzZXRzLnJ1bigpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8v
IEVOQUJMRShCM19KSVQpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTGVn
YWxpemVNZW1vcnlPZmZzZXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ0NDBjNmYxNjkwMjY5YjdiZGIxZGE4
NWJjNjAyMjViM2NlOGQ2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xlZ2FsaXplTWVtb3J5T2Zmc2V0cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEIzTGVnYWxpemVN
ZW1vcnlPZmZzZXRzX2gKKyNkZWZpbmUgQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHNfaAorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CisKK2NsYXNz
IFByb2NlZHVyZTsKKworLy8gSWYgdGhlIG9mZnNldHMgb2YgYSBNZW1vcnlWYWx1ZSBjYW5ub3Qg
YmUgcmVwcmVzZW50ZWQgaW4gdGhlIHRhcmdldCBpbnN0cnVjdGlvbiBzZXQsCisvLyBjb21wdXRl
IGl0IGV4cGxpY2l0bHkuCit2b2lkIGxlZ2FsaXplTWVtb3J5T2Zmc2V0cyhQcm9jZWR1cmUmKTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQor
CisjZW5kaWYgLy8gQjNMZWdhbGl6ZU1lbW9yeU9mZnNldHNfaAorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDlhMjk1MGVjYWVmYTk2NjFiMmJkYTE5NjQ4
ZGQ1ZTJiOWY4NTk5MWQuLjBmMWY2ZGE1N2M2MjE2ZGE3MTgxNTY1YmU3YmYxYjM5M2ZjYWJkN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0zNjksMTAg
KzM2OSw2IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyB0dXJucyB0aGUgZ2l2ZW4gb3BlcmFuZCBp
bnRvIGFuIGFkZHJlc3MuCiAgICAgQXJnIGVmZmVjdGl2ZUFkZHIoVmFsdWUqIGFkZHJlc3MsIGlu
dDMyX3Qgb2Zmc2V0LCBBcmc6OldpZHRoIHdpZHRoKQogICAgIHsKLSAgICAgICAgLy8gQjMgYWxs
b3dzIGFueSBtZW1vcnkgb3BlcmF0aW9uIHRvIGhhdmUgYSAzMi1iaXQgb2Zmc2V0LiBUaGF0J3Mg
bm90IGhvdyBzb21lIGFyY2hpdGVjdHVyZXMKLSAgICAgICAgLy8gd29yay4gV2Ugc29sdmUgdGhp
cyBieSByZXF1aXJpbmcgYSBqdXN0LWJlZm9yZS1sb3dlcmluZyBwaGFzZSB0aGF0IGxlZ2FsaXpl
cyBvZmZzZXRzLgotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1Y2ggYSBsZWdhbGl6YXRp
b24gcGhhc2UuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI1MzAKICAgICAgICAgQVNTRVJUKEFyZzo6aXNWYWxpZEFkZHJGb3JtKG9mZnNldCwg
d2lkdGgpKTsKIAogICAgICAgICBhdXRvIGZhbGxiYWNrID0gWyZdICgpIC0+IEFyZyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGY1OTU5OTE0N2M0MGNmMzhlZTllOTZkMjI0
Nzg0NDc2MDg4ZGY0YWMuLjJhODY4NDkyODNiZjhjYTZiYmNlMTk0NTY3OGRhNDdiZTFhNjRlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xMzYsNiArMTM2LDc3IEBAIHZv
aWQgdGVzdExvYWQ0MigpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MpID09IDQy
KTsKIH0KIAordm9pZCB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKGludDMyX3Qgb2Zmc2V0NjQsIGlu
dDMyX3Qgb2Zmc2V0MzIpCit7CisgICAgeworICAgICAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICAgICAgaW50NjRfdCB4
ID0gLTQyOworICAgICAgICBWYWx1ZSogYmFzZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksCisgICAgICAgICAgICAg
ICAgYmFzZSwKKyAgICAgICAgICAgICAgICBvZmZzZXQ2NCkpOworCisgICAgICAgIGNoYXIqIGFk
ZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigmeCkgLSBvZmZzZXQ2NDsKKyAgICAgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhZGRyZXNzKSA9PSAtNDIpOworICAg
IH0KKyAgICB7CisgICAgICAgIFByb2NlZHVyZSBwcm9jOworICAgICAgICBCYXNpY0Jsb2NrKiBy
b290ID0gcHJvYy5hZGRCbG9jaygpOworICAgICAgICBpbnQzMl90IHggPSAtNDI7CisgICAgICAg
IFZhbHVlKiBiYXNlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICAgICAgICAgIHBy
b2MsIExvYWQsIEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICBiYXNlLAorICAgICAg
ICAgICAgICAgIG9mZnNldDMyKSk7CisKKyAgICAgICAgY2hhciogYWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KCZ4KSAtIG9mZnNldDMyOworICAgICAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsIGFkZHJlc3MpID09IC00Mik7CisgICAgfQorfQorCit2b2lkIHRl
c3RMb2FkT2Zmc2V0SW1tOU1heCgpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTUs
IDI1NSk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpCit7CisgICAg
dGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTYsIDI1Nik7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZz
ZXRJbW05TWF4UGx1c1R3bygpCit7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgyNTcsIDI1
Nyk7Cit9CisKK3ZvaWQgdGVzdExvYWRPZmZzZXRJbW05TWluKCkKK3sKKyAgICB0ZXN0TG9hZFdp
dGhPZmZzZXRJbXBsKC0yNTYsIC0yNTYpOworfQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0SW1tOU1p
bk1pbnVzT25lKCkKK3sKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKC0yNTcsIC0yNTcpOwor
fQorCit2b2lkIHRlc3RMb2FkT2Zmc2V0U2NhbGVkVW5zaWduZWRJbW0xMk1heCgpCit7CisgICAg
dGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2MCwgMTYzODApOworfQorCit2b2lkIHRlc3RMb2Fk
T2Zmc2V0U2NhbGVkVW5zaWduZWRPdmVySW1tMTJNYXgoKQoreworICAgIHRlc3RMb2FkV2l0aE9m
ZnNldEltcGwoMzI3NjAsIDMyNzYwKTsKKyAgICB0ZXN0TG9hZFdpdGhPZmZzZXRJbXBsKDMyNzYx
LCAxNjM4MSk7CisgICAgdGVzdExvYWRXaXRoT2Zmc2V0SW1wbCgzMjc2OCwgMTYzODQpOworfQor
CiB2b2lkIHRlc3RBcmcoaW50IGFyZ3VtZW50KQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
OTM0Nyw2ICs5NDE4LDEzIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKIAogICAgIFJV
Tih0ZXN0NDIoKSk7CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7CisgICAgUlVOKHRlc3RMb2FkT2Zm
c2V0SW1tOU1heCgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c09uZSgpKTsK
KyAgICBSVU4odGVzdExvYWRPZmZzZXRJbW05TWF4UGx1c1R3bygpKTsKKyAgICBSVU4odGVzdExv
YWRPZmZzZXRJbW05TWluKCkpOworICAgIFJVTih0ZXN0TG9hZE9mZnNldEltbTlNaW5NaW51c09u
ZSgpKTsKKyAgICBSVU4odGVzdExvYWRPZmZzZXRTY2FsZWRVbnNpZ25lZEltbTEyTWF4KCkpOwor
ICAgIFJVTih0ZXN0TG9hZE9mZnNldFNjYWxlZFVuc2lnbmVkT3ZlckltbTEyTWF4KCkpOwogICAg
IFJVTih0ZXN0QXJnKDQzKSk7CiAgICAgUlVOKHRlc3RSZXR1cm5Db25zdDY0KDUpKTsKICAgICBS
VU4odGVzdFJldHVybkNvbnN0NjQoLTQyKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>